<p>I have created an ingress controller using Helm with default configuration</p>
<pre><code>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     &lt;none&gt;           80/TCP                       62m
</code></pre>
<p>using Helm:</p>
<pre><code>helm install nginx-ingress stable/nginx-ingress \         
--set controller.replicaCount=2 \     
--set controller.nodeSelector.&quot;beta\.kubernetes\.io/os&quot;=linux \
--set defaultBackend.nodeSelector.&quot;beta\.kubernetes\.io/os&quot;=linux \
--set controller.service.loadBalancerIP=&quot;Created static IP&quot; \
--set controller.service.annotations.&quot;service\.beta\.kubernetes\.io/azure-dns-label-name&quot;=&quot;XXX-aks-ingress&quot;
</code></pre>
<p>this ingress is running in the default namespace.</p>
<p>Now, I wanted to add a second ingress controller, from the official doc I have specific Ingress class</p>
<pre><code>helm install nginx-ingress stable/nginx-ingress \     
--namespace ingress-nginx-devices \ #I create this namespace first 
--set controller.ingressClass=&quot;nginx-devices&quot; \   # custom class to use for different ingress resources  
--set controller.replicaCount=2 \     
--set controller.nodeSelector.&quot;beta\.kubernetes\.io/os&quot;=linux \
--set defaultBackend.nodeSelector.&quot;beta\.kubernetes\.io/os&quot;=linux \
--set controller.service.loadBalancerIP=&quot;A second static Ip address created before&quot; \
--set controller.service.annotations.&quot;service\.beta\.kubernetes\.io/azure-dns-label-name&quot;=&quot;serviceIot-aks-ingress-iot&quot;
</code></pre>
<p>but I keep getting this error:</p>
<pre><code>Error: rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole &quot;nginx-ingress&quot; in namespace &quot;&quot; exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key &quot;meta.helm.sh/release-namespace&quot; must equal &quot;ingress-nginx-devices&quot;: current value is &quot;default&quot;
</code></pre>
<p>What could be wrong here ?
Any help is appreciated :)</p>

<p>For my case the issue was with ingressclass existed already. I have simply deleted the ingresclass and it worked like a charm.</p>
<pre><code># kubectl get ingressclass --all-namespaces
</code></pre>
<p>This will return the name of already existing ingressclass. For my case, it was nginx. Delete that ingressclass.</p>
<pre><code># kubectl delete ingressclass nginx --all-namespaces
</code></pre>
<p>Verify that ingressclass is deleted</p>
<pre><code># kubectl get ingressclass --all-namespaces
No resources found
</code></pre>
<p>Rerun the helm update command should work.</p>
<p>You can also run multiple ingrss controller in parallel with new ingressClassName &amp; ingressClassResourceName. First of all get list of all existing class name.</p>
<pre><code>kubectl get ingressclass --all-namespaces
NAME        CONTROLLER             PARAMETERS   AGE
nginx       k8s.io/ingress-nginx   &lt;none&gt;       203d
</code></pre>
<p>Create a new ingress controller with unique className with this command.</p>
<pre><code>helm install nginx-ingress stable/nginx-ingress \     
--namespace ingress-nginx-devices \ #I create this namespace first 
--set controller.ingressClass=&quot;nginx-devices&quot; \   # custom class to use for different ingress resources 
--set controller.ingressClassResource.name=&quot;nginx-devices&quot; # custom classResourceName   
--set controller.replicaCount=2 \     
--set controller.nodeSelector.&quot;beta\.kubernetes\.io/os&quot;=linux \
--set defaultBackend.nodeSelector.&quot;beta\.kubernetes\.io/os&quot;=linux \
--set controller.service.loadBalancerIP=&quot;A second static Ip address created before&quot; \
--set controller.service.annotations.&quot;service\.beta\.kubernetes\.io/azure-dns-label-name&quot;=&quot;serviceIot-aks-ingress-iot&quot;
</code></pre>
