오늘의 기술 토픽

GitOps

이번 자료는 GitOps라는 개념을 중심으로, Git 저장소를 단일 진실 공급원(Single Source of Truth)으로 삼아 인프라와 애플리케이션 배포를 관리하는 방법을 다룹니다. 대표 구현체인 Argo CD와 Flux를 함께 소개하며, Kubernetes 환경에서 선언적 방식으로 상태를 동기화하는 실무 흐름을 설명합니다. 수동 배포 대신 Git 커밋과 Pull Request를 통해 변경 이력과 승인 절차를 남기는 것이 핵심 아이디어입니다.

🔑 핵심 요점

  • GitOps는 Git 저장소의 선언적 설정을 실제 클러스터 상태와 지속적으로 동기화하는 운영 방식입니다.
  • 모든 배포 변경은 Git 커밋을 통해 이루어지므로 변경 이력 추적과 롤백이 쉬워집니다.
  • Argo CD와 Flux는 Kubernetes 환경에서 가장 널리 쓰이는 GitOps 도구입니다.
  • 선언적 설정 파일(YAML)만 관리하면 되므로 수동 kubectl apply 명령을 줄일 수 있습니다.
  • GitOps는 CI(빌드/테스트)와 CD(배포)를 분리해 보안과 권한 관리를 명확히 합니다.
  • Pull Request 기반 워크플로우 덕분에 배포 변경에 대한 리뷰와 승인 과정을 자연스럽게 도입할 수 있습니다.

🛠 핵심 기술 쉽게 이해하기

GitOps

GitOps는 애플리케이션과 인프라의 원하는 상태(desired state)를 Git 저장소에 선언적으로 저장하고, 자동화 도구가 이를 실제 시스템 상태와 지속적으로 비교하며 동기화하는 운영 방법론입니다. Git 커밋 하나하나가 배포 변경의 기록이 됩니다.

왜 필요한가 — 수동 배포로 인한 설정 드리프트(drift)와 변경 이력 부재 문제를 해결하고, 배포 과정을 코드처럼 리뷰하고 감사할 수 있게 하기 위해 사용합니다.

발표에서는 — 핵심 주제로서 Git을 단일 진실 공급원으로 삼는 개념과 그 장점이 소개되었습니다.

Argo CD

Argo CD는 Kubernetes를 위한 대표적인 GitOps 지속적 배포(CD) 도구로, Git 저장소의 매니페스트를 클러스터에 자동으로 동기화하고 웹 UI로 배포 상태를 시각화해줍니다.

왜 필요한가 — Kubernetes 리소스의 실제 상태와 Git에 정의된 원하는 상태 간 차이를 감지하고 자동 또는 수동으로 동기화하기 위해 사용합니다.

발표에서는 — GitOps 구현체의 대표 사례로 언급되며, 배포 자동화와 상태 모니터링 기능이 소개되었습니다.

Flux

Flux는 CNCF 산하의 또 다른 GitOps 도구로, Git 저장소 변경을 감지해 Kubernetes 클러스터에 자동 반영하는 경량 컨트롤러 세트입니다.

왜 필요한가 — Argo CD와 유사하게 선언적 배포 자동화를 제공하지만, 더 모듈화된 구조와 GitOps Toolkit을 통해 확장성을 강조합니다.

발표에서는 — Argo CD와 비교되는 대안 도구로 간략히 언급되었습니다.

Kubernetes

Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리해주는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다.

왜 필요한가 — GitOps 도구들이 동기화 대상으로 삼는 실행 환경이며, 선언적 리소스 모델이 GitOps와 자연스럽게 맞물립니다.

발표에서는 — GitOps가 실제로 적용되는 기반 플랫폼으로 언급되었습니다.

🧭 추구 방향과 흐름

  • 선언적 인프라 관리 — 명령형(imperative) 스크립트 대신 원하는 상태를 코드로 선언하고 도구가 이를 유지하도록 하는 방향으로 나아가고 있습니다. 이는 인프라 재현성과 일관성을 높이는 흐름과 맞닿아 있습니다.
  • 배포의 감사 가능성과 보안 강화 — 모든 배포 변경이 Git 이력으로 남기 때문에 누가 언제 무엇을 바꿨는지 추적할 수 있으며, Pull Request 리뷰 절차를 통해 배포 전 승인 단계를 자연스럽게 도입할 수 있습니다.
  • 플랫폼 엔지니어링과 셀프서비스 배포 — GitOps는 개발자가 직접 클러스터에 접근하지 않고도 Git 저장소를 통해 배포를 요청할 수 있게 해주며, 이는 플랫폼 팀이 셀프서비스 배포 환경을 구축하는 흐름과 연결됩니다.

🚀 바로 활용하기

  1. 로컬 환경에 kind나 minikube로 Kubernetes 클러스터를 만들고 Argo CD를 설치해 간단한 애플리케이션을 배포해봅니다.
  2. Argo CD 공식 문서의 Getting Started 가이드를 따라 Git 저장소와 클러스터를 연동해봅니다.
  3. GitOps 원칙(OpenGitOps)을 읽고 선언적 설정, 버전 관리, 자동 동기화 개념을 정리해봅니다.
  4. 기존에 수동으로 배포하던 애플리케이션 하나를 골라 GitOps 워크플로우로 전환해보는 연습을 해봅니다.

🔗 참고 자료