Amazon EKS Loadbalencer Controller이란?
개념은 사실 간단하다.
쿠버네티스가 외부의 트래픽을 받기 위해 Ingress 리소스를 생성할 경우 자동으로 AWS Load Balancer Controller가 트리거하여 ingress.yaml 템플릿에 명시된대로 로드밸런서를 생성해주는 컨트롤러이다.
즉, Cluster에 Ingress 자원이 생성될 때 ALB 및 필요한 자원이 생성되도록 Trigger하는 컨트롤러이다.
Ingress 자원들은 ALB를 구성하여 HTTP 혹은 HTTPS 트래픽을 클러스터 내 Pod로 라우팅하게 된다.
오픈소스인만큼 GitHub에 자세히 설명되어 있음
https://github.com/kubernetes-sigs/aws-load-balancer-controller
Client → ALB → Node의 nodePort로 이동 혹은 Pod의 IP로 이동
==> Ingress 리소스에 정의된 대로 트래픽이 흐르게 된다.
AWS Load Balancer Controller에서 지원하는 Traffic Mode는 2가지이다.
(이 2가지는 모두 Load Balancer와 연결되는 Target Group의 기능임)
1. Instance (Default) : 클러스터 내 노드를 ALB의 대상으로 등록한다.
ALB에 도달하는 트래픽은 NodePort로 라우팅된 다음 파드로 프록시된다. (중간에 Service 경유)
2. IP : Pod를 IP 대상으로 등록한다. ALB에 도달하는 트래픽은 파드로 직접 라우팅되며 해당 트래픽 모드를 사용하기 위해선 ingress.yaml 파일에 Annotation을 사용하여 명시적으로 지정해야 함
요약
1. IRSA (IAM Role for Service Account) : 해당 AWS Load Balancer Controller가 필요한 권한만 이양받기 위해 IRSA를 이용하여 IAM Role과 연결한다.
2. 인증서 구성을 WebHook에 삽입할 수 있도록 Cert-Manager를 설치해야 한다.
(Cert Manager : 쿠버네티스 클러스터 내에서 TLS 인증서를 자동으로 프로비저닝 및 관리하는 오픈 소스)
3. AWS Load Balancer Controller는 쿠버네티스 클러스터 내에 애드온으로 배포된다.
( AddOn : 클러스터 내부에서 필요한 기능들을 위해 실행되는 파드들)
다음 글에서는 직접 실습을 진행해 볼 예정
- Ref
https://aws-eks-web-application.workshop.aws/ko/60-ingress-controller/100-launch-alb.html
'AWS' 카테고리의 다른 글
[AWS] ALB, NLB 기본 개념 정리하기 (0) | 2021.09.06 |
---|---|
[EKS] AWS Load Balancer Controller 알아보기 #2 - 실습 (0) | 2021.09.01 |
[Bash] S3에 저장되어 있는 AWS FlowLogs 추출하는 Shell Script (0) | 2021.08.21 |
[CICD] Terraform을 통한 AWS 3 Tier 구성 및 CI/CD 파이프라인 배포 #5 - CodeDeploy를 통한 ASG Blue-Green 배포 (2) | 2021.08.11 |
[CICD] Terraform을 통한 AWS 3 Tier 구성 및 CI/CD 파이프라인 배포 #4 - Jenkins, Github 연동 및 Maven Build (0) | 2021.08.11 |