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 GatewayClass aws-alb, Gateway web in namespace infra, and the AWS Load Balancer Controller in kube-system. Below, namespaces shop (Ingress, then HTTPRoute shop, shop-v1, shop-v2), accounts (ReferenceGrant, users) and api (Ingress, then HTTPRoute api, api). The walkthrough follows shop's request from a stalled shared Ingress ALB to a Gateway, a refused then admitted route, header and weighted canaries, and a cross-namespace backend.
Client
shop.example.com
VPC 10.0.0.0/16
ALB
EKS CLUSTER shop-prod
GatewayClass aws-alb
cluster-wide
controllerName:
gateway.k8s.aws/alb
NAMESPACE infra · platform
Gateway web
listener HTTPS :443
admits: gw-access=true
NAMESPACE kube-system
LB Controller
AWS Load Balancer
Controller v3
NAMESPACE shop
Ingress shop
group.name: web
host shop.example.com
TLS policy: …TLS13-1-2-2021-06
HTTPRoute shop
parentRefs: infra/web
shop-v1
Service :80
Pods image v1
shop-v2
Service :80
Pods image v2
NAMESPACE accounts
ReferenceGrant
from: HTTPRoute
in namespace shop
to: Service
users
Service :80
team accounts
NAMESPACE api
Ingress api
group.name: web
host api.example.com
TLS policy: …FS-1-2-2019-08
HTTPRoute api
parentRefs: infra/web
host api.example.com
api
Service :80
team api's Pods
SHOP'S REQUEST
▶ Play
Back
Next
Replay step
Voice off
Whole picture