GEN-001 코드형 인프라
Meaning
EKS 클러스터와 관련 인프라 자원(VPC, IAM, 노드 그룹 등)을 AWS Management Console 에서 수동으로 구성할 경우, 구성 변경 내역을 추적하기 어렵고 전체 구성을 한눈에 파악하기 어렵습니다. 코드형 인프라(IaC, Infrastructure as Code)를 활용하면 클러스터와 자원을 선언적이고 버전 관리 가능한 방식으로 정의할 수 있어, 팀 협업과 운영 안정성 측면에서 매우 유리합니다.
Terraform, AWS CloudFormation, AWS CDK 등은 이러한 IaC 구현에 널리 사용되는 대표적인 도구입니다.
Impact
- 환경 일관성 저하: 수동 구성으로 설정 불일치 및 오류 발생 가능
- 변경 이력 관리 부족: 변경 기록이 남지 않아 추적 및 복원 어려움
- 협업 효율성 저하: 구성 불일치로 팀 단위 협업 및 품질 관리 어려움
- 자동화 구현 한계: CI/CD·GitOps 파이프라인 통합 어려움
- 운영·보안 안정성 저하: 수작업 오류와 감사 대응 미흡으로 안정성 및 규제 준수 위험 증가
Diagnosis
EKS 클러스터 및 리소스가 IaC 도구를 통해 배포되었는지 다음 항목을 확인합니다.
-
Git 리포지토리에 Terraform, AWS CDK, CloudFormation 등의 IaC 코드가 존재합니까?
# Terraform 코드 확인 find . -name "*.tf" # AWS CDK 프로젝트 확인 find . -name "cdk.json" -
IaC 코드가 실제 운영 환경 배포에 사용되고 있습니까?
-
Terraform
# 현재 상태 파일의 리소스 목록 확인 terraform state list # 실제 AWS 리소스와 상태 불일치 검사 (드리프트 확인) terraform plan -refresh-only -
AWS CDK
# CDK 배포 목록 확인 cdk list -
AWS CloudFormation
# CloudFormation 스택 상태 확인 aws cloudformation list-stacks \ --query "StackSummaries[?StackStatus=='CREATE_COMPLETE'||StackStatus=='UPDATE_COMPLETE'].StackName" # 특정 스택 상세 확인 aws cloudformation describe-stacks --stack-name <스택이름>
-
Mitigation
클러스터 및 관련 리소스의 수명 주기를 IaC 도구를 통해 관리하도록 변경합니다.
공통 원칙
- 인프라 변경은 AWS Management Console을 통한 수동 작업이 아니라, 반드시 코드 기반으로 수행합니다.
- 모든 인프라 코드는 Git 리포지토리에서 버전 관리하며, 코드 리뷰 절차를 거쳐 승인된 후 배포됩니다.
- 자동화된 배포 파이프라인을 구축하여 인프라 변경이 일관되고 재현 가능하게 적용되도록 합니다.
- 기존 리소스는 코드로 이전하여 실제 환경과 코드 간의 일치성을 확보합니다.
- 변경 이력과 승인 과정을 명확히 관리하여 운영의 투명성과 추적성을 강화합니다.
IaC 도입 절차
- 대상 정의: 현재 운영 중인 인프라 중 코드형 인프라로 관리할 리소스의 범위를 결정합니다.
- 구조 설계: 환경별(개발,검증,운영계) 구조와 공통 모듈, 상태 관리 방식을 포함하여 프로젝트 구조를 설계합니다.
- 코드화 진행: 기존 인프라 구성을 코드로 정의하거나, 신규 인프라를 IaC 기반으로 구축합니다.
- 검증 및 배포 체계 구축: 코드 변경 시 자동 검증, 승인, 배포가 가능한 파이프라인을 구성하여 안정적인 배포 절차를 확립합니다.
- 운영 전환: 수동 변경을 제한하고 모든 인프라 변경을 코드 기반으로 수행하도록 정책화하며, 운영팀이 이를 준수하도록 교육합니다.
참고 문서
- Best practices for using the Terraform AWS Provider — AWS Prescriptive Guidance
- Terraform Recommended Practices — HashiCorp Developer
- Terraform Best Practices to Improve Your Workflow — Spacelift Blog
- Best practices for developing and deploying cloud infrastructure with the AWS CDK
- Best practices for using the AWS CDK in TypeScript to create IaC projects — AWS Prescriptive Guidance
- AWS CDK Security Best Practices