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 파일을 통해 배포되었다.

하나씩 보자면

Untitled

cluster endpoint는 public access로 구성되어 있고 addons도 추가 할 수 있다.

Untitled 1

그리고 var.KubernetesVersion을 통해 1.29로 배포되었다.

Untitled 2

irsa를 enable 시키고 나머지 구성은 managed node groups 설정이다.

Untitled 3

그리고 API 인증모드를 사용하기 위해 access entry 구성을 추가해 준다. (6주차 security 내용)

첫 번째 클러스터 생성

테라폼은 디렉토리별로 배포할 수 있기 때문에 소스 디렉토리로 이동해서 진행한다.

terraform init
terraform apply -auto-approve

Untitled 4

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로 클러스터를 확인해 본다.

Untitled 5

실제로 생성된 것인지 AWS 콘솔에서도 확인해 본다.

Untitled 6

두 번째 클러스터 생성

코드 재사용성을 테스트해 보기 위해 첫 번째 클러스터는 지우지 않고 테스트 진행한다. 대신 var 옵션을 통해 이름은 다르게 주어야 한다.

terraform init
terraform apply -auto-approve -var=ClusterBaseName=myeks2 -var=KubernetesVersion="1.28"

Untitled 7

마찬가지로 69개의 리소스가 추가되었다.

kubectl로 api server에 접근하기 위한 클러스터2의 kubeconfig를 업데이트해 주고

CLUSTER_NAME2=myeks2
aws eks update-kubeconfig --region ap-northeast-2 --name $CLUSTER_NAME2 --kubeconfig ./myeks2config

kubectl로 클러스터를 확인해 본다.

Untitled 8

마찬가지로 AWS 콘솔에서도 확인해 본다.

Untitled 9

동시에 같은 코드로 두 클러스터를 생성한 것을 확인할 수 있었다.

이제 삭제를 진행한다.

첫 번째 디렉토리 들어가서 첫 번째 클러스터 삭제

terraform destroy -auto-approve

두 번째 디렉토리 들어가서 두 번째 클러스터 삭제

terraform destroy -auto-approve -var=ClusterBaseName=myeks2 -var=KubernetesVersion="1.28"

여러 클러스터를 구축해야 할 때

테라폼 코드를 제대로 만들고

코드 재사용을 이용하면 반복적인 일을 줄이고

편리함을 가져갈 수 있다!

Categories:

Updated:

Leave a comment