<p>I am using this Ingress it is similar to Nginx: <a href="https://cloud.ibm.com/docs/containers?topic=containers-ingress_annotation#general" rel="nofollow noreferrer">https://cloud.ibm.com/docs/containers?topic=containers-ingress_annotation#general</a></p>

<p>When I do:</p>

<pre><code>request -&gt; LoadBalancer Service -&gt; client source public IP returned
request -&gt; Ingress -&gt; LoadBalancer Service -&gt; some private IP returned
</code></pre>

<p>I would like to preserve the client source public IP. In my Service I am setting <code>ExternalTrafficPolicy: Local</code>, and it works when hitting the LoadBalancer directly, but I do not know what setting I require when going through the Ingress.</p>

<p>For preserving Ingress source IP, see these steps: <a href="https://cloud.ibm.com/docs/containers?topic=containers-comm-ingress-annotations#preserve_source_ip_classic" rel="nofollow noreferrer">https://cloud.ibm.com/docs/containers?topic=containers-comm-ingress-annotations#preserve_source_ip_classic</a></p>
<p>Essentially you do the same thing that you've described, except that you edit the existing alb service.</p>
<hr />
<p>steps:</p>
<ul>
<li>kubectl edit svc &lt;ALB_ID&gt; -n kube-system</li>
<li>Under spec, change the value of externalTrafficPolicy from Cluster to Local.</li>
</ul>
