Difference between Ingress, Ingress controller, and API gateway in Kubernetes

Grig Gheorghiu
3 min readApr 2, 2022

There is no shortage of articles explaining the concepts of Kubernetes Ingress controllers and Ingress objects. I want to add a quick explanation that helped me understand the difference between these two types of objects.

An Ingress controller is similar to an nginx instance that you install on a host. Within that nginx instance, you can do name-based routing via server blocks. Ingress objects are similar to the server blocks.

In Kubernetes, you install an Ingress controller (such as the popular nginx ingress controller or the Contour ingress controller) at the level of the cluster, typically in its own namespace. The Ingress controller will usually define a Kubernetes Service of type LoadBalancer. If you run your Kubernetes cluster in a cloud provider such as AWS, Azure or GCP, the cloud provider will launch an actual cloud load balancer that will represent this LoadBalancer Service. You can run more than one type of Ingress controller in the same Kubernetes cluster.

Typically, a microservice you deploy to Kubernetes will declare its own Ingress object of a type corresponding to one of the Ingress controllers installed in your cluster (or, in the case of Contour, instead of Ingress you would declare an HTTPProxy object).

--

--

Grig Gheorghiu

DevOps, cloud computing, Python and Golang programming, data science, automated testing.