더 이상 사용되지 않는 AWSIngress Controller에서 앱 이전 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

더 이상 사용되지 않는 AWSIngress Controller에서 앱 이전

이 주제에서는 사용되지 않는 컨트롤러 버전에서 마이그레이션하는 방법을 설명합니다. 보다 구체적으로 AWS Load Balancer Controller의 사용되지 않는 버전을 제거하는 방법을 설명합니다.

  • 사용되지 않는 버전은 업그레이드할 수 없습니다. 먼저 제거한 다음, 최신 버전을 설치해야 합니다.

  • 사용되지 않는 버전은 다음과 같습니다.

    • AWS ALB Ingress Controller for Kubernetes("Ingress Controller"), 이전 AWS Load Balancer Controller.

    • AWS Load Balancer Controller의 모든 0.1.x 버전

더 이상 사용되지 않는 컨트롤러 버전 제거

참고

Helm을 사용하거나 Kubernetes 매니페스트를 사용하여 수동으로 사용되지 않는 버전을 설치했을 수 있습니다. 원래 설치한 도구를 사용하여 절차를 완료합니다.

Helm을 사용하여 Ingress Controller 제거
  1. incubator/aws-alb-ingress-controller 차트 Helm이 설치된 경우 제거합니다.

    $ helm delete aws-alb-ingress-controller -n kube-system
  2. eks-charts/aws-load-balancer-controller 차트의 버전 0.1.x이 설치된 경우 제거합니다. 버전 0.1.x에서 1.0.0으로의 업그레이드는 웹후크 API 버전과 호환되지 않아 작동되지 않습니다.

    $ helm delete aws-load-balancer-controller -n kube-system
Kubernetes 매니페스트를 사용하여 Ingress Controller 제거
  1. 이 컨트롤러가 현재 설치되어 있는지 확인합니다.

    $ kubectl get deployment -n kube-system alb-ingress-controller

    컨트롤러가 설치되어 있지 않은 경우의 출력입니다.

    서버에서 발생한 오류(찾을 수 없음): deployments.apps "alb-ingress-controller"를 찾을 수 없음

    컨트롤러가 설치된 경우의 출력입니다.

    NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
  2. 다음 명령을 입력하여 컨트롤러를 제거합니다.

    $ kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml

AWS Load Balancer Controller으로 마이그레이션

ALB Ingress Controller for Kubernetes에서 AWS Load Balancer Controller로 마이그레이션하려면 다음을 수행해야 합니다.

  1. ALB Ingress Controller를 제거합니다(위 내용 참조).

  2. AWS Load Balancer Controller를 설치합니다.

  3. AWS Load Balancer Controller에서 사용하는 IAM 역할에 정책을 더 추가합니다. 이 정책은 LBC가 ALB Ingress Controller for Kubernetes에서 생성한 리소스를 관리할 수 있도록 허용합니다.

AWS Load Balancer Controller IAM 역할에 마이그레이션 정책을 추가합니다.
  1. IAM 정책을 다운로드합니다. 이 정책을 통해 AWS Load Balancer Controller가 ALB Ingress Controller for Kubernetes에서 생성한 리소스를 관리할 수 있습니다. 정책을 볼 수도 있습니다.

    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_v1_to_v2_additional.json
  2. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다..

    $ sed -i.bak -e 's|arn:aws:|arn:aws-us-gov:|' iam_policy_v1_to_v2_additional.json
  3. IAM 정책을 생성하고 반환된 ARN 적어둡니다.

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \ --policy-document file://iam_policy_v1_to_v2_additional.json
  4. AWS Load Balancer Controller에서 사용하는 IAM 역할에 IAM 정책을 연결합니다. your-role-name을 역할의 이름(예: AmazonEKSLoadBalancerControllerRole)으로 바꿉니다.

    eksctl을 사용하여 역할을 생성한 경우 생성된 역할 이름을 찾으려면 AWS CloudFormation 콘솔을 열고 eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller 스택을 선택합니다. 리소스(Resources) 탭을 선택합니다. 실제 ID(Physical ID) 열에 역할 이름이 있습니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

    $ aws iam attach-role-policy \ --role-name your-role-name \ --policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy