I have created an ingress controller using Helm with default configuration
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
using Helm:
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"
this ingress is running in the default namespace.
Now, I wanted to add a second ingress controller, from the official doc I have specific 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"
but I keep getting this error:
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"
What could be wrong here ?
Any help is appreciated 🙂
3
Answers
you can try, what we are changing is name : nginx-ingress-devices instead of nginx-ingress
error you are getting is due to already there is cluster role with same name : nginx-ingress due to that you are getting the error.
You can get the reference file here : https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/clusterrole.yaml
For my case the issue was with ingressclass existed already. I have simply deleted the ingresclass and it worked like a charm.
This will return the name of already existing ingressclass. For my case, it was nginx. Delete that ingressclass.
Verify that ingressclass is deleted
Rerun the helm update command should work.
You can also run multiple ingrss controller in parallel with new ingressClassName & ingressClassResourceName. First of all get list of all existing class name.
Create a new ingress controller with unique className with this command.
With recent releases "controller.ingressClassResource.name" needs to get a different name when trying to deploy a second ingress.