전공영역 공부 기록

EKS ALB controller에서 gateway API 사용하는 방법

악분 2025. 12. 30. 20:32
반응형

이 글에서는 EKS환경에서 ALB Controller를 사용하여 Gateway API를 사용하는 방법을 다룹니다.  AWS EKS에서 Gateway API를 사용하려면 2025년 12월 기준으로 VPC Lattice만 stable이며, ALB Controller는 실험 단계입니다.
 

목차

 

ALB controller의 Gateway API

EKS 환경에서 Gateway API를 사용하려면 2025년 12월 기준으로 VPC Lattice만 stable입니다. AWS ALC 또는 ALB Controller는 실험 단계입니다. 제가 ALB Controller로 Gateway API를 사용해보니 설정이 많이 없고 불안정했습니다. 불안정하다는 뜻은 gateway API 설정이 잘못되면, ALB Controller pod에서 메모리 참조오류가 발생하여 CrashLoopBackOff가 발생하고 계속 pod가 재부팅되었습니다.

 
ALB Controller의 설정 원리는 아래 그림과 같습니다. Ingress와 비교한다면, ingress 또는 service annotations의 설정을 전부 Kubernetes CRD로 옮겨야 합니다.

 
kubernetes와 AWS layer를 매핑시키면 아래 구조가 됩니다.

 

ALB controller가 Gateway API를 사용하려면?

1. ALB Controller: v2.13.0 이상
2. ALB Controller Feature Flag 설정
2025년 12월 기준, ALB Controller에서 Gateway API를 사용하려면 feature flag를 활성화해야 합니다.

kubectl get deployment -n kube-system aws-load-balancer-controller \
  -o jsonpath='{.spec.template.spec.containers[0].args}' | jq -r '.[]' | grep -i feature

3. ExternalDNS v0.10.0이상
4. ExternalDNS에서 gateway API호환 설정
ExternalDNS args의 source 부분에 gateway를 설정해야, Gateway API에 설정된 hostname을 도메인으로 만듭니다.

containers:
  - name: external-dns
    image: registry.k8s.io/external-dns/external-dns:v0.20.0
    args:
    # Add desired Gateway API Route sources.
    - --source=gateway-httproute
    - --source=gateway-grpcroute
    - --source=gateway-tlsroute
    - --source=gateway-tcproute
    - --source=gateway-udproute

5. Gateway API CRD 설치
Kubernetes Gateway API CRD를 설치합니다.

# Standard Gateway API CRDs
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml
# Experimental Gateway API CRDs, Used for L4 Routes
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/experimental-install.yaml

 
CRD 설치 확인:

kubectl get crd gatewayclasses.gateway.networking.k8s.io
kubectl get crd gateways.gateway.networking.k8s.io
kubectl get crd httproutes.gateway.networking.k8s.io

 

실습

ALB controller의 실습자료는 저의 github에 공개되어 있습니다.

 

참고자료

1. ALB controller 문서: https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/gateway/gateway/
2. ExternalDNS 설정: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/sources/gateway-api.md
이하공백

반응형