An ingress controller is a Kubernetes application that can process routing rules according to the Kubernetes ingress specification. An ingress controller is typically used to route traffic from outside a cluster to services inside the cluster. Examples of ingress controllers include Ambassador and NGINX ingress controller.
In Kubernetes, every pod has its own IP address. This creates a powerful networking model for inter-service communication. At the same time, this approach also requires a network bridge to route traffic from the external Internet to internal services. An ingress controller functions as that bridge.