Gateway API on EKS: a platform-owned Gateway, team HTTPRoutes and the ALB the controller builds
Left, a client and a VPC with one ALB. The EKS cluster holds the cluster-scoped GatewayClass aws-alb, Gateway web in namespace infra, and the AWS Load Balancer Controller in kube-system. Below, namespaces shop (HTTPRoute shop, shop-v1, shop-v2), api (HTTPRoute api, api) and accounts (ReferenceGrant, users). The walkthrough shows shared Ingresses, the Gateway and its ALB, routes attaching or refused by allowedRoutes, header matching, a 90/10 split, and a cross-namespace backend allowed by a ReferenceGrant.
Client
shop.example.com
VPC 10.0.0.0/16
ALB
EKS CLUSTER shop-prod
CLUSTER-SCOPED
GatewayClass aws-alb
controllerName:
gateway.k8s.aws/alb
NAMESPACE infra · platform
Gateway web
class: aws-alb
HTTPS :443 *.example.com
routes from: Selector
gw-access=true
NAMESPACE kube-system
LB Controller
AWS Load Balancer
Controller v3
NAMESPACE shop
Ingress shop
group.name: web
host shop.example.com
actions.canary: {JSON}
conditions.canary: {JSON}
HTTPRoute shop
parentRefs: infra/web
host shop.example.com
shop-v1
Service :80
Pods image v1
shop-v2
Service :80
Pods image v2
NAMESPACE api
Ingress api
group.name: web
host api.example.com
/ → api:80
HTTPRoute api
parentRefs: infra/web
host api.example.com
/ → api:80
api
Service :80
team api's Pods
NAMESPACE accounts
ReferenceGrant
from: HTTPRoute
in namespace api
to: Service
users
Service :80
team accounts
ALB OWNERS
▶ Play
Back
Next
Replay packet
Voice off
Whole cluster