Helm을 사용하여 AWS Load Balancer Controller 설치 - Amazon EKS

Helm을 사용하여 AWS Load Balancer Controller 설치

이 주제에서는 Kubernetes용 패키지 관리자인 Helm과 eksctl을 사용하여 AWS Load Balancer Controller를 설치하는 방법을 설명합니다. 컨트롤러는 기본 옵션으로 설치됩니다. 주석을 사용한 구성에 관한 세부 정보를 포함한 컨트롤러에 관한 자세한 내용은 GitHub의 AWS Load Balancer Controller 설명서를 참조하세요.

다음 단계에서 example values를 사용자의 값으로 교체합니다.

필수 조건

이 튜토리얼에서는 Amazon EKS 클러스터를 생성하고 관리할 때 필요한 다음 도구 및 리소스를 설치하고 구성해야 합니다.

  • Helm은 로컬에 설치됩니다.

1단계: eksctl을 사용하여 IAM 역할 생성

참고

AWS 계정당 AWS Load Balancer Controller의 IAM 역할 하나만 생성해야 합니다. IAM 콘솔AmazonEKSLoadBalancerControllerRole이 있는지 확인합니다. 이 역할이 있는 경우 2단계: AWS Load Balancer Controller 설치 단계로 건너뜁니다.

IAM 정책을 생성합니다.
  1. 사용자 대신 AWS API를 호출할 수 있는 AWS Load Balancer Controller의 IAM 정책을 다운로드합니다.

    AWS
    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json
    AWS GovCloud (US)
    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_us-gov.json
    $ mv iam_policy_us-gov.json iam_policy.json
  2. 이전 단계에서 다운로드한 정책을 사용하여 IAM 정책을 만듭니다.

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
    참고

    AWS Management Console에서 정책을 보는 경우 콘솔에 ELB 서비스에 대한 경고는 표시되지만 ELB v2 서비스에 대한 경고는 표시되지 않습니다. 이는 정책의 작업 중 일부가 ELB v2에는 있지만 ELB에는 없기 때문에 발생합니다. ELB에 대한 경고는 무시해도 됩니다.

eksctl을 사용하여 IAM 역할 생성
  • my-cluster를 사용자 클러스터 이름으로 바꾸고 111122223333을 계정 ID로 바꾼 다음 명령을 실행합니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

    $ eksctl create iamserviceaccount \ --cluster=my-cluster \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --role-name AmazonEKSLoadBalancerControllerRole \ --attach-policy-arn=arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --approve

2단계: AWS Load Balancer Controller 설치

Helm V3을 사용하여 AWS Load Balancer Controller 설치
  1. eks-charts 차트 Helm 리포지토리를 추가합니다. AWS에서는 이 리포지토리를 GitHub에 유지합니다.

    $ helm repo add eks https://aws.github.io/eks-charts
  2. 최신 차트가 적용되도록 로컬 리포지토리를 업데이트합니다.

    $ helm repo update eks
  3. AWS Load Balancer Controller를 설치합니다.

    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
    1. Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 대해 제한적인 액세스 권한이 있는 Amazon EC2 노드에 컨트롤러를 배포하거나 Fargate에 배포하는 경우, 다음 helm 명령에 다음 플래그를 추가합니다.

      • --set region=region-code

      • --set vpcId=vpc-xxxxxxxx

    2. 차트 Helm 및 로드 밸런서 컨트롤러의 사용 가능한 버전을 보려면 다음 명령을 사용합니다.

      helm search repo eks/aws-load-balancer-controller --versions
    중요

    배포된 차트는 보안 업데이트를 자동으로 수신하지 않습니다. 새 차트가 사용 가능해지면 수동으로 업그레이드해야 합니다. 업그레이드할 때는 이전 명령에서 installupgrade로 변경합니다.

    helm install 명령은 컨트롤러의 사용자 지정 리소스 정의(CRDs)를 자동으로 설치합니다. helm upgrade 명령은 설치하지 않습니다. helm upgrade,를 사용하는 경우 CRDs를 수동으로 설치해야 합니다. 다음 명령을 실행하여 CRDs를 설치합니다.

    wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml kubectl apply -f crds.yaml

3단계: 컨트롤러가 설치되어 있는지 확인

  1. 컨트롤러가 설치되어 있는지 확인합니다.

    $ 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 매니페스트를 사용하여 배포한 경우 복제본이 하나만 있습니다.

  2. 컨트롤러를 사용하여 AWS 리소스를 프로비저닝하기 전에 클러스터가 특정 요구 사항을 충족해야 합니다. 자세한 내용은 Amazon EKS 애플리케이션 로드 밸런싱Amazon EKS의 네트워크 로드 밸런싱 섹션을 참조하세요.