GKE 不能再有多个入口 nginx 了吗?
GKE Can't have multiple ingress nginx anymore?
过去我使用以下方式安装它们:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx-01 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 "ingress-nginx-02": current value is
"ingress-nginx-01"; annotation validation error: key
"meta.helm.sh/release-namespace" must equal "ingress-02": current value is "ingress-01"
您必须在重新安装新的 Nginx 入口控制器时设置 Class 名称。
例如:
helm install stable/nginx-ingress --set controller.ingressClass=gce --namespace kube-system --set controller.replicaCount=2 --set rbac.create=false
helm install stable/nginx-ingress --set controller.ingressClass=nginx --namespace kube-system --set controller.replicaCount=2 --set rbac.create=false
helm install stable/nginx-ingress --set controller.ingressClass=third --namespace kube-system --set controller.replicaCount=2 --set rbac.create=false
根据您的 helm 版本,您可以像 ingress-nginx-01
、ingress-nginx-02
一样传递 Helm 的名称,但主要是 class 名称:--set controller.ingressClass=gce
如错误所述
install: IngressClass "nginx" in namespace "" exists**strong text**
多个 Ingress 控制器
如果您是 运行 多个入口控制器或 运行 在本机处理入口的云提供商(例如 GKE 上,您需要指定在您希望 ingress-nginx
控制器声明的所有入口中注释 kubernetes.io/ingress.class: "nginx"
。
例如,
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "gce"
将针对 GCE 控制器,强制 Nginx 控制器忽略它,而像
这样的注解
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx"
将以 nginx 控制器为目标,强制 GCE 控制器忽略它。
示例:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
参考:https://vincentlauzon.com/2018/11/28/understanding-multiple-ingress-in-aks/
过去我使用以下方式安装它们:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx-01 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 "ingress-nginx-02": current value is
"ingress-nginx-01"; annotation validation error: key
"meta.helm.sh/release-namespace" must equal "ingress-02": current value is "ingress-01"
您必须在重新安装新的 Nginx 入口控制器时设置 Class 名称。
例如:
helm install stable/nginx-ingress --set controller.ingressClass=gce --namespace kube-system --set controller.replicaCount=2 --set rbac.create=false
helm install stable/nginx-ingress --set controller.ingressClass=nginx --namespace kube-system --set controller.replicaCount=2 --set rbac.create=false
helm install stable/nginx-ingress --set controller.ingressClass=third --namespace kube-system --set controller.replicaCount=2 --set rbac.create=false
根据您的 helm 版本,您可以像 ingress-nginx-01
、ingress-nginx-02
一样传递 Helm 的名称,但主要是 class 名称:--set controller.ingressClass=gce
如错误所述
install: IngressClass "nginx" in namespace "" exists**strong text**
多个 Ingress 控制器
如果您是 运行 多个入口控制器或 运行 在本机处理入口的云提供商(例如 GKE 上,您需要指定在您希望 ingress-nginx
控制器声明的所有入口中注释 kubernetes.io/ingress.class: "nginx"
。
例如,
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "gce"
将针对 GCE 控制器,强制 Nginx 控制器忽略它,而像
这样的注解metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx"
将以 nginx 控制器为目标,强制 GCE 控制器忽略它。
示例:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
参考:https://vincentlauzon.com/2018/11/28/understanding-multiple-ingress-in-aks/