Ingress在k8s中的应用
Ingress是k8s平台的应用路由,是从 kuberenets 集群外网访问集群的一个入口,而service是将集群外部请求转发到集群内部(一个service可以对应多个pod,service将pod外部请求转发到pod应用内部),Ingress相当于普通应用服务中的网关\nginx。通常在Ingress的yaml文件中通过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,服务完美兼容旧客户端请求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix