Nginx 无法在Azure k8s群集中使用具有自定义类的helm创建第二个入口控制器

Nginx 无法在Azure k8s群集中使用具有自定义类的helm创建第二个入口控制器,nginx,kubernetes,kubernetes-ingress,azure-aks,nginx-ingress,Nginx,Kubernetes,Kubernetes Ingress,Azure Aks,Nginx Ingress,我已经使用默认配置的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>

我已经使用默认配置的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 \     
--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-ingres-devices而不是nginx-ingres

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 ingres,因为您收到了错误

ClusterRoleBindings授予用户、组或服务帐户 ClusterRole在整个集群中的影响力


您可以在这里获得参考文件:

一句话是,当我创建一个clusterIssuer来获取新入口的TLS证书时,它会覆盖我为第一个控制器提供的TLS证书,有没有办法解决这个问题?我想TLS证书可能会被秘密存储?您可以更改secretYes的名称,但集群发行人没有地方存储它
\k8s/cluster-issuer.yaml apivation:cert-manager.io/v1alpha2种类:集群发行人元数据:#名称:letsencrypt暂存名称:letsencrypt产品设备规范:acme:email:xxx#服务器:https://acme-staging-v02.api.letsencrypt.org/directory     服务器:https://acme-v02.api.letsencrypt.org/directory     privateKeySecretRef:#名称:letsencrypt暂存名称:letsencrypt产品设备解算器:-http01:ingress:class:nginx设备
ingress资源规则使用该秘密
secretName:tls secret
但我不确定它是在哪里创建的,我只使用ClusterIssuer和Ingress规则您可以使用
kubectl get secrets
并检查它,或者使用
kubectl get secrets-n Ingress nginx devices
ClusterIssuer自动创建秘密您可以检查它
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"