Github Action, Terraform Cloud, AWS EKS을 이용하여 Kubernetes Cluster 구축
![](https://private-user-images.githubusercontent.com/31979193/239145848-b6f33904-f39a-4b47-b6ec-cdf027669abf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NjQyOTIsIm5iZiI6MTcyMzc2Mzk5MiwicGF0aCI6Ii8zMTk3OTE5My8yMzkxNDU4NDgtYjZmMzM5MDQtZjM5YS00YjQ3LWI2ZWMtY2RmMDI3NjY5YWJmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIzMTk1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRiYzg3NDZkOTUxMjE4ZTUyYmUxMDUzNWZlZTIwYWM1ZjExMDZmYjNkMDhjZDdjMTI2MmNiMjhmY2QyYjU4ZDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.1CgAZZdR3ESQSGyXJt_uDISrebeYiv8Vl-tvSjVh8SU)
- Terraform 설치
- AWS CLI 설치 및 자격 증명
- Terraform Cloud 로컬 인증
- Terraform Cloud - API 기반 워크플로우 생성
- Terraform Cloud 토큰 생성
( Terrform Cloud > User Profil > User Setting > Tokens > 'Create an API token' )
Github Secrets에 생성한 Terraform Cloud 토큰 값 저장
참고 자료: https://docs.github.com/ko/actions/security-guides/encrypted-secrets
'Terraform Cloud - API 기반 워크플로우 생성' 시 설정한 조직 이름과 워크플로우 이름으로 수정
(해당 파일 위치: scripts/terraform.tf)
(생성 완료된 후) Terraform Cloud에서 region, cluster_name 값 확인 가능
aws eks --region $(terraform output -raw region) update-kubeconfig \
--name $(terraform output -raw cluster_name)
kubectl get pods --all-namespaces
![](https://private-user-images.githubusercontent.com/31979193/239145165-b158c5b3-2218-4e24-b742-550d3c2119cd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NjQyOTIsIm5iZiI6MTcyMzc2Mzk5MiwicGF0aCI6Ii8zMTk3OTE5My8yMzkxNDUxNjUtYjE1OGM1YjMtMjIxOC00ZTI0LWI3NDItNTUwZDNjMjExOWNkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIzMTk1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkwNDcyZWMwN2EwNGMxNGZiOTJiOWFmNjNlZGU0NzRjMDgxN2U2MGQ2MTlmYjAzNWY0YTk1ZGFiNTUwZDA3ZjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.iZRPmVww4A-NzTmCDRC-oC54TI7oouiC89xNyEKPn-k)
![](https://private-user-images.githubusercontent.com/31979193/239144726-08a6be2d-1e2d-4e44-8efa-61f334e770df.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NjQyOTIsIm5iZiI6MTcyMzc2Mzk5MiwicGF0aCI6Ii8zMTk3OTE5My8yMzkxNDQ3MjYtMDhhNmJlMmQtMWUyZC00ZTQ0LThlZmEtNjFmMzM0ZTc3MGRmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIzMTk1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVjYzRkZDZiMDc0ZWYxMzdkMWVlM2E4NDljMTU1Yjg3YjI4OTAyNjQ3MWU4N2IzZWQwNTBkOTc5NDcyOWY5NzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.M7Z5oo7PVYL_IL0injtPqGXFZ4Zc1kXENbcPeYdIndg)
- Terraform - AWS DOCUMENTATION
- https://developer.hashicorp.com/terraform/tutorials/kubernetes/eks#optional-configure-terraform-kubernetes-provider
- https://developer.hashicorp.com/terraform/tutorials/automation/github-actions
- https://developer.hashicorp.com/terraform/tutorials/cloud-get-started/cloud-destroy