ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
# ๐Ÿ” Terraform Modular EKS + Istio โ€” The Part Nobody Explains
Dev.toDev.to
DevOps

# ๐Ÿ” Terraform Modular EKS + Istio โ€” The Part Nobody Explains

์—”์ง€๋‹ˆ์–ด๊ฐ€ Terraform์„ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๋ชจ๋ธ์—์„œ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋„๊ตฌ๋กœ ์ธ์‹ ์ „ํ™˜ํ•˜์—ฌ ๋ชจ๋“ˆํ™”๋œ EKS + Istio ์ธํ”„๋ผ ์ž๋™ํ™” ์„ค๊ณ„

POTHURAJU JAYAKRISHNA YADAV2026๋…„ 3์›” 26์ผ9๋ถ„intermediate

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์˜ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ์—”์ง„์ด ์ž๋™์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

์›๋ฌธ ์ฝ๊ธฐ