如何通过AGIC为同一主机名配置8083/8084端口独立后端池规则
问题描述
使用Azure Gateway Ingress Controller(AGIC)时,尝试为同一主机名prisma.example.com的8083和8084端口创建两个独立的后端池规则,但当前配置仅8084端口的规则能成功创建;若修改其中一个规则的主机名(如改为prisma.example.coms),则两个端口的规则均可正常生效。
原Ingress配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: azure/application-gateway appgw.ingress.kubernetes.io/use-private-ip: "true" appgw.ingress.kubernetes.io/backend-path-prefix: "/" name: prismaexample namespace: prismaexample spec: rules: - host: prisma.example.com http: paths: - path: / pathType: Prefix backend: service: name: twistlock-console-example port: number: 8083 - host: prisma.example.com http: paths: - path: / pathType: Prefix backend: service: name: twistlock-console-example port: number: 8084
解决方案
问题根源在于配置结构:AGIC会合并同一主机名的多个独立rule条目,后一个规则的path会覆盖前一个,最终仅保留最后一个端口的规则。
正确的配置方式是将同一主机名下的两个端口规则合并到同一个host规则下,通过多个paths条目分别对应不同的后端服务端口。AGIC会为每个path创建独立的后端池规则,实现同一主机名下多端口的路由需求。
修正后的Ingress配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: azure/application-gateway appgw.ingress.kubernetes.io/use-private-ip: "true" appgw.ingress.kubernetes.io/backend-path-prefix: "/" name: prismaexample namespace: prismaexample spec: rules: - host: prisma.example.com http: paths: # 对应8083端口的后端服务 - path: / pathType: Prefix backend: service: name: twistlock-console-example port: number: 8083 # 对应8084端口的后端服务 - path: / pathType: Prefix backend: service: name: twistlock-console-example port: number: 8084
说明:当两个路径均为
/且pathType为Prefix时,AGIC会通过后端服务的端口区分不同规则,确保两个后端池规则都能正常生效。
内容的提问来源于stack exchange,提问作者Mike Shasaco
相关产品推荐
相关产品推荐

