This article compares Kubernetes Ingress with the Gateway API, highlighting their features, architectures, and traffic management options.
Ingress Resources in Kubernetes manage L7 traffic, but the new Gateway API delivers more extensibility and team isolation. In this article, we compare classic Ingress (NGINX, AWS ALB) with the emerging Gateway API, service meshes, and AWS Lattice. We preserve the sequence of diagrams to illustrate each architecture.
An Ingress is a native Kubernetes API object (networking.k8s.io/v1) that defines rules for routing external HTTP(S) traffic to Services inside the cluster. While stable since Kubernetes v1.19, Ingress has limitations:
Limited API extensibility for multi-team environments
Controller-specific annotations for advanced L7 features
One-to-one mapping between Ingress and external load balancers (in some providers)
The newer Gateway API addresses these gaps by offering:
The AWS Load Balancer Controller replaces the in-cluster Ingress controller by provisioning AWS Application Load Balancers (ALBs) for your Kubernetes Ingress resources:
Define a standard Kubernetes Ingress.
The controller reads L7 rules and creates an ALB with listener rules.
The ALB routes traffic directly to your Service endpoints.
Since version v2.4.0, the AWS Load Balancer Controller offers experimental support for the [Gateway API]. If you need a stable interface, continue using networking.k8s.io/v1 Ingress resources.
While this offloads proxy management to AWS, many Ingress objects can result in multiple ALBs, increasing cost. You can consolidate rules by hosting multiple domains on a single ALB:
AWS Lattice is an AWS-managed service that implements the Gateway API for both L4 and L7 routing:
Creates an external Load Balancer on your behalf.
Routes cross-account or cross-service traffic (e.g., Kubernetes → AWS Lambda).
Simplifies rule management at the AWS control plane.
While Lattice supports the standard Gateway API definitions directly, it does not yet match the full feature set of NGINX or the AWS Load Balancer Controller. Consider Lattice when you need: