Azure AKS中Azure应用网关Ingress控制器子域名路由异常求助
问题出在Ingress规则的结构上!
嗨,我一眼就发现问题所在啦!你的Ingress YAML里,rules数组的格式写错了——你把每个域名对应的路由规则拆成了两个独立的列表项,导致Kubernetes和Azure应用网关Ingress控制器解析时出现了混乱。
错误原因分析
你原来的写法中,每个host和对应的http路由配置是分开的两个数组元素:
- 第一个元素只有
host: service1.domain.com,没有任何路由路径配置 - 第二个元素是不带
host的http规则(指向service1),这会被当成默认路由 - 第三个元素只有
host: service2.domain.com,同样没有路由配置 - 第四个元素是另一个不带
host的http规则(指向service2),这个规则会覆盖前面的默认路由
结果就是,不管访问哪个域名,都会匹配到最后那个不带host的默认路由,也就是service2。
修正后的正确配置
把每个域名和对应的路由路径放在同一个-开头的规则对象里:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: kubernetes.io/ingress.class: azure/application-gateway spec: rules: - host: service1.domain.com http: paths: - path: / backend: service: name: service1 port: number: 80 pathType: Prefix - host: service2.domain.com http: paths: - path: / backend: service: name: service2 port: number: 80 pathType: Prefix
后续操作
用这个修正后的配置更新你的Ingress:
kubectl apply -f your-ingress-file.yaml
之后等待几分钟,Azure应用网关Ingress控制器会自动同步配置,这时再访问两个域名就能正确路由到对应的服务啦。
内容的提问来源于stack exchange,提问作者Shubzumt
相关产品推荐
相关产品推荐

