지원 중단된 ALB Ingress Controller에서 앱 마이그레이션

지원 중단된 ALB Ingress Controller에서 앱 마이그레이션

이 주제는 지원 중단된 컨트롤러 버전에서 마이그레이션하는 방법을 설명합니다. 더 구체적으로는 지원 중단된 버전의 AWS Load Balancer Controller를 제거하는 방법을 설명합니다.

지원 중단된 버전은 업그레이드할 수 없습니다. 먼저 제거한 뒤 현재 버전을 설치해야 합니다.

지원 중단된 버전에는 다음이 포함됩니다.

  • AWS Load Balancer Controller의 전신인 AWS ALB Ingress Controller for Kubernetes("Ingress Controller")
  • AWS Load Balancer Controller의 0.1.x 버전

출처: 문서

본문

지원 중단된 컨트롤러 버전 제거

참고

지원 중단된 버전을 Helm이나 Kubernetes 매니페스트로 수동 설치했을 수 있습니다. 원래 설치했던 도구를 사용해 절차를 완료하세요.

incubator/aws-alb-ingress-controller Helm 차트를 설치했다면 제거합니다.

helm delete aws-alb-ingress-controller -n kube-system

eks-charts/aws-load-balancer-controller 차트의 0.1.x 버전이 설치되어 있다면 제거합니다. 0.1.x에서 버전 1.0.0으로의 업그레이드는 webhook API 버전과의 비호환성 때문에 동작하지 않습니다.

helm delete aws-load-balancer-controller -n kube-system

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

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

컨트롤러가 설치되어 있지 않으면 다음 출력입니다.

Error from server (NotFound): deployments.apps "alb-ingress-controller" not found

컨트롤러가 설치되어 있으면 다음 출력입니다.

NAME                   READY UP-TO-DATE AVAILABLE AGE
alb-ingress-controller 1/1   1          1         122d

컨트롤러를 제거하려면 다음 명령을 입력합니다.

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로 마이그레이션

Kubernetes용 ALB Ingress Controller에서 AWS Load Balancer Controller로 마이그레이션하려면 다음이 필요합니다.

  1. ALB Ingress Controller를 제거합니다(위 참조).
  2. AWS Load Balancer Controller를 설치합니다.
  3. AWS Load Balancer Controller가 사용하는 IAM 역할에 추가 정책을 추가합니다. 이 정책은 LBC가 Kubernetes용 ALB Ingress Controller가 만든 리소스를 관리할 수 있게 합니다.

IAM 정책을 다운로드합니다. 이 정책은 AWS Load Balancer Controller가 Kubernetes용 ALB Ingress Controller가 만든 리소스를 관리할 수 있게 합니다. 정책을 볼 수도 있습니다.

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy_v1_to_v2_additional.json

클러스터가 AWS GovCloud(US-East) 또는 AWS GovCloud(US-West) 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

IAM 정책을 만들고 반환된 ARN을 기록해 둡니다.

aws iam create-policy \
  --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \
  --policy-document file://iam_policy_v1_to_v2_additional.json

IAM 정책을 AWS Load Balancer Controller가 사용하는 IAM 역할에 연결합니다. your-role-name을 역할 이름(예: AmazonEKSLoadBalancerControllerRole)으로 바꿉니다.

eksctl로 역할을 만들었다면 만들어진 역할 이름을 찾으려면 AWS CloudFormation 콘솔을 열고 eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller 스택을 선택합니다. Resources 탭을 선택합니다. 역할 이름은 Physical ID 열에 있습니다.

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

더 알아보기 (Learn more)