liveBook · Manning

Ingress controller

As explained in Kubernetes in Action, Second Edition

An ingress controller is a Kubernetes controller that implements external HTTP or HTTPS traffic routing defined by Ingress objects.

An ingress controller is the Kubernetes component that turns Ingress objects into working external HTTP or HTTPS routing. It watches the Kubernetes API for Ingress, Service, and EndpointSlice objects, then configures an L7 load balancer or reverse proxy from their desired state. section 12.1 section 12.1.2

An ingress controller connects several layers of external application access:

  • The Ingress object defines host- and path-based rules that select backend Services. section 12.7
  • The controller combines those rules with Service and EndpointSlice data, generates reverse-proxy configuration, and helps make the proxy reachable externally. section 12.1.2
  • The proxy handles Layer 7 traffic and can provide TLS termination; the controller and proxy may run separately or together. section 12.1 section 12.7
  • Multiple implementations can coexist, with each Ingress selecting its controller through an IngressClass. section 12.5

Installing a controller for a kind cluster

A kind cluster needs host ports 80 and 443 mapped and an ingress-ready control-plane node before applying the NGINX controller manifest: kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml. Minikube provides the alternative command minikube addons enable ingress. section 12.1.3

Figure 12.2 The role of an ingress controller
figure

Use the architecture figure to trace how the controller connects Ingress resources, the Kubernetes API, the proxy, and backend pods. section 12.1.2

How Kubernetes in Action, Second Edition covers it

How deep it goes
Explains API watching, proxy configuration, installation, controller selection, and routing, while deferring custom HTTPRoute contents.
Examples
Uses NGINX installation commands, kind and Minikube setup, multi-controller IngressClass selection, and an HTTPRoute resource backend.
What it assumes
Assumes Services and pods exist, while introducing Ingress, reverse proxies, controller reconciliation, and external exposure.
What you can do after
Operate/configure it by installing an implementation, creating Ingress rules, selecting an IngressClass, and routing requests to Services.
How it connects
Connects Ingress, Services, EndpointSlice, reverse proxies, L7 load balancers, IngressClass, TLS, and DNS.

Also explained in

Compare how 4 books explain ingress controller →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Kubernetes in Action, Second Edition. The section links point to the parts of the book it draws on.