无法在 Azure k8s 集群中使用带有自定义 class 的 helm 创建第二个入口控制器
cant create a second ingress controller using helm with custom class in Azure k8s cluster
我已经使用默认配置的 Helm 创建了一个入口控制器
default nginx-ingress-controller LoadBalancer 10.0.182.128 xx.xxx.xx.90 80:32485/TCP,443:31756/TCP 62m
default nginx-ingress-default-backend ClusterIP 10.0.12.39 <none> 80/TCP 62m
使用头盔:
helm install nginx-ingress stable/nginx-ingress \
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="Created static IP" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="XXX-aks-ingress"
此入口在默认命名空间中 运行。
现在,我想添加第二个入口控制器,从官方文档我有特定的入口 class
helm install nginx-ingress stable/nginx-ingress \
--namespace ingress-nginx-devices \ #I create this namespace first
--set controller.ingressClass="nginx-devices" \ # custom class to use for different ingress resources
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="A second static Ip address created before" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"
但我一直收到此错误:
Error: rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole "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 "ingress-nginx-devices": current value is "default"
这里有什么问题吗?
感谢您的帮助:)
你可以试试,我们正在改变的是名称: nginx-ingress-devices 而不是 nginx-ingress
helm install nginx-ingress-devices stable/nginx-ingress \
--namespace ingress-nginx-devices \ #I create this namespace first
--set controller.ingressClass="nginx-devices" \ # custom class to use for different ingress resources
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="A second static Ip address created before" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"
你得到的错误是因为已经有同名的集群角色:nginx-ingress 因为你得到了错误。
ClusterRoleBindings grant a user, group, or service account a
ClusterRole’s power across the entire cluster.
您可以在此处获取参考文件:https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/clusterrole.yaml
就我而言,入口类的问题已经存在。我只是简单地删除了 ingresclass,它就像一个魅力。
# kubectl get ingressclass --all-namespaces
这将 return 已经存在的入口类的名称。就我而言,它是 nginx。删除那个入口类。
# kubectl delete ingressclass nginx --all-namespaces
确认入口类已删除
# kubectl get ingressclass --all-namespaces
No resources found
重新运行 helm update 命令应该可以工作。
我已经使用默认配置的 Helm 创建了一个入口控制器
default nginx-ingress-controller LoadBalancer 10.0.182.128 xx.xxx.xx.90 80:32485/TCP,443:31756/TCP 62m
default nginx-ingress-default-backend ClusterIP 10.0.12.39 <none> 80/TCP 62m
使用头盔:
helm install nginx-ingress stable/nginx-ingress \
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="Created static IP" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="XXX-aks-ingress"
此入口在默认命名空间中 运行。
现在,我想添加第二个入口控制器,从官方文档我有特定的入口 class
helm install nginx-ingress stable/nginx-ingress \
--namespace ingress-nginx-devices \ #I create this namespace first
--set controller.ingressClass="nginx-devices" \ # custom class to use for different ingress resources
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="A second static Ip address created before" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"
但我一直收到此错误:
Error: rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole "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 "ingress-nginx-devices": current value is "default"
这里有什么问题吗? 感谢您的帮助:)
你可以试试,我们正在改变的是名称: nginx-ingress-devices 而不是 nginx-ingress
helm install nginx-ingress-devices stable/nginx-ingress \
--namespace ingress-nginx-devices \ #I create this namespace first
--set controller.ingressClass="nginx-devices" \ # custom class to use for different ingress resources
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="A second static Ip address created before" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"
你得到的错误是因为已经有同名的集群角色:nginx-ingress 因为你得到了错误。
ClusterRoleBindings grant a user, group, or service account a ClusterRole’s power across the entire cluster.
您可以在此处获取参考文件:https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/clusterrole.yaml
就我而言,入口类的问题已经存在。我只是简单地删除了 ingresclass,它就像一个魅力。
# kubectl get ingressclass --all-namespaces
这将 return 已经存在的入口类的名称。就我而言,它是 nginx。删除那个入口类。
# kubectl delete ingressclass nginx --all-namespaces
确认入口类已删除
# kubectl get ingressclass --all-namespaces
No resources found
重新运行 helm update 命令应该可以工作。