Ingress在k8s中的应用

        Ingressk8s平台的应用路由,是从 kuberenets 集群外网访问集群的一个入口service是将集群外部请求转发到集群内部(一个service可以对应多个podservicepod外部请求转发到pod应用内部),Ingress相当于普通应用服务中的网关\nginx。通常在Ingressyaml文件中通过annotations节点配置nginx的基础设置,如: kubernetes.io/ingress.class: nginx

1、通常路径转发设置

    在yaml文件的spec节点配置rules路由转发规则,host是设置外部访问域名,paths可设置具体的访问规则。 如图所示,服务具体的访问路径是http://community-service-ext.public-project.svc.cluster.local:19000/interface/view,外部访问路径是https://api.***.**/api/content_public/interface/view,path路径上需要加(.*),并且需要通过nginx.ingress.kubernetes.io/rewrite-target: /$2 进行路径替换,(.*)之前的请求的路径(https://api.***.**/api/content_public/)都会被http://community-service-ext.public-project.svc.cluster.local:19000/代替,最终将请求打入集群内部。

 

2、路径替换转发设置

    在实际请求过程中,需要将请求路径根据规则替换成新路径,则需要通过设置annotations节点配置 nginx.ingress.kubernetes.io/use-regex: 'true',配置nginx.ingress.kubernetes.io/server-snippet进行规则转发,当请求的paths适配的路径在nginx.ingress.kubernetes.io/server-snippet中匹配时则会替换重新转发。如图所示,需要将请求中的content路径转成community路径(因服务接口路径将原content路径改成了community,为了兼容旧服务请求需设置转发),在rewrite进行替换,注意参数为$1,获取请求的具体接口参数,同时需将/api/content_public/content/(.*)路径设置在第一条,优先匹配。真实后端服务接口存在/community/**,不存在/content/**,这样设置后/content/interface/view最终被转换成/community/interface/view,服务完美兼容旧客户端请求。

 

 

posted @   丝絮  阅读(444)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示