[AEKS2] 8주차 - EKS IaC: Terraform
EKS는 테라폼으로도 배포할 수 있다.
테라폼 기초 공부는 작년 9-10월 간 T101 스터디로 진행하였다!
그래서 바로 클러스터를 생성해 보겠다.
실습 환경은 윈도우에서 WSL2를 설치해 vscode로 진행하였다.
우선 git clone으로 소스를 받고 시작한다.
테라폼 코드
아래 주소를 통해 실습을 진행했다.
https://github.com/gasida/aews-cicd.git
테라폼 코드로 생성한 자원은 VPC 1, Subnet 6, Internet Gateway 1, NAT Gateway 1, Routing Table 6, EKS, EKS SG, IRSA, 그 밖에 필요한 Role 또는 Policy를 생성하였다.
그리고 모든 자원은 variable 파일을 통해 배포되었다.
하나씩 보자면
cluster endpoint는 public access로 구성되어 있고 addons도 추가 할 수 있다.
그리고 var.KubernetesVersion을 통해 1.29로 배포되었다.
irsa를 enable 시키고 나머지 구성은 managed node groups 설정이다.
그리고 API 인증모드를 사용하기 위해 access entry 구성을 추가해 준다. (6주차 security 내용)
첫 번째 클러스터 생성
테라폼은 디렉토리별로 배포할 수 있기 때문에 소스 디렉토리로 이동해서 진행한다.
terraform init
terraform apply -auto-approve
69개의 리소스가 추가되었다.
kubectl로 api server에 접근하기 위한 kubeconfig를 업데이트해 주고
CLUSTER_NAME=myeks
aws eks update-kubeconfig --region ap-northeast-2 --name $CLUSTER_NAME
kubectl config rename-context "arn:aws:eks:ap-northeast-2:$(aws sts get-caller-identity --query 'Account' --output text):cluster/$CLUSTER_NAME" "Aews-Labs"
kubectl로 클러스터를 확인해 본다.
실제로 생성된 것인지 AWS 콘솔에서도 확인해 본다.
두 번째 클러스터 생성
코드 재사용성을 테스트해 보기 위해 첫 번째 클러스터는 지우지 않고 테스트 진행한다. 대신 var 옵션을 통해 이름은 다르게 주어야 한다.
terraform init
terraform apply -auto-approve -var=ClusterBaseName=myeks2 -var=KubernetesVersion="1.28"
마찬가지로 69개의 리소스가 추가되었다.
kubectl로 api server에 접근하기 위한 클러스터2의 kubeconfig를 업데이트해 주고
CLUSTER_NAME2=myeks2
aws eks update-kubeconfig --region ap-northeast-2 --name $CLUSTER_NAME2 --kubeconfig ./myeks2config
kubectl로 클러스터를 확인해 본다.
마찬가지로 AWS 콘솔에서도 확인해 본다.
동시에 같은 코드로 두 클러스터를 생성한 것을 확인할 수 있었다.
이제 삭제를 진행한다.
첫 번째 디렉토리 들어가서 첫 번째 클러스터 삭제
terraform destroy -auto-approve
두 번째 디렉토리 들어가서 두 번째 클러스터 삭제
terraform destroy -auto-approve -var=ClusterBaseName=myeks2 -var=KubernetesVersion="1.28"
여러 클러스터를 구축해야 할 때
테라폼 코드를 제대로 만들고
코드 재사용을 이용하면 반복적인 일을 줄이고
편리함을 가져갈 수 있다!
Leave a comment