Traefik Labs reposted this
Saying goodbye to ingress-nginx is not easy. For years, the common Kubernetes traffic model was: Service → Ingress → NGINX controller → application It was simple, familiar, and it worked. But now that nginx reached retirement in March 2026, it is worth understanding the model many teams are moving toward: Gateway API. First important point: Gateway API is not the controller. Gateway API is the standard/spec. It gives Kubernetes resource types like GatewayClass, Gateway, HTTPRoute, TCPRoute, and TLSRoute. By itself, it does not route traffic. It is like installing the interface. GatewayClass: The cluster-level “which controller should handle this?” object. It is cluster-scoped and points to an implementation like NGINX Gateway Fabric, Traefik, Envoy Gateway, Istio, Azure ALB for Containers, or another cloud-managed controller. Gateway: The actual frontend created from a GatewayClass. This is where traffic enters the cluster. It references the class through gatewayClassName. Listener: The open door on that Gateway. Think HTTP/80, HTTPS/443, hostname, and TLS settings. HTTPRoute: The application rule that connects traffic from the Gateway to a Kubernetes Service. For TLS, the certificate Secret is usually referenced by the Gateway listener and stored in the same namespace as the Gateway. The HTTPRoute does not normally reference the certificate; it only routes traffic to the backend Service. That separation is the big improvement. With ingress-nginx, many teams depended on one controller-specific model. IngressNightmare showed why that layer matters: the traffic controller is not just routing requests; it is part of the cluster security boundary. With Gateway API, the API becomes more standard and the controller becomes more replaceable. K3s for example works out of the box with Traefik Labs for Ingress, and can also use Traefik as a Gateway API controller when you enable that model. AKS can use NGINX Gateway Fabric, Traefik, Envoy Gateway, Istio, Azure ALB for Containers, or another managed implementation depending on the platform design. Same API model. Different implementations. Simple mental model: ClusterIP = internal service only. LoadBalancer = one external cloud load balancer per service. Useful, but costly/noisy if every app gets one. Ingress = one controller, many HTTP routes. Gateway API = shared gateways, app-owned routes, cleaner delegation. Ingress made Kubernetes traffic practical. Gateway API makes it easier to delegate, standardize, and swap implementations without changing the whole mental model. #kubernetes #k8s #gatewayapi #nginxgatewayfabric #nginx #ingress #k3s