1. AWS Load Balancer Controller 란?
: AWS Load Balancer Controller는 쿠버네티스 클러스터에서 Ingress 또는 Service를 감지하여 AWS ELB(Elastic Load Balancer)를 자동으로 생성하고 관리하는 컨트롤러입니다. 이를 통해 AWS 서비스를 활용한 쿠버네티스 애플리케이션을 외부에 노출할 수 있습니다.
[Caption] AWS Load Balancer Controller 소개
2. AWS Load Balancer Controller 주요 기능
•
쿠버네티스 Ingress 기반 ALB 생성
◦
HTTP/HTTPS 트래픽을 쿠버네티스 클러스터 내의 파트로 전달합니다.
◦
경로 기반 라우팅 및 호스트 기반 라우팅 지원합니다.
◦
AWS WAF(Web Application Firewall)와 통합 가능합니다.
•
쿠버네티스 Service 기반 NLB 생성
◦
TCP/UDP 트래픽을 처리하며 고성능의 로드 밸런싱을 제공합니다.
◦
IP 모드와 Instance 모드를 지원합니다.
•
트래픽 모드
◦
Instance 모드: ALB가 쿠버네티스 노드로 트래픽을 전달하며, NodePort를 통해 파드로 전달합니다. (기본 값)
◦
IP 모드: ALB가 파드의 IP를 직접 대상으로 등록하여 바로 파드로 트래픽을 전달합니다.
•
자동화된 보안 그룹 관리
◦
대상 그룹과 연결된 파드 또는 노드에 대한 보안 그룹 규칙을 자동으로 생성 및 관리할 수 있습니다.
3. AWS Load Balancer Controller 작동 원리
1.
쿠버네티스 API 서버에서 Ingress 또는 Service에 대한 이벤트를 감시합니다.
2.
Ingress가 생성되면 AWS ALB를 프로비저닝합니다.
•
ALB 리스너와 대상 그룹을 생성합니다.
•
대상 그룹은 Ingress Rule에 정의한 대상과 연결합니다.
3.
Service가 생성되면 AWS NLB를 프로비저닝합니다.
•
Service의 type: LoadBalancer 설정에 따라 NLB를 생성합니다.
4.
4. AWS Load Balancer Controller 설치 및 확인
Helm을 통한 설치
helm repo add eks https://aws.github.io/eks-charts
helm repo update
Bash
복사
# helm 저장소 추가 및 업데이트
helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system \
--set clusterName={CLUSTER_NAME} \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
Bash
복사
# helm으로 aws-load-balancer-controller 설치
설치 확인
kubectl get deployment -n kube-system aws-load-balancer-controller
Bash
복사
# aws-load-balancer-controller 설치 확인
helm chart로 aws-load-balancer-controller를 설치할 때 별도의 네임 스페이스를 지정하지 않으면 기본 설정으로 kube-system 네임 스페이스에 설치됩니다.
5. AWS Load Balancer Controller 고려 사항
•
Annotation을 설정해서 로드 밸런서에 대한 동작을 세부적으로 조정할 수 있습니다.
•
AWS ELB 자원을 관리하기 위해 IRSA(IAM Role for Service Account)를 지정하는데 필요한 권한만 최소화하여 설정합니다.
•
AWS Load Balancer Controller는 자동으로 보안 그룹 규칙을 관리합니다.
•
IP 모드를 사용해서 파드로 직접적인 라우팅을 수행할 경우 이를 가능한 적절한 CNI 플러그인을 선택해야 합니다. (예: Amazon VPC CNI 사용)
6. 결론
AWS Load Balancer Controller는 쿠버네티스 클러스터에서 애플리케이션을 외부에 노출하거나 내부 네트워크에서 로드 밸런싱을 수행하는 데 필수적인 도구입니다. 이를 통해 AWS의 로드밸런서 자원인 ALB와 NLB를 자동으로 관리하며, 고급 기능을 사용할 수 있습니다.
이렇게 쿠버네티스 환경에서 네트워킹과 관련된 작업을 간소화하고 AWS 인프라와의 통합성을 극대화할 수 있습니다.