GitOps란?

GitOps는 2017년 Weaveworks에서 처음 소개한 개념이다. 클라우드 네이티브 환경, 특히 Kubernetes 기반 시스템에서의 지속적 배포(CD)에 초점을 맞추고 있다. 모든 인프라 구성과 애플리케이션 설정을 코드로 관리하며, Git 저장소를 통해 이를 버전 관리한다.

Push 방식의 배포 전략

Push 방식은 전통적인 CI/CD 파이프라인과 유사하게 작동한다. 주요 특징과 프로세스는 다음과 같다.

빌드 및 배포 프로세스

  1. 빌드 단계

    • 개발자의 코드 Push로 CI 파이프라인이 시작된다
    • CI 서버에서 빌드, 테스트를 수행한다
    • 컨테이너 이미지를 생성하고 레지스트리에 등록한다
  2. 배포 단계

    • CI 빌드 성공 시 CD 파이프라인이 트리거된다
    • CD 도구가 배포 매니페스트를 업데이트한다
    • 클러스터에 직접 새로운 매니페스트를 적용한다
  3. 검증 단계

    • 배포 상태를 확인한다
    • 헬스 체크 및 롤아웃 상태를 모니터링한다
    • 필요시 롤백을 수행한다

Pull 방식의 배포 전략

Pull 방식은 클러스터 내부의 오퍼레이터를 활용하는 방식으로, 보다 안전하고 선언적인 접근을 제공한다.

빌드 및 배포 프로세스

  1. 빌드 단계

    • 코드 Push 및 CI 파이프라인이 실행된다
    • 테스트를 수행하고 컨테이너 이미지를 생성한다
    • 이미지를 레지스트리에 등록한다
  2. 매니페스트 업데이트 단계

    • 새 이미지 정보로 Git 저장소의 매니페스트를 업데이트한다
    • Config Repository에 변경사항을 커밋한다
  3. 배포 단계

    • GitOps 오퍼레이터가 Git 저장소 변경을 감지한다
    • 클러스터 상태와 Git 선언 상태를 비교한다
    • 자동 동기화를 수행한다
  4. 모니터링 단계

    • 지속적으로 동기화 상태를 모니터링한다
    • 문제 발생 시 자동으로 재시도하거나 알림을 보낸다
    • 필요시 자동으로 롤백한다

두 방식의 주요 차이점

  1. 배포 주체

    • Push: 외부 CD 도구가 직접 클러스터를 제어한다
    • Pull: 클러스터 내부 오퍼레이터가 변경을 감지하고 적용한다
  2. 상태 관리

    • Push: 배포 시점에만 일회성으로 상태를 확인한다
    • Pull: 지속적으로 상태를 모니터링하고 동기화한다
  3. 보안성

    • Push: CD 도구에 클러스터 접근 권한이 필요하다
    • Pull: 클러스터 내부 오퍼레이터만 권한을 보유한다
  4. 오류 처리

    • Push: CD 파이프라인 정의에 따라 처리한다
    • Pull: 지속적으로 재시도하고 자동으로 복구한다

결론

GitOps의 Push와 Pull 방식은 각각의 장단점을 가지고 있다. Pull 방식이 보안성과 안정성 측면에서 더 우수하지만, 구현 복잡도가 높을 수 있다. 반면 Push 방식은 구현이 단순하고 직관적이지만, 보안 관리에 더 많은 주의가 필요하다.

조직의 상황과 요구사항에 따라 적절한 방식을 선택하되, 일관된 배포 프로세스 구축과 운영 환경의 안정성 확보가 가장 중요하다. GitOps는 결국 개발자들에게 익숙한 Git 워크플로우를 운영 영역으로 확장한 것으로, 현대적인 클라우드 네이티브 환경에서 효과적인 DevOps 실천 방법을 제공한다.