Understanding ingress controllers
Kubernetes uses ingress controllers to expose your deployments outside the cluster. An ingress controller is the adaptation of a proxy to expose your applications, and Ingress is the Kubernetes object that uses this adaptation. An ingress controller works as a reverse proxy like NGINX to expose your application using HTTP/HTTPS protocols to a load balancer. This load balancer is the endpoint to expose your application outside the cluster. It’s in charge of receiving and controlling traffic for your application. The benefit of this is that you can share this load balancer, to expose as many applications as you want, but using all the features that your ingress controller provides. There are different ingress controller implementations, such as NGINX, Traefik, Emissary, and Envoy.
Taking as a reference Figure 6.1, to expose your application, you must create a ClusterIP service that creates an internal DNS name for your Deployment or Pod. This...