Skip to content

ShimHyesu/KTB_TechSession

Repository files navigation

KTB_TechSession

2024.11.19_카카오테크 부트캠프 기술 세미나_클라우드 - EKS 설정법

관련된 기본 설명은 블로그에 작성해놓았으니, 보시고 실습 따라해보시길 바랍니다.

블로그 링크


실습 개요

본 실습에서는 Terraform과 eksctl을 활용하여 AWS EKS 클러스터를 구축하고, AWS Load Balancer Controller를 통해 NLB 및 ALB를 실습합니다.

실습 진행 단계

1. Terraform을 활용한 EKS 클러스터 구성

Terraform을 사용하여 VPC, 서브넷 등을 포함한 클러스터 네트워크를 자동으로 생성합니다.

image

2. eks-node-role 역할 생성

# 역할 생성
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

3. eks-cluster-config.yaml 파일 수정

  • vpc, subnet id
  • managedNodeGroups.iam.instanceRoleARN

4. 클러스터 생성

eksctl 설치 가이드를 참고

export $(grep -v '^#' .env | xargs) # .env 파일의 환경 변수를 현재 쉘 세션에 로드

envsubst < eks-cluster-config.yaml | eksctl create cluster -f - # envsubst를 사용하여 YAML 파일에서 환경 변수를 대체하고 eksctl로 클러스터를 생성

5. OIDC를 활성화하고, eksctl update addon 명령어를 사용하여 애드온을 업데이트

# 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 --force

6. helm 을 통한 AWS LB Controller 설치

helm 설치 가이드를 참고

# 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

7. NLB 실습

  • 콘솔에서 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씩 로드밸런싱 수행되는것 확인

8. ALB 실습

  • 콘솔에서 ALB 생성된것 확인
  • 해당 DNS로 접속 → 마리오 게임
kubectl apply -f service-alb.yaml

About

2024.11.19_카카오테크 부트캠프 기술 세미나_클라우드 - EKS 설정법

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages