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

Helm升级AGIC至1.5.x报IngressClass资源已存在的解决方法

问题场景

AKS集群关联2个不同的应用程序网关(AGW),通过Helm执行AGIC 1.5.1版本升级验证操作时出现报错,执行的升级命令如下:

helm upgrade agic-ass application-gateway-kubernetes-ingress/ingress-azure --version 1.5.1

返回的错误信息:

Error: UPGRADE FAILED: rendered manifests contain a resource that already exists. Unable to continue with update: IngressClass "azure-application-gateway" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "agic-ass"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "default"

故障原因

报错核心是集群内已存在名为azure-application-gateway的集群级IngressClass资源,该资源没有当前待升级的agic-ass Helm release对应的所有权标签与注解,Helm为避免非管控资源被误覆盖,直接终止了升级流程。
由于集群同时关联2个AGW、部署了多套AGIC实例,默认配置下所有AGIC都会尝试创建同名的azure-application-gateway IngressClass,本身就会出现资源冲突,这也是触发该问题的常见场景。

修复方案

根据实际部署场景二选一操作即可:

方案1:双AGIC场景(推荐,适配2个AGW的架构)

多AGIC部署不能共用同一个IngressClass,否则会出现多实例抢Ingress资源配置的异常,需要为每个AGIC配置独立的专属IngressClass:

  • 执行升级命令时,通过--set参数为当前升级的agic-ass实例指定独立的IngressClass名称,例如将其命名为azure-application-gateway-ass,完整升级命令如下:
helm upgrade agic-ass application-gateway-kubernetes-ingress/ingress-azure --version 1.5.1 \
  --set ingressClassResource.name=azure-application-gateway-ass \
  --set ingressClassResource.enabled=true
  • 后续创建Ingress资源时,通过spec.ingressClassName字段指定对应AGIC的专属IngressClass名称,即可将流量规则分发到对应的AGW实例。
  • 对另一套AGIC实例也做相同配置,给它分配另一个独立的IngressClass名称,从根源避免集群级资源冲突。

方案2:单AGIC场景(确认现有IngressClass归属当前release)

如果集群实际只运行一套AGIC,已存在的azure-application-gateway IngressClass就是当前agic-ass release应该管控的资源,只是之前部署时缺失了Helm所有权标记,手动补全对应标签和注解即可:

  1. 为IngressClass添加Helm管控标签:
kubectl label ingressclass azure-application-gateway app.kubernetes.io/managed-by=Helm
  1. 添加Helm release名称注解:
kubectl annotate ingressclass azure-application-gateway meta.helm.sh/release-name=agic-ass
  1. 添加Helm release所在命名空间注解:
kubectl annotate ingressclass azure-application-gateway meta.helm.sh/release-namespace=default

执行完以上操作后,重新运行原始的Helm升级命令即可完成升级。

注意:双AGIC场景禁止使用方案2,否则会导致另一套AGIC失去IngressClass管控权,出现运行异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:57:25