스터디(Study)/CI·CD Study

GitOps Cookbook 1장: 소개

Chann._.y 2025. 10. 18.
728x90

 

1.1 GitOps란?

GitOpsGit 저장소를 단일 소스(Single Source of Truth) 로 삼아 인프라를 코드로 관리(Infrastructure as Code) 하는 방법론이다.
즉, 모든 인프라와 애플리케이션 배포를 Git을 통해 관리하고 자동화하는 방식이다.

GitOps의 3대 핵심 원칙 (Pillars)

  1. Git은 단일 진실의 원천이다 — 모든 상태는 Git에서 관리된다.
  2. 모든 것은 코드로 표현한다 — 설정과 인프라 모두 코드로 명시한다.
  3. Git 워크플로를 통해 운영한다 — Pull Request, Merge 등 Git 프로세스로 변경을 수행한다.

OpenGitOps (CNCF 산하 프로젝트)

GitOps 원칙을 정의하고 표준화한 워킹 그룹이다.

4가지 핵심 원칙

  • Declarative : 원하는 상태를 선언적으로 기술한다.
  • Versioned & Immutable : 버전 이력과 불변성을 유지한다.
  • Pulled Automatically : Git에서 자동으로 반영된다.
  • Continuously Reconciled : 실제 상태를 지속적으로 조정한다.

1.2 왜 GitOps인가?

GitOps를 도입하면 DevOps 문화와 배포 자동화를 더 깊게 통합할 수 있다.

GitOps 도입의 4가지 주요 이점

  1. 표준 워크플로 (Standard workflow)
    개발자에게 익숙한 Git 도구와 절차를 그대로 사용할 수 있다.
  2. 보안 강화 (Enhanced security)
    변경 전 코드 리뷰, 예기치 않은 구성 변경 감지를 통해 안정성을 확보한다.
  3. 가시성 및 감사 (Visibility and audit)
    모든 변경 이력이 Git에 기록되어 추적 가능하다.
  4. 멀티클러스터 일관성 (Multicluster consistency)
    여러 환경에서도 일관된 배포를 보장한다.

1.3 쿠버네티스 CI/CD와 GitOps

CI/CD란?

  • CI (지속적 통합) : 코드 변경을 자동으로 통합한다.
  • CD (지속적 배포) : 검증된 코드를 자동으로 배포한다.

GitOps는 CI/CD 파이프라인의 CD 영역을 확장한 개념이다.
CI가 컨테이너 이미지를 빌드하고, GitOps는 매니페스트 변경을 감지해 자동 배포를 수행한다.

흐름 예시

  1. 개발자가 코드를 Git에 푸시한다.
  2. CI가 컨테이너 이미지를 빌드하여 레지스트리에 저장한다.
  3. GitOps 엔진이 Git 매니페스트를 읽어 쿠버네티스에 배포한다.

1.4 쿠버네티스에 GitOps 적용하기

GitOps 엔진은 CD의 핵심 역할을 하며, GitOps Loop이라는 주기를 통해 시스템을 자동 조정한다.

GitOps Loop의 4단계

  1. Deploy — Git의 매니페스트를 배포한다.
  2. Monitor — Git과 클러스터 상태를 모니터링한다.
  3. Detect Drift — 실제 상태와 Git 정의의 차이를 감지한다.
  4. Take Action — 차이를 수정(동기화 또는 롤백)한다.

Git 저장소의 내용만을 ‘진실’로 신뢰하고, 모든 변경은 Git 워크플로로만 수행한다.

GitOps 환경 구성 예시

  1. 앱 소스 코드 저장소
  2. CI 파이프라인 (컨테이너 빌드)
  3. 컨테이너 이미지 레지스트리
  4. 쿠버네티스 매니페스트 저장소
  5. GitOps 엔진 (Argo CD, Flux 등)

1.5 DevOps와 GitOps의 관계

DevOps가 애자일 개발의 연장이라면,
GitOps는 DevOps를 인프라 자동화 및 애플리케이션 수명주기 관리로 확장한다.

핵심 포인트

  • 애자일의 목표는 납기(Lead Time) 단축이다.
  • GitOps는 이를 위해 자동화·가시성·일관성을 제공한다.
  • 모든 변경은 Git 워크플로로만 관리되어 피드백 루프가 짧아진다.

GitOps는 단순한 기술이 아니라 문화적 전환이다.
조직이 Git을 통해 모든 인프라와 애플리케이션 변경을 수행할 수 있는 체질로 변화해야 한다.

 

728x90

댓글