이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
매니페스트를 사용하여 AWS Load Balancer Controller 설치
이 주제에서는 Kubernetes 매니페스트를 다운로드하고 적용하여 컨트롤러를 설치하는 방법을 설명합니다. GitHub에서 컨트롤러에 대한 전체 설명서
다음 단계에서
를 사용자의 값으로 교체합니다.example values
사전 조건
이 튜토리얼에서는 Amazon EKS 클러스터를 생성하고 관리할 때 필요한 다음 도구 및 리소스를 설치하고 구성해야 합니다.
-
기존 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 사용 설명서를 참조하세요.
1단계: IAM 구성
참고
AWS 계정당 AWS Load Balancer Controller의 역할 하나만 생성하기만 하면 됩니다. IAM 콘솔AmazonEKSLoadBalancerControllerRole
이 있는지 확인합니다. 이 역할이 있는 경우 2단계: cert-manager 설치 단계로 건너뜁니다.
IAM 정책을 생성합니다.
-
사용자 대신 AWS API를 호출할 수 있는 AWS Load Balancer Controller의 IAM 정책을 다운로드합니다.
-
이전 단계에서 다운로드한 정책을 사용하여 IAM 정책을 만듭니다.
$
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerIAMPolicy
\ --policy-document file://iam_policy.json참고
AWS Management Console에서 정책을 보는 경우 콘솔에 ELB 서비스에 대한 경고는 표시되지만 ELB v2 서비스에 대한 경고는 표시되지 않습니다. 이는 정책의 작업 중 일부가 ELB v2에는 있지만 ELB에는 없기 때문에 발생합니다. ELB에 대한 경고는 무시해도 됩니다.
2단계: cert-manager
설치
다음 방법 중 하나를 사용하여 cert-manager
를 설치한 다음 인증서 구성을 Webhook에 주입합니다. 자세한 내용은 cert-manager
설명서의 시작하기
quay.io
컨테이너 레지스트리를 사용하여 cert-manager
를 설치하는 것이 좋습니다. 노드가 quay.io
컨테이너 레지스트리에 액세스할 수 없는 경우 Amazon ECR을 사용하여 cert-manager
를 설치하세요(아래 참조).
3단계: AWS Load Balancer Controller 설치
Kubernetes 매니페스트를 사용하여 AWS Load Balancer Controller 설치
-
컨트롤러 사양을 다운로드합니다. 컨트롤러에 대한 자세한 내용은 GitHub에서 설명서
를 참조하세요. curl -Lo v2_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
-
파일에 대해 편집한 항목:
-
v2_7_2_full.yaml
파일을 다운로드 한 경우 다음 명령을 실행하여 매니페스트에서ServiceAccount
섹션을 제거합니다. 이 섹션을 제거하지 않으면 이전 단계에서 서비스 계정에 작성한 필수 주석이 덮어씌워집니다. 이 섹션을 제거하면 컨트롤러를 삭제할 경우 이전 단계에서 생성한 서비스 계정도 유지됩니다.$
sed -i.bak -e '612,620d' ./v2_7_2_full.yaml
다른 파일 버전을 다운로드한 경우 편집기에서 파일을 열고 다음 줄을 제거합니다.
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system ---
-
를 해당 클러스터 이름으로 바꿔 파일의my-cluster
Deployment
spec
섹션에 있는your-cluster-name
을 해당 클러스터의 이름으로 바꿉니다.$
sed -i.bak -e 's|your-cluster-name|
my-cluster
|' ./v2_7_2_full.yaml -
노드가 Amazon EKS Amazon ECR 이미지 리포지토리에 액세스할 수 없는 경우 다음 이미지를 가져와서 노드가 액세스할 수 있는 리포지토리로 푸시해야 합니다. 이미지를 가져오기, 태그 지정 및 자체 리포지토리로 푸시하는 방법에 대한 자세한 내용은 한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사 단원을 참조하세요.
public.ecr.aws/eks/aws-load-balancer-controller:v2.7.2
매니페스트에 레지스트리 이름을 추가합니다. 다음 명령은 개인 리포지토리의 이름이 원본 리포지토리와 같다고 가정하고 개인 레스트리의 이름을 파일에 추가합니다.
을 해당 레지스트리로 바꿉니다. 이 라인에서는 개인 리포지토리의 이름을 원본 리포지토리와 동일하게 지정했다고 가정합니다. 그렇지 않은 경우 개인 레지스트리 이름 뒤에 있는111122223333.dkr.ecr.
region-code
.amazonaws.comeks/aws-load-balancer-controller
텍스트를 해당 리포지토리 이름으로 바꿉니다.$
sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|
.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_7_2_full.yaml111122223333
.dkr.ecr.region-code
-
(Fargate 또는 제한된 IMDS에만 필요)
Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 대해 제한적인 액세스 권한이 있는
Amazon EC2 노드에 컨트롤러를 배포하거나 Fargate에 배포하는 경우, - args:
에서following parameters
를 추가합니다.[...] spec: containers: - args: - --cluster-name=
your-cluster-name
- --ingress-class=alb- --aws-vpc-id=
[...]vpc-xxxxxxxx
- --aws-region=region-code
-
-
파일을 적용합니다.
$
kubectl apply -f v2_7_2_full.yaml
-
IngressClass
및IngressClassParams
매니페스트를 클러스터에 다운로드합니다.$
curl -Lo v2_7_2_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_ingclass.yaml
-
매니페스트를 클러스터에 적용합니다.
$
kubectl apply -f v2_7_2_ingclass.yaml
4단계: 컨트롤러가 설치되어 있는지 확인
-
컨트롤러가 설치되어 있는지 확인합니다.
$
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 트래픽 라우팅 및 TCP 및 Network Load Balancers를 사용한 UDP 트래픽 라우팅 섹션을 참조하세요.