Table of Contents
- What Is Kubernetes Ingress?
- NGINX Ingress Controller Architecture
- AWS Load Balancer Controller
- Alternative Ingress Controllers & Service Meshes
- AWS Lattice: Gateway API Implementation
- Comparison of Traffic Management Options
- References
What Is Kubernetes Ingress?
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)
- Role-based resource split: Gateways, Listeners, Routes
- Fine-grained control for teams and operators
- Extended protocol support beyond HTTP(S)
NGINX Ingress Controller Architecture
Here’s how a typical NGINX-based Ingress controller routes external traffic within a two-node cluster:- Each
ClusterIPService is backed by a NodePort (e.g., 30000). - The NGINX Ingress controller Pod (via DaemonSet/Deployment) exposes ports 80/443 on every node.
- An external Load Balancer forwards HTTP(S) traffic to node ports.
- NGINX inspects the
Hostheader and proxies to the correct Service.

AWS Load Balancer Controller
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.
Alternative Ingress Controllers & Service Meshes
Beyond NGINX, several data planes and control planes support Ingress and the Gateway API:
Service meshes like [Istio] or [Linkerd] can also manage north-south traffic via custom Gateway or Ingress resources.

AWS Lattice: Gateway API Implementation
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.
- Cross-service routing (EC2, Lambda, ECS)
- Managed control plane without self-hosted proxies

Comparison of Traffic Management Options

- Gateway API supersedes Ingress with a stable, extensible L7 routing framework.
- Ingress controllers (NGINX, Envoy-based, AWS ALB Controller) offer host-based routing without per-service load balancers.
- Service meshes and AWS Lattice provide alternative north-south solutions—choose based on features, flexibility, and operational model.
References
- Kubernetes Ingress: https://kubernetes.io/docs/concepts/services-networking/ingress/
- Gateway API: https://gateway-api.sigs.k8s.io/
- AWS Load Balancer Controller: https://github.com/kubernetes-sigs/aws-load-balancer-controller
- Istio: https://istio.io/
- Linkerd: https://linkerd.io/
- AWS Lattice: https://docs.aws.amazon.com/lattice/latest/ug/what-is-aws-lattice.html