<p>I am using istioctl to install istio in an EKS cluster. However, for the moment I will be using an nginx ingress for externally facing services. How can I just deploy the istio service internally, or at least avoid the automatically created ELB?</p>

<p>You can do it by editing <a href="https://istio.io/docs/tasks/traffic-management/ingress/ingress-control/" rel="nofollow noreferrer">istio-ingressgateway</a>.</p>

<p>Change <a href="https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types" rel="nofollow noreferrer">service type</a> from </p>

<p><strong>LoadBalancer</strong> -> Exposes the Service externally using a cloud provider’s load balancer</p>

<p>to </p>

<p><strong>ClusterIP</strong> -> Exposes the Service on a cluster-internal IP. Choosing this value makes the Service only reachable from within the cluster. </p>

<p>Let's edit ingressgateway </p>

<pre><code>kubectl edit svc istio-ingressgateway -n istio-system
</code></pre>

<p>Then please change the type from LoadBalancer to ClusterIP and <strong>#</strong> or <strong>delete</strong>  every nodePort since You won't use them anymore and it have to be # or deleted so You could actually edit the file, without it, it fails to edit and nothing is happening.</p>

<p><strong>EDIT</strong></p>

<blockquote>
  <p>I can do this at install with istioctl using a values.yaml file?</p>
</blockquote>

<p>Yes, it's possible. </p>

<p>This is a value You need to change:</p>

<blockquote>
  <p>values.gateways.istio-ingressgateway.type</p>
</blockquote>

<p>example</p>

<p>Creating manifest to apply istio demo profile with ClusterIP</p>

<pre><code>istioctl manifest generate --set profile=demo --set values.gateways.istio-ingressgateway.type="ClusterIP" &gt; $HOME/generated-manifest.yaml
</code></pre>
