오늘의 기술 토픽
GitOps
이번 브리핑은 별도의 밋업 발표 없이 GitOps라는 주제를 중심으로 관련 생태계를 정리한 내용이다. GitOps는 Git 저장소를 단일 진실 공급원(Single Source of Truth)으로 삼아 인프라와 애플리케이션 배포 상태를 선언적으로 관리하는 방법론이다. Argo CD, Flux CD 같은 컨트롤러가 Git의 상태와 실제 클러스터 상태를 지속적으로 동기화하며, 이 흐름 위에서 Kustomize, Helm 같은 매니페스트 관리 도구가 함께 쓰인다. 최근 클라우드 네이티브 커뮤니티는 이를 플랫폼 엔지니어링과 셀프서비스 배포의 기반 기술로 확장하고 있다.
🔑 핵심 요점
- GitOps는 Git 저장소를 배포 상태의 단일 진실 공급원으로 삼는 운영 방식이다.
- Argo CD와 Flux CD는 GitOps를 구현하는 대표적인 Kubernetes 컨트롤러다.
- 선언적 매니페스트를 관리하기 위해 Kustomize나 Helm이 함께 사용되는 경우가 많다.
- GitOps는 배포 이력 추적과 롤백을 Git 커밋 히스토리만으로 가능하게 해준다.
- 클라우드 네이티브 진영은 GitOps를 플랫폼 엔지니어링과 셀프서비스 인프라의 기반으로 확장하는 추세다.
🛠 핵심 기술 쉽게 이해하기
GitOps
GitOps는 애플리케이션과 인프라의 원하는 상태(desired state)를 Git 저장소에 선언적으로 기록하고, 이를 기준으로 실제 시스템 상태를 자동으로 맞춰가는 운영 방법론이다. 배포 변경 사항은 코드 리뷰와 동일하게 Pull Request로 처리된다.
왜 필요한가 — 수동 배포로 인한 설정 드리프트와 배포 이력 추적의 어려움을 해결하고, Git의 버전 관리 기능을 그대로 배포 감사(audit)와 롤백에 활용할 수 있다.
발표에서는 — 이번 브리핑의 중심 주제로, 이후 소개되는 Argo CD, Flux CD 등의 도구가 GitOps 원칙을 실제로 구현하는 방식이라는 맥락에서 다뤄졌다.
Argo CD
Argo CD는 Kubernetes 클러스터에 배포되는 애플리케이션 매니페스트를 Git 저장소와 지속적으로 비교하고 동기화하는 GitOps 전용 컨트롤러다. 웹 UI를 통해 배포 상태와 차이(diff)를 시각적으로 확인할 수 있다.
왜 필요한가 — 여러 클러스터와 애플리케이션의 배포 상태를 한눈에 관리하고, Git과의 불일치(out-of-sync)를 자동 또는 수동으로 교정하기 위해 사용한다.
발표에서는 — GitOps를 실제로 구현하는 대표 도구로 언급되었으며, GitOps 학습을 시작할 때 가장 먼저 시도해볼 만한 도구로 다뤄졌다.
Flux CD
Flux CD는 CNCF의 또 다른 GitOps 컨트롤러로, Git 저장소의 변경 사항을 감지해 Kubernetes 클러스터에 자동으로 반영한다. Argo CD보다 경량화된 구조와 강력한 자동화(polling, webhook) 기능이 특징이다.
왜 필요한가 — UI보다 CLI·자동화 중심의 GitOps 워크플로를 선호하는 팀, 또는 Helm/Kustomize와의 네이티브 통합이 필요한 경우에 적합하다.
발표에서는 — Argo CD와 비교되는 대안 도구로 언급되며, GitOps 생태계의 다양성을 보여주는 예시로 다뤄졌다.
Kustomize
Kustomize는 기존 YAML 매니페스트를 수정하지 않고 오버레이(overlay) 방식으로 환경별 설정을 관리할 수 있게 해주는 도구다. Kubernetes CLI(kubectl)에 기본 내장되어 있다.
왜 필요한가 — 개발, 스테이징, 프로덕션 등 환경별로 매니페스트를 중복 작성하지 않고 재사용 가능하게 관리하기 위해 사용한다.
발표에서는 — GitOps 워크플로에서 Git에 저장되는 매니페스트를 구조화하는 방법으로 함께 언급되었다.
🧭 추구 방향과 흐름
- 플랫폼 엔지니어링과 셀프서비스 배포 — GitOps는 개발자가 인프라팀 개입 없이 Pull Request만으로 배포를 요청할 수 있게 해주는 셀프서비스 플랫폼의 핵심 축으로 자리 잡고 있다. 이는 배포 권한을 Git 저장소 접근 권한으로 자연스럽게 통제할 수 있다는 점에서 근거를 갖는다.
- 선언적 인프라 관리로의 전환 — 명령형(imperative) 스크립트 기반 배포에서 선언적(declarative) 상태 정의 기반 배포로 전환하는 흐름이 이어지고 있다. GitOps 컨트롤러들이 클러스터 상태를 지속적으로 조정(reconcile)하는 방식이 이 흐름을 뒷받침한다.
- 배포 감사 가능성과 컴플라이언스 강화 — Git 커밋 히스토리 자체가 배포 이력이 되면서, 누가 언제 무엇을 변경했는지 추적하기 쉬워지고 있다. 이는 규제 산업에서 배포 감사 요구를 충족하는 데도 활용되는 방향이다.
🚀 바로 활용하기
- 로컬 Kubernetes 클러스터(minikube, kind 등)에 Argo CD를 설치해 간단한 애플리케이션을 GitOps 방식으로 배포해본다.
- OpenGitOps 공식 문서를 읽고 GitOps의 네 가지 원칙(선언적 정의, 버전 관리, 자동 풀, 지속적 조정)을 이해한다.
- Kustomize로 동일한 매니페스트를 dev/prod 환경별 오버레이로 나눠보는 실습을 해본다.
- Argo CD와 Flux CD 문서를 비교해 두 도구의 동기화 방식 차이를 정리해본다.
🔗 참고 자료
- OpenGitOps — GitOps의 공식 원칙과 정의를 확인할 수 있는 CNCF 산하 문서.
- Argo CD Documentation — Argo CD 설치 및 사용법을 다루는 공식 문서.
- Flux CD — Flux CD의 공식 홈페이지 및 시작 가이드.
- Kustomize — Kustomize의 공식 문서와 오버레이 개념 설명.
- Kubernetes — GitOps가 동작하는 기반 플랫폼인 Kubernetes 공식 문서.
- CNCF — GitOps 관련 프로젝트들을 호스팅하는 클라우드 네이티브 재단.