Installing Multiple Nginx Ingress Controllers
Overview
If you need to deploy multiple Nginx Ingress Controllers, i.e., different Ingress rules may use different traffic entry points:

You can deploy multiple Nginx Ingress Controllers for the cluster, with different Ingress resources specifying different ingressClassName to achieve this.
This article describes the configuration method for installing multiple Nginx Ingress Controllers.
Configuration Method
If you want to install multiple Nginx Ingress Controllers, you need to specify ingressClass in values.yaml (note to avoid conflicts):
controller:
ingressClass: prod
ingressClassResource:
name: prod
controllerValue: k8s.io/ingress-prod
All three fields need to be changed together.
Additionally, the release names for multiple instances cannot be the same as already installed ones, even if the namespaces are different, release names cannot be the same (to avoid ClusterRole conflicts). Example:
helm upgrade --install prod ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace \
-f values.yaml
When creating Ingress resources, also specify the corresponding ingressClassName:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
spec:
ingressClassName: prod
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80