지원 중단된 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로 마이그레이션하려면 다음이 필요합니다.
- ALB Ingress Controller를 제거합니다(위 참조).
- AWS Load Balancer Controller를 설치합니다.
- 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