on
Gateway API: the easy way to think about modern Kubernetes ingress
Kubernetes networking has a habit of evolving under our feet. Lately the change that matters for many teams isn’t the CNI or a new load‑balancer trick — it’s the Gateway API becoming the mainstream way to describe north‑south traffic in clusters. This article explains what Gateway API is, why it’s different from “Ingress,” and the practical implications in plain language, with a couple of small examples to make the ideas stick.
Why this matters now
- Gateway API has been receiving a steady stream of feature promotions into the Stable channel; a recent v1.5 release focused on moving experimental features into standard (stable) status. (kubernetes.io)
- At the same time, the longtime de facto controller for HTTP ingress (Ingress‑NGINX) reached end‑of‑life in March 2026, accelerating migration conversations and tooling around Gateway API. (kubernetes.io)
Put simply: the API you use to tell Kubernetes “how external traffic reaches services” is maturing and the ecosystem is converging. That’s a neat moment to stop and understand the concept rather than chase tools and opinions.
Gateway API in one paragraph Gateway API is a set of Kubernetes resources that cleanly separate the roles of:
- who can provide access (GatewayClass / Gateway),
- how traffic is routed once it reaches a gateway (HTTPRoute, TCPRoute, GRPCRoute, etc.), and
- which backends handle requests (Services, references).
This separation gives operators clearer boundaries: a cluster operator can expose a Gateway (or multiple Gateways) and application owners can request routing rules that are attached to those Gateways. Conceptually it’s less like a monolithic “Ingress” sheet and more like a tiny traffic control plane with explicit permissions and attach points. (kubernetes.io)
A practical analogy Think of Ingress like a single universal remote — powerful, but overloaded: it mixes who owns the remote, device pairing, channel rules, and volume limits in one place. Gateway API is like a small home theater setup:
- GatewayClass = the model and capabilities of the AV receiver (who makes it and what it supports).
- Gateway = the physical receiver sitting in the rack (where traffic enters).
- HTTPRoute/TCPRoute = the playlists or input‑switching rules your family uses (who listens to what and when).
- Services = the speakers and devices actually playing the music.
This split helps in multi‑team environments where operators manage the hardware and applications own their playlists.
Key Gateway API building blocks (brief)
- GatewayClass: cluster‑level definition of a controller implementation (e.g., “acme/nginx‑gateway‑controller”).
- Gateway: an instance that binds to an address (IP, hostname) and exposes listeners (HTTP, TCP, TLS).
- HTTPRoute / TCPRoute / GRPCRoute: CRDs for traffic routing with richer matching and composition than Ingress.
- BackendPolicy / TLSRoute (and others): ways to attach extra behavior (timeouts, retry policies) as the API matures. (kubernetes.io)
Why this is easier to reason about than classic Ingress
- Clear ownership: operators own Gateway/GatewayClass; app teams own routes. This reduces surprise changes and privilege overlap.
- Extensibility: the API explicitly supports more protocols (GRPC, TCP, TLS) and advanced routing semantics without hacks in annotations.
- Multiple Gateways: you can run several Gateways with different capabilities (e.g., internal vs external, different TLS stacks), instead of bending a single Ingress controller to do everything. (kubernetes.io)
A tiny example (conceptual) This is a minimal HTTPRoute-like snippet to illustrate how a route references a Gateway and a backend service (note: conceptual, simplified):
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: web-route
spec:
parentRefs:
- name: public-gateway
rules:
- matches:
- path:
type: Prefix
value: /app
backendRefs:
- name: app-svc
port: 8080
What’s different from an Ingress YAML? You explicitly point the route at a Gateway (parentRefs) instead of relying on the controller’s implicit matching rules. The API was designed so controllers can implement listeners and route attachment safely and consistently. (kubernetes.io)
Ecosystem and controller landscape Gateway API is an API spec; it needs controllers to implement behavior. The last couple of years have seen increasing adoption:
- The Gateway API project moved steadily from alpha to stable features, with releases promoting previously experimental behavior into the Standard channel. v1.5, for instance, focused on that stabilization work. (kubernetes.io)
- Tooling to ease migration exists: the Ingress2Gateway project and similar efforts help map common Ingress patterns to Gateway API semantics; Ingress‑NGINX’s retirement statement has given momentum to those projects. (kubernetes.io)
Caveats and realistic expectations
- Different controllers, different feature sets: although Gateway API standardizes the API, controllers implement their own feature sets and annotations. Study controller docs before assuming parity. (kubernetes.io)
- Experimental bits still exist: v1.5’s push to standardize features is part of an ongoing evolution; some advanced behaviors may still be gated or controller‑specific. (kubernetes.io)
- Migration is not purely mechanical: Ingress rules implemented with annotations or side effects (rewrite hacks, controller‑specific features) often need design adjustments when expressed as routes.
A balanced take Gateway API isn’t a dramatic re‑write of how network packets flow inside a node or how services are reachable — it’s an evolution of the control plane: a clearer, more explicit way to declare who can attach routing rules, what listeners exist, and how to compose routing for modern protocols. For teams that had to patch Ingress with annotations and ad‑hoc controller behavior, Gateway API feels like a breath of fresh air. For teams with simple, stable Ingress setups, the immediate benefit might be smaller — but the long‑term maintainability gains are real as the spec and controllers continue to mature. (kubernetes.io)
A short music metaphor (because why not) If Ingress was a mixtape compiled by a single friend (some tracks labeled, some guesswork), Gateway API is a streaming playlist service with collaborative editing and clear permissions. You can still play the same songs, but the controls are cleaner and the shared editing model scales better when lots of people are contributing.
Closing clarity Gateway API’s momentum — formalized in incremental stable releases and supported by migration tools — marks a meaningful step toward a more maintainable, multi‑tenant way to describe external cluster traffic. The API focuses on separation of responsibilities, richer routing primitives, and explicit attachment of routes to Gateways, which together make the networking model easier to reason about in complex environments. If nothing else, thinking in terms of GatewayClass → Gateway → Route gives a sensible mental model that matches how modern teams actually operate. (kubernetes.io)
Further reading (select references)
- Gateway API v1.5 release notes and details. (kubernetes.io)
- Ingress2Gateway 1.0 announcement and migration discussion. (kubernetes.io)
- Context on Ingress‑NGINX retirement and ecosystem impact. (cloudmagazin.com)
- Gateway API v1.1 technical overview and features. (kubernetes.io)
- Gateway API adoption and certification notes summarizing GA status. (examcert.app)