# ๐ Terraform Modular EKS + Istio โ The Part Nobody Explains
์์ง๋์ด๊ฐ Terraform์ ์คํฌ๋ฆฝํธ ์คํ ๋ชจ๋ธ์์ ์์กด์ฑ ๊ทธ๋ํ ๊ธฐ๋ฐ ์์คํ ์ค๊ณ ๋๊ตฌ๋ก ์ธ์ ์ ํํ์ฌ ๋ชจ๋ํ๋ EKS + Istio ์ธํ๋ผ ์๋ํ ์ค๊ณ
AI ์์ฝ
Context
Terraform ๋ชจ๋ํ ์ด๊ธฐ ๋จ๊ณ์์ ์ฝ๋์ ํด๋ ๊ตฌ์กฐ๋ ์ ์์ด์์ผ๋ ๋ฆฌ์์ค ์์ฑ ์์๊ฐ ์์๊ณผ ๋ฌ๋์ผ๋ฉฐ ์์กด์ฑ์ด ๋ช ์์ ์ด์ง ์์ ๋๋ฒ๊น ์ด ๋ณต์กํ๋ค. ์ด๋ Terraform์ ์ ํ ์คํฌ๋ฆฝํธ ์คํ ๋ชจ๋ธ๋ก ์๋ชป ์ดํดํ ๋ฐ์ ๋น๋กฏ๋์๋ค.
Technical Solution
- Terraform์ ์คํ ๋ชจ๋ธ์ ์ ํ ํ๋ฆ์์ ์์กด์ฑ ๊ทธ๋ํ ๊ธฐ๋ฐ ์คํ์ผ๋ก ์ธ์: Terraform์ด ๋ช ๋ น์ ์์ฐจ ์คํํ์ง ์๊ณ ๋ชจ๋ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ๋จผ์ ๋ถ์ํ ํ ์๋์ผ๋ก ๋ฆฌ์์ค ์์ฑ ์์ ๊ฒฐ์
- ๋ชจ๋ ๊ฐ ํต์ ์ Outputs โ Inputs ํจํด์ผ๋ก ํ์คํ: VPC ๋ชจ๋์ด private_subnet_ids๋ฅผ ์ถ๋ ฅํ๊ณ EKS ๋ชจ๋์ด ์ด๋ฅผ ์ ๋ ฅ๊ฐ์ผ๋ก ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ๋์จํ ๊ฒฐํฉ ๊ตฌํ
- ์์กด์ฑ ์ ํธ๋ฅผ ๋ช ์์ ์ฐธ์กฐ๋ก ํํ: module.iam.eks_cluster_role_arn๊ณผ ๊ฐ์ ๋ชจ๋ ๊ฐ ์ง์ ์ฐธ์กฐ๋ฅผ ํตํด Terraform์ด ์๋์ผ๋ก ์์ฑ ์์ ์ถ๋ก ํ๋๋ก ์ค๊ณ
- ํ๋์ฝ๋๋ ๋ฆฌ์์ค ID๋ฅผ ๋ณ์์ ๋ชจ๋ ์ถ๋ ฅ์ผ๋ก ๋์ฒด: ํ๊ฒฝ๋ณ values๋ฅผ terraform.tfvars์์ ๊ด๋ฆฌํ๊ณ ๋ชจ๋ ์ถ๋ ฅ์ผ๋ก ๋ค๋ฅธ ๋ชจ๋์ ์ ๋ฌํ์ฌ ์ฌ์ฌ์ฉ์ฑ ํ๋ณด
- main.tf๋ฅผ ์ค์ผ์คํธ๋ ์ดํฐ ์ญํ ๋ก ์ ์: VPC, IAM, EKS Cluster, Node Groups ๋ชจ๋์ ์ฐ๊ฒฐํ๋ ๊ฐ ๋ชจ๋์ด ๋ฐ์ดํฐ ํ๋ฆ์ผ๋ก๋ง ํต์ ํ๋๋ก ๊ตฌ์กฐํ
- S3 ๊ธฐ๋ฐ Remote State ๋ฐฑ์๋ ์ค์ : ํ ํ์ ๊ณผ State Lock์ ํตํ ๋์ ์ ๊ทผ ์ ์ด ๊ตฌํ
Key Takeaway
Terraform์ ์ธํ๋ผ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๋ฐ์ดํฐ ํ๋ฆ ๊ธฐ๋ฐ ์์คํ ์ค๊ณ ๋๊ตฌ์ด๋ฉฐ, ๋ชจ๋ ๊ฐ ์์กด์ฑ์ ๋ช ์์ ์ฐธ์กฐ๋ก ํํํ๋ฉด Terraform์ด ์๋์ผ๋ก ๋ฆฌ์์ค ์์ฑ ์์๋ฅผ ๊ฒฐ์ ํ๋ฏ๋ก ํ๊ฒฝ ๊ฐ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ค.
์ค์ฒ ํฌ์ธํธ
Terraform์ ์ฌ์ฉํ๋ ์์ง๋์ด๊ฐ ๋ชจ๋ ๊ฐ ํต์ ์ Outputs โ Inputs ํจํด์ผ๋ก ์ค๊ณํ๊ณ ํ๋์ฝ๋๋ ๊ฐ์ ๋ณ์ ๋ฐ ๋ชจ๋ ์ถ๋ ฅ์ผ๋ก ๋์ฒดํ๋ฉด, ๋ค์ค ํ๊ฒฝ(dev/staging/prod) ๋ฐฐํฌ ์ ์ฝ๋ ์ค๋ณต ์์ด ๋์ผํ ๋ชจ๋์ ์ฌ์ฌ์ฉํ ์ ์๊ณ ๋ฆฌ์์ค ์์ฑ ์์์ ๋ํ ๋ช ์์ ์ ์ ์์ด๋ Terraform์ ์์กด์ฑ ๊ทธ๋ํ ์์ง์ด ์๋์ผ๋ก ์ฌ๋ฐ๋ฅธ ์คํ ์์๋ฅผ ๊ฒฐ์ ํ๊ฒ ๋๋ค.