通过 helm 创建另一个 ingress-nginx/ingress-nginx 时出现问题“错误:渲染的清单包含已存在的资源”

mit*_*dtn 8 google-kubernetes-engine kubernetes-helm kubernetes-ingress nginx-ingress

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

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"
Run Code Online (Sandbox Code Playgroud)

我正在使用 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"
Run Code Online (Sandbox Code Playgroud)

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

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

mit*_*dtn 11

在 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:
  ...
Run Code Online (Sandbox Code Playgroud)

看起来像:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: some-ingress
  namespace: somenamespace
  annotations:
    ...
spec:
  ingressClassName: <somename>
  tls:
  ...
Run Code Online (Sandbox Code Playgroud)


小智 6

如果存在同名的现有入口类资源,例如:- nginx。然后删除该资源,如下所示。

搜索入口类

kubectl get ingressClasses
Run Code Online (Sandbox Code Playgroud)

删除nginx ingressClass

kubectl delete ingressClasses nginx
Run Code Online (Sandbox Code Playgroud)