반응형
참고 문서
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/lbc-helm.html
사전 준비
0-1. ALB가 생성될 Public 서브넷에 태그 추가

0-2. EC2 메타데이터 설정
- ALB Controller를 설치해주기 위해서는 먼저 ALB Controller가 설치될 EC2 인스턴스의 메타데이터에 접근이 가능 해야합니다.
- 따라서 EC2 메타데이터에 접근 할 수 있도록 설정을 해줍니다.
- 저 같은 경우는 Terraform을 사용해서 EC2 노드 그룹을 생성해서 아래와 같이 설정을 해주었습니다.
resource "aws_launch_template" "dev_outcode_cpu_lt" {
name_prefix = "dev-outcode-cpu-lt-"
instance_type = "t3.medium"
block_device_mappings {
device_name = "/dev/sdf"
ebs {
volume_size = 100
}
}
# 여기 부분에서 http_token을 optional로, http_put_response_hop_limit 값을 2로 변경해주었습니다.
metadata_options {
http_tokens = "optional"
http_put_response_hop_limit = 2
http_endpoint = "enabled"
}
tag_specifications {
resource_type = "instance"
tags = {
"Name" = "dev-outcode-cpu-node"
}
}
}
1. iam 역할 생성
- 사용자 대신 AWS API를 직접 호출할 수 있는 AWS 로드 밸런서 컨트롤러의 IAM 정책을 다운로드
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.12.0/docs/install/iam_policy.json
- 다운로드한 정책을 사용하여 IAM 정책을 만듭니다.
aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.json
- ALB Controller는 IAM 권한이 필요한데, 이를 IRSA 방식으로 제공하려면 OIDC Provider가 필요합니다. 따라서 아래 명령어는 그 전제 조건을 충족시키기 위한 필수 단계입니다.
eksctl utils associate-iam-oidc-provider \
--region <region> \ # EKS 클러스터가 존재하는 리전
--cluster <eks-cluster-name> \ # EKS 클러스터 명
--approve
- iamserviceaccount 생성
eksctl create iamserviceaccount \
--cluster=<eks-cluster-name> \ # EKS 클러스터 이름 넣어줄 것
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \ # 내 AWS_ACCOUNT_ID 넣어줄 것
--override-existing-serviceaccounts \
--region <클러스터가 존재하는 리전> \
--approve
2. AWS Application LoadBalancer Controller 설치
- eks-charts 차트 Helm 리포지토리를 추가
helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
- AWS 로드 밸런서 컨트롤러를 설치합니다.
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=<eks-cluster-name> \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
위 과정을 거치면 ALB Controller 설치가 완료 됩니다.
ALB Controller를 재 생성할 때 문제를 겪은 적이 있어서 해결 방법도 같이 적어보도록 하겠습니다.
3. EKS Cluster 재 생성 시, ALB Controller 재설치하는 방법
문제 상황:
EKS Cluster를 삭제하고 재 생성한 후에 ALB Controller를 설치하려고 하는데, iamserviceaccount가 이미 존재한다고 나오면서 eks 클러스터의 serviceaccount가 생성이 안되는 상황
해결 방안:
CloudFormation stack에 존재하는 iamserviceaccount 삭제 후 재 생성
- eksctl 을 사용하여 삭제 진행
eksctl delete iamserviceaccount --cluster <eks-cluster 이름> --name aws-load-balancer-controller --namespace kube-system
- eksctl 을 사용하여 iamserviceaccount 재 생성
eksctl create iamserviceaccount \
--cluster=<eks-cluster-name> \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \
--override-existing-serviceaccounts \
--region ap-northeast-1 \
--approve
- 그리고 aws-load-balancer-controller 설치
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=<eks-Cluster-name> \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
반응형
'AWS' 카테고리의 다른 글
EKS 노드에서 생성할 수 있는 POD 개수 제한 해제 (0) | 2025.06.17 |
---|---|
AWS Secret Manager 에서 생성한 Secret을 EKS 에서 사용하기 (0) | 2025.06.04 |
AWS - (RDS - EC2연결, S3, ALB 사용, CloudFront) (1) | 2024.03.20 |
AWS VPC 피어링 연결 및 람다 (0) | 2024.03.19 |
EKS에 외부 클러스터 등록 (0) | 2024.03.17 |