We have a requirement of using ingress-nginx for both external and internal access to workloads running in the cluster.
Depending upon the cluster networking setup ingress-nginx will create a service of type=LoadBalancer which will create either external or internal loadbalancer. In my case I have an EKS cluster with all the public subnet so it will provision a external loadbalancer.
If the cluster has only private subnets then it will provision a internal loadbalancer. If you want both external and internal loadbalancer to be provisioned, as mentioned in ingress-nginx docs here, though it provisions both external and internal loadbalancer there is no mechanism to specify which loadbalancer to use for your Ingress resource (It creates only one IngressClass Resource)
This has been already reported to the project here, which doesn't have any conclusion for general use case. Only workaround I have found till now is to have two different installations of controller as mentioned here.
Anyone faced same situation and found other way?
More reference for installing separate controllers: https://devrowbot.com/posts/internal-load-balancers-with-ingress-nginx/