What is Kubernetes Ingress ?
Kubernetes ingress is an API object that governs how external users access services running in a Kubernetes cluster. It defines the traffic routing rules like load balancing, SSL termination, path-based routing, protocol. It exposes HTTP and HTTPS routes from outside the cluster to services within the cluster.
Kubernetes Ingress is built used top of Kubernetes services to provide the load balancing at application layer.
Following are the Ingress API Object’s main responsibilities,
Ingress Controller’s main responsibility is to perform Kubernetes Ingress. In other words, This is responsible to perform all Ingress API Object Functionalities.
There are multiple Ingress Controller implementation approaches. One of the approach is running the Ingress Controller load balancer cluster in the Kubernetes pods. This way we could horizontally scale the Ingress Controller up to the limit of Kubernetes. In this approach we could use internal/external network load balancer. There are many different ingress controllers to consider, we could pick based on specific requirements. Though NGINX Ingress controller is one of the leading and supported by Kubernetes community. I will describe later both the variants of NGINX Ingress Controller.
There is another approach we could user external application load balancer. The feature/capabilities will be depending on the external application balancer provider ( AWS, AZURE, GCP or On-Prem ). It hides the operational complexities of load balancing, though on the down side we are constraints with third party application load balancing limitations.