首页 > 解决方案 > 通过 helm 创建另一个 ingress-nginx/ingress-nginx 时出现问题“错误:呈现的清单包含已经存在的资源”

问题描述

当我尝试按照它的要求进行操作时,我不断收到此错误或变化:

Error: rendered manifests contain a resource that already exists. Unable to continue with install: IngressClass "nginx" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-name" must equal "new-ingress-nginx": current value is "old-ingress-nginx"

我正在使用 helm 安装:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

helm install new-ingress-nginx ingress-nginx/ingress-nginx --set-string controller.podAnnotations."app\.kubernetes\.io/instance"="new"

我已经尝试过使用和不使用 podAnnotations,因为我发现有一篇文章提到尝试这样做。

我正在使用 google kubernetes 引擎,我所做的是将我的所有 api 合并到一个负载均衡器/ingress-nginx 下,但我想找出问题所在。

标签: google-kubernetes-enginekubernetes-helmkubernetes-ingressnginx-ingress

解决方案


在github上阅读此内容后,我能够解决我的问题

进行了一些更改,现在--set controller.ingressClassResource.name=<somename>已使用,yaml 文件不再如下所示:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: some-ingress
  namespace: somenamespace
  annotations:
    kubernetes.io/ingress.class: <somename>
    ...
spec:
  tls:
  ...

看起来像:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: some-ingress
  namespace: somenamespace
  annotations:
    ...
spec:
  ingressClassName: <somename>
  tls:
  ...

推荐阅读