<p>I have a <code>kubernetes</code> objects as below:</p>
<ol>
<li>a deployment</li>
<li>a service to use with that deployment in step 1</li>
<li>an ingress with backend paths to the service in step 2</li>
</ol>
<p>I am using Kubernetes Engine in <code>GCP</code>. Once I created an <code>ingress</code> object, it created a load balancer as usual.</p>
<p>So I have my dns, and I added a <code>A</code> record with a domain name <code>test1.&lt;my-domain&gt;.co</code> pointing to the IP of the LoadBalancer created from the <code>ingress</code></p>
<p>But this is not working. It doesn't load the page.</p>
<p>Then I tried installing <code>ningx</code> ingress controller, and once that is being deployed, it created another load balancer in the <code>gcp</code>. So, I got the IP of that newly created load balancer and switched/changed replace the DNS record IP with newly created Load Balancer's IP. And voila, it started working. So does that mean, an <code>ingress</code> always need an ingress controller to work?</p>

Jananath Banuka
<p>Yes, in order for the Ingress resource to work, the cluster must have an ingress controller running. Only creating an Ingress resource has no effect.<br />
An Ingress controller is responsible for fulfilling the Ingress, usually with a load balancer, which is what you see.</p>
<p>A request from the client lands up on the Ingress managed Load Balancer which is forwarded to the respective Ingress based on the host and path in the original request. Following the routing rules defined in the ingress, request is forwarded to the service from where it lands up on the backend pods.</p>
<p>Ingress resource creating its own Load Balancer seems to be a behaviour followed in GKE. From the GCP docs</p>
<blockquote>
<p>When you specify kind:Ingress in the resource manifest, you instruct
GKE to create an Ingress resource. By including annotations and
supporting workloads and Services, you can create a custom Ingress
controller. Otherwise, GKE makes appropriate Google Cloud API calls to
create an external HTTP(S) load balancer.</p>
</blockquote>
<p>You can read more about this <a href="https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer" rel="nofollow noreferrer">here</a>.</p>
