You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HELM部署AGIC共享Azure App Gateway时配置被覆盖问题求助

问题分析与解决方案

核心问题

  1. Ingress配置格式错误:你的Ingress规则中,host与http被拆分为两个独立的rules条目,导致AGIC无法正确关联域名与路径规则,进而引发配置覆盖问题。
  2. 共享模式下资源命名冲突:两个集群的AGIC默认使用相同逻辑创建应用网关资源(如后端池、路由规则),即使域名不同,相同路径也会触发覆盖。

具体修复步骤

1. 修正Ingress规则格式

将http嵌套在对应host的规则下,确保每个域名与路径规则正确绑定。

Dev集群修正后的Ingress配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-api
  namespace: default
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/"
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: "wildcard-certificate"
    appgw.ingress.kubernetes.io/ssl-redirect: "true"

spec:
  rules:
  - host: dev-api.example.com
    http:
      paths:      
      - path: /manager/*
        pathType: Prefix
        backend:
          service:
            name: manager-api
            port:
              number: 80

QA集群修正后的Ingress配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-api
  namespace: default
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/"
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: "wildcard-certificate"
    appgw.ingress.kubernetes.io/ssl-redirect: "true"

spec:
  rules:
  - host: test-api.example.com
    http:
      paths:      
      - path: /manager/*
        pathType: Prefix
        backend:
          service:
            name: manager-api
            port:
              number: 80

2. 为每个集群AGIC配置唯一资源前缀

通过Helm部署AGIC时,设置appgw.resourcePrefix参数为每个集群指定独立前缀,避免应用网关资源重名覆盖。

  • Dev集群Helm部署命令示例:
helm upgrade --install ingress-azure ingress-azure/ingress-azure \
  --namespace kube-system \
  --set appgw.shared=true \
  --set appgw.resourcePrefix=dev- \
  --set appgw.appgwName=<你的应用网关名称> \
  --set appgw.resourceGroupName=<你的资源组名称> \
  --set appgw.subscriptionId=<你的订阅ID>
  • QA集群Helm部署命令示例:
helm upgrade --install ingress-azure ingress-azure/ingress-azure \
  --namespace kube-system \
  --set appgw.shared=true \
  --set appgw.resourcePrefix=qa- \
  --set appgw.appgwName=<你的应用网关名称> \
  --set appgw.resourceGroupName=<你的资源组名称> \
  --set appgw.subscriptionId=<你的订阅ID>

3. 配置AzureIngressProhibitedTargets隔离集群配置

在每个集群创建AzureIngressProhibitedTargets资源,阻止AGIC修改对方集群的域名配置。

  • Dev集群配置:
apiVersion: extensions/v1beta1
kind: AzureIngressProhibitedTargets
metadata:
  name: prohibit-qa-host
  namespace: kube-system
spec:
  prohibitedTargets:
  - host: test-api.example.com
  • QA集群配置:
apiVersion: extensions/v1beta1
kind: AzureIngressProhibitedTargets
metadata:
  name: prohibit-dev-host
  namespace: kube-system
spec:
  prohibitedTargets:
  - host: dev-api.example.com

4. 验证配置生效

  1. 重新部署修正后的Ingress资源到对应集群
  2. 检查应用网关的监听器、路由规则和后端池,确认两个集群的资源已独立创建且无覆盖
  3. 分别访问dev-api.example.com/manager/*和test-api.example.com/manager/*,验证服务正常响应

内容的提问来源于stack exchange,提问作者arctech7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:35:18