更新时间:2025-04-25 GMT+08:00
创建或升级模板失败,提示rendered manifests contain a resource that already exists
问题现象
创建或升级模板失败,提示“Create release by helm failed: rendered manifests contain a resource that already exists. Unable to continue with install: ...”的错误。
由于CCE插件通过模板进行安装,因此安装或升级插件时,同样可能出现上述相同错误。
问题原因
该报错内容说明集群中已存在与模板/插件相关的残留资源,通常是由于以下原因导致:
- 模板资源(如 release)从后台被误删或异常删除。
- 模板安装的命名空间被直接删除,导致资源残留。
- 集群中存在与模板组件同名的资源且无helm v3的归属标记“app.kubernetes.io/managed-by: Helm”。
解决方案
通过kubectl对接集群,手动删除相关报错资源,并重新安装模板或插件。
- 查看报错内容,确认产生冲突的资源。请您关注“Unable to continue with install:”后的信息。
例如:
create release failed: create release failed {"error":{"message":"Create release by helm failed:rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole \"cceaddon-nginx-ingress\" in namespace \"\" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key \"meta.helm.sh/release-namespace\" must equal \"kube-system\": current value is \"example\"","code":"SVCSTG.CCECAM.5000208"}}
- 冲突资源:ClusterRole,名称为 cceaddon-nginx-ingress,命名空间为空(ClusterRole 是非命名空间级别资源)。
- 冲突字段:metadata.annotations.meta.helm.sh/release-namespace。
- 预期值:kube-system
- 实际值:example
- 执行以下kubectl命令删除集群中的冲突资源。此处仅为示例,请根据实际报错信息中的资源进行删除。
kubectl delete clusterRole cceaddon-nginx-ingress
- 解决资源冲突后,尝试重新安装模板或插件。若还有冲突提示,请重复以上步骤。