오늘의 기술 토픽

GitOps

이번 자료는 GitOps를 중심으로, Git을 단일 진실 공급원(Single Source of Truth)으로 삼아 애플리케이션과 인프라를 관리하는 방식을 다룬다. Argo CD, Flux 같은 도구를 통해 Git 저장소의 상태와 실제 클러스터 상태를 지속적으로 동기화하는 개념과 필요성을 설명한다. 수동 배포에서 발생하는 휴먼 에러와 감사 추적의 어려움을 GitOps가 어떻게 해결하는지에 초점을 맞춘다. 이후 GitOps 생태계와 맞닿아 있는 Kubernetes 네이티브 도구들과의 연계도 함께 소개한다.

🔑 핵심 요점

  • GitOps는 Git 저장소를 시스템의 단일 진실 공급원으로 삼아 배포 상태를 관리하는 방법론이다.
  • 선언적 설정과 Git 커밋 기록만으로 배포 이력과 롤백이 가능해진다.
  • Argo CD, Flux 같은 컨트롤러가 Git과 클러스터 상태를 지속적으로 비교하고 동기화한다.
  • 수동 kubectl apply 방식보다 감사 추적과 협업이 쉬워진다.
  • Pull 기반 배포 모델은 외부에서 클러스터로 직접 접근할 필요가 없어 보안 측면에서도 유리하다.
  • GitOps는 정책 관리, 인프라 프로비저닝 등 Kubernetes 생태계 전반으로 확장되고 있다.

🛠 핵심 기술 쉽게 이해하기

GitOps

GitOps는 애플리케이션과 인프라의 원하는 상태(desired state)를 Git 저장소에 선언적으로 기록하고, 이를 자동으로 실제 환경에 반영하는 운영 방식이다. 코드 리뷰와 커밋 기록을 통해 모든 변경 이력이 투명하게 남는다.

왜 필요한가 — 수동 배포로 인한 설정 불일치와 휴먼 에러를 줄이고, 배포 과정을 코드처럼 버전 관리하기 위해 사용한다.

발표에서는 — GitOps의 기본 개념과 Git을 중심으로 한 배포 흐름의 필요성이 다뤄졌다.

Argo CD

Argo CD는 Kubernetes를 위한 대표적인 GitOps 도구로, Git 저장소에 정의된 매니페스트를 클러스터에 자동으로 동기화해준다. 웹 UI를 통해 배포 상태와 리소스 트리를 시각적으로 확인할 수 있다.

왜 필요한가 — 선언적 GitOps 워크플로우를 실제로 구현할 수 있는 컨트롤러가 필요하기 때문에 사용한다.

발표에서는 — GitOps를 실천하는 대표 도구로 언급되었다.

Flux

Flux는 CNCF의 또 다른 GitOps 컨트롤러로, Git 저장소 변경을 감지해 Kubernetes 클러스터에 지속적으로 반영한다. 경량화된 구조와 Kubernetes CRD 기반 확장성이 특징이다.

왜 필요한가 — Argo CD와 함께 GitOps 생태계를 대표하는 선택지로, 팀의 요구에 따라 대안으로 활용된다.

발표에서는 — GitOps 도구 생태계를 설명하며 함께 언급되었다.

Kustomize

Kustomize는 Kubernetes 매니페스트를 환경별로 오버레이하여 재사용 가능하게 만들어주는 설정 관리 도구다. 별도 템플릿 언어 없이 YAML 패치 방식으로 동작한다.

왜 필요한가 — GitOps 저장소 안에서 환경별(dev/staging/prod) 설정 차이를 관리하기 위해 함께 사용된다.

발표에서는 — GitOps 저장소 구조를 설명하는 맥락에서 함께 다뤄졌다.

🧭 추구 방향과 흐름

  • 선언적 배포 문화 확산 — 명령형 스크립트 대신 선언적 매니페스트와 Git 커밋으로 배포를 관리하는 문화가 확산되고 있다. 이는 배포 이력 추적과 협업을 쉽게 만드는 방향으로 이어진다.
  • Pull 기반 배포 모델로 전환 — 외부에서 클러스터에 직접 접근해 push하는 대신, 클러스터 내부 컨트롤러가 Git 변경을 스스로 pull하여 동기화하는 방식이 보안과 운영 편의성 측면에서 주목받고 있다.
  • GitOps와 플랫폼 엔지니어링의 결합 — GitOps는 정책 관리, 인프라 프로비저닝 같은 다른 Kubernetes 네이티브 도구들과 결합되며 플랫폼 엔지니어링의 핵심 축으로 자리잡아가고 있다.

🚀 바로 활용하기

  1. 로컬 Kubernetes 클러스터(minikube, kind 등)에 Argo CD를 설치하고 샘플 애플리케이션을 GitOps 방식으로 배포해본다.
  2. Argo CD 또는 Flux 공식 문서의 Getting Started 가이드를 따라 Git 저장소와 클러스터를 동기화하는 과정을 직접 실습해본다.
  3. 기존에 수동으로 배포하던 애플리케이션 하나를 골라 매니페스트를 Git 저장소로 옮기고 GitOps 워크플로우로 전환해본다.
  4. Kustomize로 dev/prod 환경별 오버레이를 구성해 GitOps 저장소 구조를 설계해본다.

🔗 참고 자료