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