메인 콘텐츠로 건너뛰기

GitOps와 Terraform으로 AWS 리소스 자동 관리하기: Kubernetes에서 실전 적용법

설탕사과
설탕사과
조회수 39
요약

클라우드 인프라를 효율적으로 관리할 수 있는 방법을 고민하고 계신가요? 최근 DevOps 현장에서 GitOps가 표준처럼 자리 잡으며, Terraform과 Kubernetes를 결합한 자동화가 각광받고 있습니다. 이 글에서는 Flux와 KubeVela Terraform Controller를 활용해 Kubernetes 클러스터에서 AWS 리소스를 코드로 관리하는 실질적인 방법을 알려드립니다. 설치부터 자동 변경 반영까지 핵심 단계와 실전 팁을 쉽게 풀어서 설명합니다.

GitOps란? 클라우드 인프라 자동화의 핵심 방식

GitOps는 인프라와 애플리케이션 구성을 Git 저장소에 선언적으로 기록하고, 실제 배포와 관리를 자동화하는 최신 접근 방법입니다. Git이 유일한 '진실의 원천'이 되고, 변경 사항이 생기면 자동으로 클러스터와 인프라에 반영됩니다. 덕분에 버전 관리, 변경 이력 추적, 롤백이 쉬워지고 운영의 일관성도 높아집니다.

Flux로 Kubernetes와 Terraform 연동하기

Flux는 GitOps 방식으로 Kubernetes와 외부 시스템(Terraform 등)을 동기화해주는 오픈소스 툴입니다. Helm을 이용해 설치하면 업데이트와 구성 관리가 쉬워집니다.

helm repo add fluxcd https://charts.fluxcd.io
helm repo update
helm install flux fluxcd/flux --namespace flux-system --create-namespace

또는, 매우 간단하게 kubectl로 설치할 수도 있습니다. 설치 후 kubectl get pods -n flux-system 명령으로 정상 동작을 바로 확인할 수 있습니다.

KubeVela Terraform Controller 설치로 AWS 리소스 직접 관리

KubeVela Terraform Controller는 Terraform 명령을 직접 Kubernetes 환경에서 실행하게 해줍니다. 과거 Rancher Controller보다 최신 방식이며, Helm으로 쉽고 빠르게 설치 가능합니다.

helm repo add kubevela-addons https://charts.kubevela.net/addons
helm upgrade --install terraform-controller -n terraform --create-namespace kubevela-addons/terraform-controller

이렇게 연결하면 Kubernetes 클러스터 안에서 바로 AWS 리소스를 코드로 관리할 수 있어 운영의 효율성이 급상승합니다.

AWS 인증 정보를 안전하게 Kubernetes에 저장하는 방법

AWS 리소스를 조작하려면 보안이 중요한 인증 정보를 안전하게 Kubernetes에 저장해야 합니다. 아래 명령으로 필요한 시크릿을 생성하여 접근 권한을 보호하세요.

kubectl create secret generic aws-secret 
  --from-literal=AWS_ACCESS_KEY_ID=<your-access-key> 
  --from-literal=AWS_SECRET_ACCESS_KEY=<your-secret-key> 
  -n terraform

이런 방식 덕분에 민감한 정보를 별도로 노출하지 않고 관리할 수 있습니다.

GitOps로 Terraform 설정 변경 및 자동 적용 프로세스

GitOps의 진가는 변경 관리에서 나타납니다. 예를 들어, EC2 인스턴스 유형을 변경하려면 다음과 같은 순서로 작업이 이뤄집니다.

  1. 현재 상태 확인: AWS CLI로 인스턴스 타입을 점검합니다.

  2. Terraform 파일 변경: terraform/ec2-alb.yaml 파일에서 인스턴스 타입(예: t3.nanot3.micro)을 수정합니다.

  3. 커밋 후 Push: 변경 내역을 커밋하고 원격 저장소에 푸시하면 Flux가 자동으로 감지해서 Kubernetes에 반영합니다.

  4. 적용 결과 확인: AWS에서 실제 인스턴스 타입이 바뀌었는지 다시 확인할 수 있습니다.

이렇게 수동 배포 없이 빠르고 안정적으로 클라우드 환경을 바꿀 수 있으니, 운영자에게 큰 편의를 제공합니다.

GitOps + Terraform의 장점: 자동화, 일관성, 신뢰성!

클래식한 CI/CD 파이프라인 방식보다 GitOps는 여러 면에서 강점이 있습니다.

  • 완전 자동화: Git 저장소만 수정하면, Flux가 알아서 모든 변경을 반영해 줍니다.

  • 진실의 원천: 인프라 설정과 변경 이력이 전부 Git에 있으니, 추적과 복구가 쉬워집니다.

  • 운영 일관성: 실제 인프라와 의도된 설정이 항상 일치하는지 검사 및 관리가 자동입니다.

  • 수동 개입 감소: 배포 버튼이나 별도 스크립트를 돌릴 필요 없이 Flux가 모든 것을 처리합니다.

실전에서 꼭 챙겨야 할 팁과 조언

GitOps와 Terraform으로 클라우드 운영 자동화를 시도한다면 초기에 인증 정보 관리, 역할 권한, Git 브랜치 전략까지 꼼꼼하게 준비하세요. 시스템이 자동화를 잘 처리해도, 사람이 관리하는 부분(코드 리뷰, 변경 승인 등)도 신경 쓰면 운영 안정성이 더욱 높아집니다.

오늘 소개한 Flux와 KubeVela Terraform Controller의 조합은 클라우드 인프라 관리의 효율을 극대화해 줍니다. 직접 실습해 보시고, 코드로 인프라를 아주 쉽고 안전하게 관리하는 만족감을 꼭 경험해보세요!

출처 및 참고 : How to Use GitOps with Terraform and Kubernetes | by Wiechert Alex | AWS in Plain English