본문 바로가기
클라우드

🤖 2025년 Terraform, AI를 품다! 핵심 업데이트와 AWS/EKS 모듈 v21 완벽 분석

by gasbugs 2025. 11. 2.

안녕하세요! 오늘은 2025년을 맞아 더욱 강력해진 Terraform의 주요 업데이트 소식과 함께, 우리에게 가장 친숙한 AWS Provider 및 EKS 모듈의 메이저 버전(v20 → v21) 변경 사항을 깊이 있게 파헤쳐 보겠습니다.

 

2025년의 Terraform 생태계는 크게 세 가지 키워드로 요약할 수 있습니다: AI 통합, 개발자 경험 향상, 그리고 강화된 보안. 이번 업데이트들은 단순히 기능을 추가하는 것을 넘어, 우리가 인프라를 코드로 관리하는 방식 자체를 한 단계 발전시키고 있습니다. 전체적인 흐름을 이해하며 각 변경 사항을 살펴보는 것이 중요합니다. 🚀


🔮 1. Terraform Core의 혁신적인 변화 (2025년 업데이트)

Terraform의 심장인 Core 기능부터 놀라운 변화가 시작되었습니다.

🧠 1. AI 기반 코드 제안 및 분석 (실험적 도입)

이제 Terraform이 똑똑한 AI 조수를 얻었습니다. terraform plan을 실행하면, AI가 인프라 변경 사항을 분석하여 예상치 못한 비용 급증, 보안 취약점, 비효율적인 리소스 구성 등을 사전에 감지하고 경고해 줍니다. VS Code 확장 프로그램에서는 주석이나 변수명만으로 필요한 리소스 코드를 추천하거나 자동 완성해주는 기능까지 통합되어 생산성이 극대화됩니다.

✨ 2. config-driven import 및 refactor 블록 안정화 (GA)

기존 인프라를 Terraform 코드로 가져오는 import 작업은 번거로운 수작업이었습니다. 하지만 이제 HCL 코드 내에 import 블록을 선언적으로 정의하여, 마치 새 리소스를 만드는 것처럼 자연스럽게 기존 리소스를 코드 관리 하에 둘 수 있게 되었습니다.

또한, moved 블록을 뛰어넘는 refactor 블록이 정식으로 도입되었습니다. 단순히 리소스 이름을 바꾸는 것을 넘어, 여러 리소스를 하나의 모듈로 묶는 등 복잡한 코드 리팩토링을 state 파일의 위험 없이 안전하게 수행할 수 있습니다.

 

예시: 여러 EC2 인스턴스를 모듈로 리팩토링하기

### BEFORE: 개별 리소스 정의 ###
resource "aws_instance" "web_1" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}
resource "aws_instance" "web_2" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}


### AFTER: 모듈로 리팩토링 및 refactor 블록 사용 ###
module "web_servers" {
  source        = "./modules/ec2_instance"
  instance_count = 2
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

# Terraform에게 상태 변경을 알려주는 refactor 블록
refactor {
  from = aws_instance.web_1
  to   = module.web_servers.aws_instance.this[0]
}
refactor {
  from = aws_instance.web_2
  to   = module.web_servers.aws_instance.this[1]
}

🔒 3. 상태 파일(State File) 성능 및 보안 강화

대규모 팀에서 협업할 때 자주 발생하던 상태 파일 잠금(Locking) 경합 문제가 크게 개선되었습니다. 덕분에 여러 파이프라인이 동시에 실행될 때의 대기 시간이 줄고 apply 속도가 빨라졌습니다. 또한 S3, GCS 등 주요 클라우드 백엔드 사용 시, 저장 시 암호화전송 중 암호화가 기본값으로 활성화되어 별도의 설정 없이도 더욱 안전하게 상태 파일을 관리할 수 있습니다.

🛠️ 4. HCL(HashiCorp Configuration Language) 기능 확장

HCL이 한층 더 유연해졌습니다. map, filter, reduce와 같은 고차 함수(higher-order functions)가 추가되어 복잡한 데이터 구조를 더욱 간결하고 우아하게 처리할 수 있습니다. 또한, 리소스 블록 내에 validation 블록을 추가하여 Provider가 정의한 특정 조건에 따라 리소스 속성값을 동적으로 검증하는 강력한 기능이 추가되었습니다.


☁️ 2. AWS Provider Module v21 주요 변경 사항

가장 널리 사용되는 AWS Provider 역시 'Secure-by-default' 철학을 바탕으로 큰 변화를 맞았습니다.

🛡️ 1. 인증 방식 개선 및 기본 보안 강화 (🚨 Breaking Change)

이제 IMDSv2(Instance Metadata Service Version 2) 사용이 기본값으로 설정되어, SSRF 공격 등에 대한 보안이 강화되었습니다. 또한 aws_s3_bucket, aws_ebs_volume 등 주요 스토리지 리소스 생성 시, **서버 측 암호화(SSE)**가 자동으로 활성화됩니다. 만약 암호화를 원치 않는다면, 코드에 명시적으로 비활성화 옵션을 추가해야 합니다.

🚀 2. 신규 AWS 서비스 정식 지원

2024년 re:Invent에서 발표된 AWS Graviton5 기반의 새로운 인스턴스 타입들과 Amazon Bedrock의 신규 모델 관리 리소스 등 최신 AI/ML 관련 서비스들이 발 빠르게 추가되었습니다. AWS App Fabric, AWS Clean Rooms 같은 데이터 및 보안 서비스도 이제 Terraform으로 완벽하게 관리할 수 있습니다.

🏷️ 3. 리소스 태그(Tag) 관리 정책 통합

Provider 레벨에서 기본 태그(Default Tags)를 설정하는 기능이 더욱 강력해졌습니다. 이제 모든 리소스에 조직의 태깅 정책을 일관되게 강제 적용하기가 훨씬 수월해졌습니다. 또한, 태그만 변경했을 뿐인데 리소스가 불필요하게 재생성되던 일부 문제점들도 해결되었습니다.

🏗️ 4. 주요 리소스의 속성 변경 (🚨 Breaking Change)

