Helm으로 AWS Load Balancer Controller 설치
Helm으로 AWS Load Balancer Controller 설치
팁
Amazon EKS Auto Mode에서는 네트워킹 추가 기능을 설치하거나 업그레이드할 필요가 없습니다. Auto Mode에는 Pod 네트워킹과 로드 밸런싱 기능이 포함됩니다. 자세한 내용은 EKS Auto Mode로 클러스터 인프라 자동화를 참조하세요.
이 주제에서는 Kubernetes용 패키지 관리자인 Helm과 eksctl을 사용해 AWS Load Balancer Controller를 설치하는 방법을 설명합니다. 컨트롤러는 기본 옵션으로 설치됩니다. 주석으로 구성하는 방법을 포함한 컨트롤러에 대한 자세한 내용은 GitHub의 AWS Load Balancer Controller 문서를 참조하세요.
다음 단계에서는 예시 값을 사용자의 값으로 바꾸세요.
출처: 문서
본문
사전 요구 사항
이 튜토리얼을 시작하기 전에 다음 단계를 완료해야 합니다.
- Amazon EKS 클러스터를 만듭니다. 만들려면 Amazon EKS 시작하기(Get started with Amazon EKS)를 참조하세요.
- Amazon EKS 클러스터에 Gateway API CRD를 설치합니다.
- 로컬 머신에 Helm을 설치합니다.
- Amazon VPC CNI 플러그인 for Kubernetes,
kube-proxy, CoreDNS 추가 기능이 서비스 계정 토큰(Service account tokens)에 나열된 최소 버전 이상인지 확인합니다. - AWS Elastic Load Balancing 개념을 학습합니다. 자세한 내용은 Elastic Load Balancing User Guide를 참조하세요.
- Kubernetes 서비스 및 인그레스 리소스에 대해 학습합니다.
고려 사항
이 페이지의 구성 단계를 진행하기 전에 다음을 고려하세요.
- IAM 정책과 역할(
AmazonEKSLoadBalancerControllerRole)은 같은 AWS 계정의 여러 EKS 클러스터에서 재사용할 수 있습니다. - 역할(
AmazonEKSLoadBalancerControllerRole)이 원래 생성된 것과 같은 클러스터에 컨트롤러를 설치한다면 역할 존재를 확인한 뒤 2단계: Load Balancer Controller 설치로 이동하세요. - IAM Roles for Service Accounts(IRSA)를 사용한다면 IRSA는 각 클러스터에 대해 설정되어야 하며, 역할의 신뢰 정책에 있는 OpenID Connect(OIDC) 공급자 ARN은 각 EKS 클러스터마다 고유합니다. 또한 기존
AmazonEKSLoadBalancerControllerRole이 있는 새 클러스터에 컨트롤러를 설치한다면 역할의 신뢰 정책을 업데이트해 새 클러스터의 OIDC 공급자를 포함하고 적절한 역할 주석이 있는 새 서비스 계정을 만들어야 합니다. OIDC 공급자가 이미 있는지 확인하거나 만들려면 클러스터용 IAM OIDC 공급자 생성을 참조하세요.
1단계: eksctl로 IAM 역할 생성
다음 단계는 AWS Load Balancer Controller v2.14.1 릴리스 버전을 기준으로 합니다. 모든 릴리스에 대한 자세한 내용은 GitHub의 AWS Load Balancer Controller Release Page를 참조하세요.
AWS Load Balancer Controller가 사용자 대신 AWS API 호출을 할 수 있게 하는 IAM 정책을 다운로드합니다.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json
Gov(정부)나 China 리전 같은 비표준 AWS 파티션에 있다면 GitHub의 정책을 검토하고 리전에 맞는 적절한 정책을 다운로드하세요.
이전 단계에서 다운로드한 정책을 사용해 IAM 정책을 만듭니다.
aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.json
참고
AWS Management Console에서 정책을 보면 콘솔은 ELB v2 서비스가 아니라 ELB 서비스에 대해 경고를 표시합니다. 이는 정책의 일부 작업이 ELB에는 없고 ELB v2에만 존재하기 때문입니다. ELB에 대한 경고는 무시할 수 있습니다.
클러스터 이름, 리전 코드, 계정 ID의 값을 바꿉니다.
eksctl create iamserviceaccount \
--cluster= \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam:::policy/AWSLoadBalancerControllerIAMPolicy \
--override-existing-serviceaccounts \
--region \
--approve
2단계: AWS Load Balancer Controller 설치
eks-charts Helm 차트 저장소를 추가합니다. AWS가 이 저장소를 GitHub에서 관리합니다.
helm repo add eks https://aws.github.io/eks-charts
최신 차트를 갖도록 로컬 저장소를 업데이트합니다.
helm repo update eks
AWS Load Balancer Controller를 설치합니다.
Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 대한 액세스가 제한된 Amazon EC2 노드에 컨트롤러를 배포하거나, Fargate 또는 Amazon EKS Hybrid Nodes에 배포한다면 다음 helm 명령에 다음 플래그를 추가하세요.
--set region=region-code--set vpcId=vpc-xxxxxxxx
my-cluster를 클러스터 이름으로 바꿉니다. 다음 명령에서 aws-load-balancer-controller는 이전 단계에서 만든 Kubernetes 서비스 계정입니다.
helm 차트 구성에 대한 자세한 내용은 GitHub의 values.yaml을 참조하세요.
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=my-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--version 1.14.0
중요
배포된 차트는 자동으로 보안 업데이트를 받지 않습니다. 새 차트가 제공되면 수동으로 업그레이드해야 합니다. 업그레이드할 때 이전 명령에서
install을upgrade로 바꾸세요.
helm install 명령은 컨트롤러용 사용자 지정 리소스 정의(CRD)를 자동으로 설치합니다. helm upgrade 명령은 그렇지 않습니다. helm upgrade를 사용한다면 CRD를 수동으로 설치해야 합니다. CRD를 설치하려면 다음 명령을 실행합니다.
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml
3단계: 컨트롤러 설치 확인
컨트롤러가 설치되었는지 확인합니다.
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 리소스를 프로비저닝하기 전에 클러스터가 특정 요구 사항을 충족해야 합니다. 자세한 내용은 Application Load Balancers로 애플리케이션 및 HTTP 트래픽 라우팅과 Network Load Balancers로 TCP 및 UDP 트래픽 라우팅을 참조하세요.