AWS Load Balancer Controller 추가 기능 설치
중요
버전 2.5 이상에서는 AWS Load Balancer Controller이(가) type: LoadBalancer
와(과) 함께 Kubernetes 서비스 리소스의 기본 컨트롤러가 되며 각 서비스에 대한 AWS Network Load Balancer(NLB)를 만듭니다. 이는 서비스에 대한 변형 웹훅을 만들어 이를 수행하며, 이는 type:
LoadBalancer
의 새 서비스에 대한 spec.loadBalancerClass
필드를 service.k8s.aws/nlb
(으)로 설정합니다. 차트 Helm 값을 enableServiceMutatorWebhook
에서 false
(으)로 설정하여 이 기능을 끄고 레거시 클라우드 공급자
AWS Load Balancer Controller는 Kubernetes 클러스터의 AWS Elastic Load Balancer를 관리합니다. 이 컨트롤러는 다음 리소스를 프로비저닝합니다.
- Kubernetes
Ingress
-
Kubernetes
Ingress
을(를) 생성할 때 AWS Load Balancer Controller은(는) AWS Application Load Balancer(ALB)를 생성합니다. LoadBalancer
유형의 Kubernetes 서비스-
LoadBalancer
유형의 Kubernetes 서비스를 생성할 때 AWS Load Balancer Controller은(는) AWS Network Load Balancer(NLB)를 생성합니다. 과거에는 인스턴스 대상에 대해 Kubernetes Network Load Balancer를 사용했지만 IP 대상에 대해서는 AWS Load Balancer Controller를 사용했습니다. AWS Load Balancer Controller 버전2.3.0
이상에서 대상 유형 중 하나를 사용하여 NLB를 생성할 수 있습니다. NLB 대상 유형에 대한 자세한 내용은 Network Load Balancer 사용 설명서에서 대상 유형을 참조하세요.
AWS Load Balancer Controller의 이전 이름은 AWS ALB Ingress Controller였습니다. GitHub에서 관리되는 오픈 소스 프로젝트
이 주제에서는 기본 옵션을 사용하여 컨트롤러를 설치하는 방법을 설명합니다. GitHub에서 컨트롤러에 대한 전체 설명서
필수 조건
-
기존 Amazon EKS 클러스터. 배포하려면 Amazon EKS 시작하기 섹션을 참조하세요.
-
클러스터에 대한 기존 AWS Identity and Access Management(IAM) OpenID Connect(OIDC) 제공업체입니다. 이미 있는지 아니면 생성해야 하는지 확인하려면 클러스터의 IAM OIDC 제공업체 생성 부분을 참조하세요.
-
Amazon VPC CNI plugin for Kubernetes,
kube-proxy
및 CoreDNS 추가 기능이 서비스 계정 토큰에 나열된 최소 버전인지 확인합니다. -
AWS Elastic Load Balancing을 숙지합니다. 자세한 내용은 Elastic Load Balancing 사용 설명서를 참조하세요.
Amazon EKS 클러스터에 AWS Load Balancer Controller 배포
다음 단계에서
를 사용자의 값으로 교체합니다.example
values
-
IAM 정책을 생성합니다.
-
사용자 대신 AWS API를 호출할 수 있는 AWS Load Balancer Controller의 IAM 정책을 다운로드합니다.
-
AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전
$
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy_us-gov.json
-
기타 모든 AWS 리전
$
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json
-
-
이전 단계에서 다운로드한 정책을 사용하여 IAM 정책을 만듭니다.
iam_policy_us-gov.json
을 다운로드한 경우iam_policy.json
을iam_policy_us-gov.json
으로 변경한 명령을 실행합니다.$
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerIAMPolicy
\ --policy-document file://iam_policy.json참고
AWS Management Console에서 정책을 보는 경우 콘솔에 ELB 서비스에 대한 경고는 표시되지만 ELB v2 서비스에 대한 경고는 표시되지 않습니다. 이는 정책의 작업 중 일부가 ELB v2에는 있지만 ELB에는 없기 때문에 발생합니다. ELB에 대한 경고는 무시해도 됩니다.
-
-
IAM 역할 생성. AWS Load Balancer Controller의
kube-system
네임스페이스에aws-load-balancer-controller
라는 Kubernetes 서비스 계정을 생성하고 IAM 역할의 이름으로 Kubernetes 서비스 계정에 주석을 답니다.eksctl
또는 AWS CLI 및kubectl
을 사용하여 IAM 역할 및 Kubernetes 서비스 계정을 생성할 수 있습니다. (선택 사항) Kubernetes 서비스 계정에서 사용하는 AWS Security Token Service 엔드포인트 유형을 구성합니다. 자세한 내용은 서비스 계정의 AWS Security Token Service 엔드포인트 구성 섹션을 참조하세요.
현재 Kubernetes용 AWS ALB 수신 컨트롤러가 설치되지 않거나 현재 Helm과 함께 AWS Load Balancer Controller의
0.1.x
버전이 설치되지 않은 경우 다음 단계로 넘어갑니다.AWS ALB Ingress Controller 또는 AWS Load Balancer Controller의
0.1.x
버전을 제거합니다(Helm과 함께 설치된 경우에만). 원래 설치한 도구를 사용하여 절차를 완료합니다. AWS Load Balancer Controller가 Kubernetes용 AWS ALB 수신 컨트롤러의 기능을 대신합니다.-
Helm V3 이상을 사용하거나 Kubernetes 매니페스트를 적용하여 AWS Load Balancer Controller를 설치합니다. Fargate에서 컨트롤러를 배포하려면 Helm 절차를 사용하세요. Helm 절차에서는 자체 서명된 인증서를 생성하기 때문에
cert-manager
에 의존하지 않습니다. -
컨트롤러가 설치되어 있는지 확인합니다.
$
kubectl get deployment -n kube-system aws-load-balancer-controller
예제 출력은 다음과 같습니다.
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Helm을 사용하여 배포한 경우 이전 출력이 표시됩니다. Kubernetes 매니페스트를 사용하여 배포한 경우 복제본이 하나만 있습니다.
-
컨트롤러를 사용하여 AWS 리소스를 프로비저닝하기 전에 클러스터가 특정 요구 사항을 충족해야 합니다. 자세한 내용은 Amazon EKS 애플리케이션 로드 밸런싱 및 Amazon EKS의 네트워크 로드 밸런싱 섹션을 참조하세요.