pile·
인프라 / DevOps·카카오 스타일 (지그재그)카카오 스타일 (지그재그)·

Terraform으로 EKS 구축하기

카카오스타일 EKS 시리즈의 마지막 편으로, 앞선 글에서 손으로 만들던 클러스터를 잘 만들어진 Terraform 모듈로 빠르게 구성하는 방법을 다룬다. VPC 와 EKS 모듈에 더해 AWS Load Balancer Controller 설치까지 Terraform 으로 옮겼고, 그 과정에서 만난 CoreDNS 멈춤 같은 문제도 함께 적는다.

핵심 포인트
  • 모듈은 편하지만 내부 개념을 모른 채 쓰면 문제가 생겼을 때 해결이 어렵다는 점을 먼저 짚는다.
  • terraform-aws-modules 의 VPC 모듈로 이전에 길게 쓰던 구성을 짧게 대체한다. 구조는 같지만 NAT 게이트웨이가 가용영역별로 따로 존재한다.
  • 서브넷 태깅이 중요하다. 클러스터 이름 태그와 elb, internal-elb role 태그를 각각 퍼블릭과 프라이빗 서브넷에 붙여야 한다.
  • Fargate 만 있는 상태에서는 coredns 모듈 생성이 멈춘다. kubectl patch 로 compute-type 어노테이션을 제거해 풀어야 한다.
  • AWS Load Balancer Controller 는 관련 모듈이 여럿 있으나 미묘하게 동작하지 않아, 쉘에서 실행하던 명령을 Terraform 으로 직접 옮겨 구현했다.
상세 정리
  • EKS 모듈에서는 클러스터 엔드포인트의 프라이빗과 퍼블릭 접근 여부, CloudWatch 로그 보관 기간 같은 옵션을 지정한다.
  • Load Balancer Controller 구성은 IRSA 부터 시작한다. iam-assumable-role-with-oidc 모듈로 OIDC 기반 역할을 만들고 서비스 어카운트를 subject 로 지정한다.
  • 정책은 kubernetes-sigs 저장소의 iam_policy.json 을 http 데이터 소스로 받아와 그대로 역할 정책에 붙인다.
  • 설치는 helm_release 로 aws-load-balancer-controller 차트를 kube-system 네임스페이스에 배포하고, 서비스 어카운트 이름과 리전 ECR 이미지 저장소, 역할 arn 어노테이션을 set 으로 넘긴다.
  • 예제를 단순하게 하려고 쿠버네티스에서 도는 애플리케이션까지 Terraform 으로 구성했다. echoserver Deployment 와 Service, ALB Ingress 를 kubernetes provider 리소스로 정의한다.
  • Ingress 어노테이션에는 scheme 과 target-type 을 지정한다. 생성 후 kubectl 로 hostname 을 뽑아 요청을 보내면 응답이 온다.
  • 같은 Terraform 파일 안에 정의했기 때문에 EKS 모듈의 출력을 provider 설정에 그대로 썼다. 별도 스택으로 나누고 kubeconfig 가 설정돼 있다면 provider 를 다르게 구성할 수 있다.
  • 저자는 시리즈를 쓰며 클러스터 생성을 여러 번 반복했고 매번 하나씩 빠뜨려 문제를 찾는 데 오래 걸렸다고 말한다. 잘 구성된 모듈이 확실히 편했지만, 각 단계를 직접 해봐서 이해가 된 상태였기에 모듈 활용도 가능했다고 본다.
  • Terraform 으로 인프라를 통일하는 것은 좋지만 쿠버네티스는 별개의 정의 스펙이 있어 애매한 지점이 있고, 실서비스에서는 Terraform 이 아닌 다른 방식을 쓰고 있다고 덧붙인다.
왜 읽나EKS 를 손으로 몇 번 만들어보고 이제 코드로 굳히려는 인프라 담당자에게, 모듈 조합과 직접 구현이 필요한 지점을 갈라 보여주는 마무리 편.
카카오 스타일 (지그재그)
카카오 스타일 (지그재그) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    엔터프라이즈 보안 요구사항을 충족하는 프라이빗 Amazon Bedrock AgentCore 구축하기

    Amazon Bedrock AgentCore의 VPC egress 기능(2026년 4월 추가)을 활용해 온프레미스 LLM·사내 IdP·사내 MCP 서버에 인터넷 노출 없이 연결하는 방법을 다룬다. 규제 산업 엔터프라이즈가 기존 사내 자산을 그대로 유지하면서 Bedrock AgentCore를 안전하게 구축하기 위한 구성 가이드다.

    요약 이어보기
    #mcp#amazon-bedrock#vpc+2
  2. 인프라 / DevOps·gitlab-engGitLab Blog·

    OpenTofu와 Argo CD로 구성하는 GitLab 기반 AWS 제어 플레인

    GitLab을 단일 제어 플레인으로 삼아 OpenTofu로 AWS 인프라를 프로비저닝하고, Argo CD로 GitOps 기반 애플리케이션 배포까지 자동화하는 엔드투엔드 튜토리얼이다. VPC·EKS 클러스터 구성부터 Helm 기반 툴 설치, 샘플 앱 배포까지 모든 과정이 GitLab CI/CD 파이프라인으로 연결된다.

    요약 이어보기
    #kubernetes#aws-eks#gitops+2
  3. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    Amazon Bedrock 기반 사내 LLM, 키 발급부터 비용 차단까지: F&F의 LiteLLM 게이트웨이 운영 사례

    패션 기업 F&F가 Amazon Bedrock과 LiteLLM 프록시를 결합해 구축한 사내 LLM 플랫폼 운영 사례다. API 키 셀프서비스 발급, 모델별 접근 승인 워크플로, 사용자·프로젝트별 예산 자동 차단까지 전 과정을 직접 구현한 아키텍처 결정과 운영 교훈을 공유한다.

    요약 이어보기
    #kubernetes#amazon-bedrock#litellm+2