The request hit your desk at 02:17. The cluster was running, but no one outside the firewall could reach it. You didn’t need more pods—you needed controlled access. In Kubernetes, that means Ingress.
Infrastructure access in Kubernetes is not just about routing. It’s the layer that decides who can talk to your services, how requests enter the cluster, and what happens once they get inside. Kubernetes Ingress configures entry points through an API object, backed by an Ingress Controller. It lets you define hostnames, paths, TLS termination, and complex routing logic without changing service definitions.
The standard approach is simple: create an Ingress resource, apply it, and let the controller handle the rest. Most teams run controllers like NGINX Ingress, Traefik, or HAProxy. Each implements the Ingress spec but comes with different options for rewrite rules, security, and performance tuning. Choosing the controller is as critical as writing the manifest.
An Ingress object sits at the intersection of DNS records, load balancers, and service endpoints. To make infrastructure access work, DNS must resolve to the load balancer, which forwards traffic to the controller. The controller reads your Ingress resource and sends requests to the target Service. Behind that Service, a Deployment or StatefulSet actually delivers the application.