AWS Load Balancer Controller

지원 버전: AWS Load Balancer Controller v2.8+ 마지막 업데이트: 2026년 2월 22일

개요

AWS Load Balancer Controller는 Kubernetes 클러스터에서 AWS Elastic Load Balancer(ELB)를 관리하는 컨트롤러입니다. Kubernetes Ingress 및 Service 리소스를 AWS Application Load Balancer(ALB) 및 Network Load Balancer(NLB)와 자동으로 연동합니다.

주요 기능

  • Application Load Balancer (ALB): HTTP/HTTPS 트래픽, 경로 기반 라우팅, 호스트 기반 라우팅

  • Network Load Balancer (NLB): TCP/UDP 트래픽, 고성능 L4 로드밸런싱

  • TargetGroupBinding: 기존 Target Group을 Kubernetes Service와 연결

  • AWS WAF 통합: 웹 애플리케이션 방화벽 적용

  • AWS Shield: DDoS 보호

spinner

아키텍처

컨트롤러 동작 방식

spinner

컴포넌트 구성

사전 요구사항

1. IAM 정책 생성

2. IRSA 설정

설치

Helm을 사용한 설치

설치 확인

Application Load Balancer (ALB)

기본 Ingress 설정

고급 Ingress 설정

경로 기반 라우팅

인증 설정

Network Load Balancer (NLB)

기본 NLB Service 설정

TLS 종료 NLB

내부 NLB

UDP 지원 NLB

Proxy Protocol v2

IngressClass 및 IngressClassParams

IngressClass 정의

IngressClassParams 설정

TargetGroupBinding

TargetGroupBinding CRD를 사용하면 기존 AWS Target Group을 Kubernetes Service와 직접 연결할 수 있습니다.

기본 TargetGroupBinding

고급 TargetGroupBinding

멀티포트 TargetGroupBinding

WAF 및 Shield 통합

AWS WAF v2 연동

AWS Shield Advanced

주요 Annotation 레퍼런스

ALB Ingress Annotations

Annotation
설명
기본값

alb.ingress.kubernetes.io/scheme

internet-facing 또는 internal

internal

alb.ingress.kubernetes.io/target-type

ip 또는 instance

instance

alb.ingress.kubernetes.io/subnets

서브넷 ID 또는 이름

자동 감지

alb.ingress.kubernetes.io/security-groups

보안 그룹 ID

자동 생성

alb.ingress.kubernetes.io/listen-ports

리스너 포트 JSON

[{"HTTP": 80}]

alb.ingress.kubernetes.io/certificate-arn

ACM 인증서 ARN

-

alb.ingress.kubernetes.io/ssl-redirect

SSL 리다이렉트 포트

-

alb.ingress.kubernetes.io/ssl-policy

SSL 정책

ELBSecurityPolicy-2016-08

alb.ingress.kubernetes.io/healthcheck-path

헬스체크 경로

/

alb.ingress.kubernetes.io/healthcheck-port

헬스체크 포트

traffic-port

alb.ingress.kubernetes.io/healthcheck-protocol

헬스체크 프로토콜

HTTP

alb.ingress.kubernetes.io/healthcheck-interval-seconds

헬스체크 간격

15

alb.ingress.kubernetes.io/healthcheck-timeout-seconds

헬스체크 타임아웃

5

alb.ingress.kubernetes.io/healthy-threshold-count

정상 임계값

2

alb.ingress.kubernetes.io/unhealthy-threshold-count

비정상 임계값

2

alb.ingress.kubernetes.io/group.name

Ingress 그룹 이름

-

alb.ingress.kubernetes.io/group.order

그룹 내 우선순위

0

alb.ingress.kubernetes.io/ip-address-type

ipv4 또는 dualstack

ipv4

alb.ingress.kubernetes.io/load-balancer-attributes

LB 속성

-

alb.ingress.kubernetes.io/target-group-attributes

TG 속성

-

alb.ingress.kubernetes.io/tags

리소스 태그

-

alb.ingress.kubernetes.io/wafv2-acl-arn

WAF v2 WebACL ARN

-

alb.ingress.kubernetes.io/shield-advanced-protection

Shield 보호

false

alb.ingress.kubernetes.io/auth-type

인증 유형 (none, cognito, oidc)

none

NLB Service Annotations

Annotation
설명
기본값

service.beta.kubernetes.io/aws-load-balancer-type

external (NLB) 또는 nlb

-

service.beta.kubernetes.io/aws-load-balancer-nlb-target-type

ip 또는 instance

instance

service.beta.kubernetes.io/aws-load-balancer-scheme

internet-facing 또는 internal

internal

service.beta.kubernetes.io/aws-load-balancer-subnets

서브넷 ID

자동 감지

service.beta.kubernetes.io/aws-load-balancer-ssl-cert

ACM 인증서 ARN

-

service.beta.kubernetes.io/aws-load-balancer-ssl-ports

SSL 적용 포트

-

service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy

SSL 정책

-

service.beta.kubernetes.io/aws-load-balancer-backend-protocol

백엔드 프로토콜

-

service.beta.kubernetes.io/aws-load-balancer-proxy-protocol

Proxy Protocol

-

service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled

크로스 존 LB

true

service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol

헬스체크 프로토콜

TCP

service.beta.kubernetes.io/aws-load-balancer-healthcheck-path

헬스체크 경로

-

service.beta.kubernetes.io/aws-load-balancer-healthcheck-port

헬스체크 포트

-

service.beta.kubernetes.io/aws-load-balancer-attributes

LB 속성

-

service.beta.kubernetes.io/aws-load-balancer-target-group-attributes

TG 속성

-

service.beta.kubernetes.io/aws-load-balancer-security-groups

보안 그룹

자동 생성

EKS 모범 사례

1. 서브넷 태깅

2. 보안 그룹 관리

3. 비용 최적화

4. 고가용성 구성

트러블슈팅

일반적인 문제

1. ALB가 생성되지 않음

2. Target이 Unhealthy

3. 502 Bad Gateway

4. SSL 인증서 문제

디버깅 명령어


참고 자료

마지막 업데이트