  • aws_vpc: IPv6 CIDR 블록을 할당하고 관리하는 방식이 더욱 직관적이고 유연하게 개선되었습니다.
  • aws_instance: user_data와 user_data_base64 속성 간의 혼동과 충돌 문제가 해결되었고, user_data_replace_on_change 속성의 동작 방식이 더 명확해져 예측 가능성이 높아졌습니다.

⚓ 3. EKS Module v21 주요 변경 사항

클라우드 네이티브 환경의 핵심, EKS 모듈은 최신 Kubernetes 트렌드를 적극적으로 수용했습니다.

🌟 1. Kubernetes 최신 버전 지원 및 EKS 신규 기능 통합

Kubernetes 1.32, 1.33 버전을 정식 지원하며, 1.27 이하의 오래된 버전에 대한 지원은 중단(deprecated)되었습니다. 또한, EKS의 새로운 기능인 'EKS Pod Identity'를 기본 인증 방식으로 채택하여, 기존의 복잡했던 IRSA(IAM Roles for Service Accounts) 설정을 대폭 간소화했습니다.

🚗 2. Karpenter v1.0 정식 지원 및 통합 강화 (🚨 Breaking Change)

이번 EKS 모듈 업데이트의 가장 큰 변화입니다. 기존의 managed_node_groups나 self_managed_node_groups 대신, 차세대 노드 프로비저너인 Karpenter를 기본 방식으로 사용하는 옵션이 전면에 등장했습니다. 이로 인해 Cluster Autoscaler 관련 변수들은 제거되었습니다. 모듈 내에서 Karpenter의 Provisioner와 AWSNodeTemplate을 직접 정의할 수 있도록 구조가 개편되어, 훨씬 더 빠르고 효율적인 노드 스케일링이 가능해졌습니다.

 

코드 비교: Cluster Autoscaler vs Karpenter

### v20: Managed Node Group (with Cluster Autoscaler) ###
module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "~> 20.0"
  # ... (클러스터 기본 설정)

  managed_node_groups = {
    general = {
      min_size     = 1
      max_size     = 10
      desired_size = 2
      instance_types = ["m5.large"]
    }
  }
}

### v21: Karpenter 통합 방식 ###
module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "~> 21.0"
  # ... (클러스터 기본 설정)

  # Karpenter 활성화
  enable_karpenter = true

  # 모듈 내에서 Karpenter Provisioner 직접 정의
  karpenter_provisioners = {
    default = {
      requirements = [
        { key = "karpenter.sh/capacity-type", operator = "In", values = ["on-demand"] },
        { key = "karpenter.k8s.aws/instance-category", operator = "In", values = ["c", "m", "r"] },
        { key = "kubernetes.io/arch", operator = "In", values = ["amd64"] }
      ]
      limits = {
        resources = {
          cpu = "200"
          memory = "400Gi"
        }
      }
      consolidation = {
        enabled = true
      }
    }
  }
}

🧩 3. EKS Add-ons 관리 기능 확대

CoreDNS, kube-proxy, VPC CNI 외에도 AWS Distro for OpenTelemetry, GuardDuty EKS Runtime Monitoring 등 더 많은 종류의 Add-on을 이제 모듈을 통해 직접 설치하고 관리할 수 있습니다. Add-on의 버전을 명시하고 업데이트 정책까지 설정할 수 있게 되어 클러스터 구성 요소 관리가 한결 편해졌습니다.

🌐 4. 네트워킹 및 보안 설정의 세분화

'Security Groups for Pods' 기능을 위한 보안 그룹 규칙을 모듈 내에서 더욱 상세하고 유연하게 정의할 수 있게 되었습니다. 또한, VPC CNI의 Custom Networking 설정을 위한 변수들이 추가되어 Pod에 할당되는 Secondary IP 등을 더욱 효과적으로 제어할 수 있습니다.


✅ 요약 및 권장 사항

2025년의 Terraform 업데이트는 명확한 방향성을 보여줍니다.

  1. AI를 통한 생산성 혁신: 단순 반복 작업을 줄이고, 잠재적 문제를 사전에 예측합니다.
  2. 강화된 기본 보안(Secure-by-default): 별도의 노력을 기울이지 않아도 기본적으로 안전한 인프라를 구축하도록 유도합니다.
  3. 유연한 리팩토링과 관리: 복잡하고 거대한 인프라를 더 쉽고 안전하게 변경하고 유지보수할 수 있도록 지원합니다.

특히 AWS 및 EKS 모듈 v21은 Karpenter로의 전환과 같이 최신 클라우드 네이티브 트렌드를 과감하게 도입했습니다. 따라서 v20에서 v21로 마이그레이션을 계획하고 있다면, 반드시 관련 Breaking Changes를 공식 문서에서 꼼꼼히 확인하고, 단계적으로 테스트하며 업그레이드를 진행하시길 강력히 권장합니다.

 

이번 업데이트를 통해 Terraform은 단순한 IaC 도구를 넘어, 인프라를 설계하고 운영하는 모든 과정에서 개발자의 가장 든든한 파트너로 자리매김하고 있습니다.