<p>I'm running a bare metal Kubernetes cluster with 1 master node and 3 worker Nodes. I have a bunch of services deployed inside with Istio as an Ingress-gateway.</p>
<p>Everything works fine since I can access my services from outside using the ingress-gateway NodePort.</p>
<pre><code>NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                      AGE
istio-ingressgateway   LoadBalancer   10.106.9.2       &lt;pending&gt;     15021:32402/TCP,80:31106/TCP,443:31791/TCP   2d23h
istiod                 ClusterIP      10.107.220.130   &lt;none&gt;        15010/TCP,15012/TCP,443/TCP,15014/TCP        2d23h
</code></pre>
<p>In our case the port <code>31106</code>.</p>
<p>The issues is, I don't want my customer to access my service on port 31106. that's not user friendly. So is there a way to expose the port 80 to the outside ?</p>
<p>In other word, instead of typing <a href="http://example.com:31106/" rel="nofollow noreferrer">http://example.com:31106/</a> , I want them to be able to type <a href="http://example.com/" rel="nofollow noreferrer">http://example.com/</a></p>
<p>Any solution could help.</p>

<p>Based on <a href="https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports" rel="nofollow noreferrer">official documentation</a>:</p>
<blockquote>
<p>If the <code>EXTERNAL-IP</code> value is set, your environment has an external load balancer that you can use for the ingress gateway. If the <code>EXTERNAL-IP</code> value is <code>&lt;none&gt;</code> (or perpetually <code>&lt;pending&gt;</code>), your environment does not provide an external load balancer for the ingress gateway. In this case, you can access the gateway using the service’s <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer">node port</a>.</p>
</blockquote>
<p>This is in line with what <a href="https://stackoverflow.com/users/10008173/david-maze">David Maze</a> wrote in the comment:</p>
<blockquote>
<p>A LoadBalancer-type service would create that load balancer, but only if Kubernetes knows how; maybe look up <code>metallb</code> for an implementation of that. The <code>NodePort</code> port number will be stable unless the service gets deleted and recreated, which in this case would mean wholesale uninstalling and reinstalling Istio.</p>
</blockquote>
<p>In your situation you need to access the gateway using the <code>NodePort</code>. Then you can configure istio. Everything is described step by step in <a href="https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control" rel="nofollow noreferrer">this doc</a>. You need to choose the instructions corresponding to <code>NodePort</code> and then set the ingress IP depends on the cluster provider. You can also find sample yaml files in the documentation.</p>
