<p>I installed <code>ingress-nginx</code> in a cluster. I tried exposing the service with the <code>kind: nodePort</code> option, but this only allows for a port range between <code>30000-32767</code> (AFAIK)... I need to expose the service at port <code>80</code> for http and <code>443</code> for tls, so that I can link <code>A Records</code> for the domains directly to the service. Does anyone know how this can be done?</p>

<p>I tried with <code>type: LoadBalancer</code> before, which worked fine, but this creates a new external Load Balancer at my cloud provider for each cluster. In my current situation I want to spawn multiple mini clusters. It would be too expensive to create a new (digitalocean) Load Balalancer for each of those, so I decided to run each cluster with it's own internal ingress-controller and expose that directly on <code>80/443</code>.</p>

<p>if you are on bare metal so change your ingress-controller service type to <code>NodePort</code> and add a reverse proxy to flow traffic to your ingress-controller service with selected <code>NodePort</code>.</p>

<p>As <a href="https://stackoverflow.com/users/9581141/pramod-v">@Pramod V</a> answerd if you use <code>externalIP</code> in ingress-controller service so you loose real remote address in your EndPoints.</p>

<p>A more complete answer could be found <a href="https://kubernetes.github.io/ingress-nginx/deploy/baremetal/" rel="nofollow noreferrer">Here</a> </p>
