EKS cluster 배포

Hyun-Sung Kim·2025년 1월 3일

Kubernetes

목록 보기
2/24
post-thumbnail

Amazon EKS Cluster를 배포하는 방법은 크게 3가지가 있습니다.

  • EKS console
  • eksctl
  • IaC (Terraform, Cloud Formation 등)

여기서는 'eksctl' 명령어로 배포하는 방법을 설명합니다.

< AWS 공식 기술문서 >


1. EKS Cluster

1.1) EKS Cluster 생성

eksctl create cluster --name YOUR_CLUSTER_NAME --version 1.21 --vpc-cidr

{옵션}

  • --fargate : Nodegroup이 아닌 fargate 모드로 'coredns' 리소스가 자동으로 배포됨
  • --vpc-cidr : VPC ip 대역 변경
     

1.2) 클러스터가 서비스 계정에 AWS Identity and Access Management(IAM)를 사용하도록 허용

eksctl utils associate-iam-oidc-provider --cluster YOUR_CLUSTER_NAME --approve

※ Fargate는 EC2 노드를 사용하지 않기 때문에, Pod가 AWS 리소스(Cost Explorer, S3, EC2 등)를 액세스하려면 IAM Role for ServiceAccount를 활용해야 합니다.
Fargate 모드를 사용할 경우, 이 과정을 통해 Fargate의 Pod가 적절한 IAM 권한을 가지도록 설정해야 합니다.


2. Load Balancer Controller

2.1) AWS Load Balancer Controller에서 사용자 대신 AWS API를 호출하는 것을 허용하는 IAM 정책을 다운로드

curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy.json

2.2) 위에서 다운로드한 정책을 사용하여 IAM 정책을 생성

aws iam create-policy --policy-name AWSLoadBalancerControllerIAMPolicy --policy-document file://iam_policy.json

2.3) kube-system 네임스페이스에 AWS LB Controller에 대한 aws-load-balancer-controller라는 이름의 서비스 계정을 생성
* (이 service 계정은 K8S의 service 계정입니다.)

eksctl create iamserviceaccount --cluster=YOUR_CLUSTER_NAME --namespace=kube-system --name=aws-load-balancer-controller --attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy --override-existing-serviceaccounts --approve

2.4) 새 서비스 역할이 생성되었는지 확인

eksctl get iamserviceaccount --cluster YOUR_CLUSTER_NAME --name aws-load-balancer-controller --namespace kube-system

2.5) AWS LB Controller 추가 기능 설치

  1. Helm에 Amazon EKS 차트 리포지토리를 추가

    helm repo add eks https://aws.github.io/eks-charts

  1. TargetGroupBinding 사용자 지정 리소스 정의(CRD)를 설치

    kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master"

  1. Helm 차트를 이용하여, LB Controller를 설치

    명령 구문

    helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
     		--set clusterName=YOUR_CLUSTER_NAME \
     		--set serviceAccount.create=false \
     		--set region=YOUR_REGION_CODE \
     		--set vpcId=<VPC_ID> \
     		--set serviceAccount.name=aws-load-balancer-controller \
     		-n kube-system

※ 잘못 만들었을 경우, helm으로 LB 컨트롤러 삭제하고 다시 만듭니다.

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


※ Helm repo update

※ 위 명령어 실패 시, Helm에 추가한 EKS 차트 레포지토리 확인

helm search repo | findstr aws-load-balancer-controller

'eks' repo가 corrupt됐거나 missing인 경우, 아래와 같이 repository를 업데이트하거나 재 설치합니다.

helm repo update

profile
Cloud Engineer

0개의 댓글