Note
Kubernetes Ingress Finally Made Sense When I Understood This
Ingress is much easier to understand when you stop treating it as a Kubernetes-specific concept.
- Kubernetes
- Networking
The reframe
Ingress confused me until I stopped thinking about Kubernetes and started thinking about the underlying HTTP request path.
At its core, an Ingress is a routing table. It answers one question: given this request, which backend should receive it? Everything else is a naming convention on top of that idea.
The same request path, with the Kubernetes vocabulary alongside it.
Client
↓
DNS → resolves a hostname
↓
Load Balancer → accepts the connection
↓
Ingress → chooses a backend
↓
Service → a stable set of endpoints
↓
Pods → the processes that answerOnce I could draw that path, the resources stopped being magic. Ingress is the routing decision. Service is a stable name for a changing set of pods. IngressClass and the controller are simply who performs the routing.