[Project] Terraform으로 EKS에 3-tier architecture 구성 (with Pipeline)
1. 목표
- Terraform을 통해 EKS, K8S 환경까지 Infra as Code 구성
- Jenkins, Gitlab Pipeline을 구성하여 CICD 자동화
- K8S 환경에 WEB, WAS, DB의 3-tier Architecture 구성
2. Architecture
3. Blocker
1. eks cluster 내에 생성된 k8s 자원을 인식하지 못하는 문제
-> terraform registry 설정 오류
2. kubernetes ingress에서 alb를 생성하지 않는 문제
-> eks oidc 권한 설정 및 aws-load-balancer 설치를 통한 aws와 kubernetes 연동
3. infra pipeline 실행(terraform apply) 시 pipeline을 실행하는 서버가 변경되고 중지되면서 pipeline 자체가 멈추는 문제
-> terraform lifecycle에서 ignore_changes = all을 통해 해당 resource의 변화를 무시
4. pipeline 서버 사이트에 접근할 수 없는 없음 문제
-> security group 열어줌
5. kubectl apply에서 deployment에 imagePullPolicy: always를 설정하더라도 최신 이미지를 가져오지 않는 문제 (tag 변경이 없음)
-> 기존 deployment를 제거하는 방식으로 해결했지만, 제거된 후 자원이 새로 생성되기 전까지는 서비스 중단이 일어나므로 미봉책임, tag에 versioning을 하는 것이 정석으로 보임 (imagePullPolicy always는 원래 최신의 이미지를 항상 가져오는 설정이 아님)