2024.11.19_카카오테크 부트캠프 기술 세미나_클라우드 - EKS 설정법
관련된 기본 설명은 블로그에 작성해놓았으니, 보시고 실습 따라해보시길 바랍니다.
본 실습에서는 Terraform과 eksctl을 활용하여 AWS EKS 클러스터를 구축하고, AWS Load Balancer Controller를 통해 NLB 및 ALB를 실습합니다.
Terraform을 사용하여 VPC, 서브넷 등을 포함한 클러스터 네트워크를 자동으로 생성합니다.
# 역할 생성
aws iam create-role --role-name eks-node-role --assume-role-policy-document file://trust-policy.json
# 정책 연결
aws iam attach-role-policy --role-name eks-node-role --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
aws iam attach-role-policy --role-name eks-node-role --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
aws iam attach-role-policy --role-name eks-node-role --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy- vpc, subnet id
- managedNodeGroups.iam.instanceRoleARN
eksctl 설치 가이드를 참고
export $(grep -v '^#' .env | xargs) # .env 파일의 환경 변수를 현재 쉘 세션에 로드
envsubst < eks-cluster-config.yaml | eksctl create cluster -f - # envsubst를 사용하여 YAML 파일에서 환경 변수를 대체하고 eksctl로 클러스터를 생성# OIDC 활성화
eksctl utils associate-iam-oidc-provider --cluster eks-cluster --region ap-northeast-2 --approve
# vpc-cni 애드온 업데이트
eksctl update addon --name vpc-cni --cluster eks-cluster --region ap-northeast-2 --forcehelm 설치 가이드를 참고
# Helm Chart Repository 추가 및 업데이트
helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
# Helm Chart - AWS Load Balancer Controller 설치
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
--namespace kube-system \
--set clusterName=${CLUSTER_NAME} \
--set serviceAccount.create=false \
--set region=${CLUSTER_REGION} \
--set vpcId=${CLUSTER_VPC} \
--set serviceAccount.name=aws-load-balancer-controller- 콘솔에서 NLB가 생성된 것 확인
- 등록된 대상 → Pod의 ip인것 확인
- 트래픽 확인
kubectl apply -f service-nlb.yaml# NLB 도메인 변수 선언
NLB=$(kubectl get svc svc-nlb-type -o jsonpath="{.status.loadBalancer.ingress[0].hostname}")
# 확인
echo $NLB
# 웹 접속 확인 (100회 - 카운팅)
for i in {1..100}; do curl -s $NLB | grep Hostname ; done | sort | uniq -c | sort -nr
## 약 5:5의 비율로 로드밸런싱 수행되는것 확인
# 파드 3대로 조정
kubectl scale deployment deploy-echo --replicas=3
# 웹 접속 확인 (100회 - 카운팅)
for i in {1..100}; do curl -s $NLB | grep Hostname ; done | sort | uniq -c | sort -nr
## 1/3씩 로드밸런싱 수행되는것 확인- 콘솔에서 ALB 생성된것 확인
- 해당 DNS로 접속 → 마리오 게임
kubectl apply -f service-alb.yaml