<p>I am trying to understand how an internal load balancer (with private RFC1918 address on subnet) is successfully routing traffic to various applications running in a kubernetes cluster.</p>
<p>The cluster I am attempting to observe is running on GKE and includes a swath of different stateful sets, deployments, and so on, deployed via a helm chart.</p>
<p>All of the paths to the respective applications are mapped via an nginx ingress (and accompanying daemonset ingress controller on each node).</p>
<p>What I am failing to understand is how the internal https load balancer (set up by a colleague through GCP UI) is managing to open traffic through our VPC+VPN to internal clients when they visit the RFC 1918 address.</p>
<p>My question is more related to which configuration/kubernetes object is responsible for actually exposing the traffic externally (as in, outside the cluster) from these pods to users accessing the load balancer address.</p>
<p>The ingress appears to be doing its job, so is the load balancer, but I don't understand how simply adding a load balancer configured to the instance groups is enough configuration for this all to work.</p>
<p>What is actually happening when a user visits the rfc1918 load balancer IP?</p>
<p>My thought is that: traffic is terminated at the load balancer and then a new request is issued (inside the cluster), and the ingress controller uses the ingress object (rules config) which is mapped to each respective service (clusterIP), hence why the user is served by each respective pod.</p>
<p>In other words <code>USER -&gt; LB.IP. (SSL) -&gt; Controller Daemon -&gt; (routed to) -&gt; Cluster IP -&gt; Pod</code></p>
<p>^ The link between <code>LB.IP -&gt; Controller Daemon</code> in the path above isn't clear to me.</p>

007chungking
<blockquote>
<p>The link between LB.IP -&gt; Controller Daemon in the path above isn't
clear to me.</p>
</blockquote>
<p>As you are not clear about this part, Looks like you might have only noticed the ingress, deployment and daemon sets only. If you notice the services also in cluster you might have got the idea.</p>
<p>The connection between <strong>IP</strong> &amp; <strong>Nginx controller</strong> goes with <strong>Kubernetes service</strong>, if you check the <strong>Nginx ingress controller</strong> service <strong>type</strong> you might find it <strong>type: LoadBalancer</strong>. Service expose with LB IP and forwarding the request to Nginx ingress controller which further checks for the Route rules.</p>
<p>Based on <strong>route rules</strong> &amp; the config request gets <strong>redirected</strong> to <strong>service</strong> and further PODs.</p>
