IT/DevOps

GitOps

엔지니어 문 2022. 8. 25. 17:34

GitOps는 위브웍스(Weaveworks Inc.)에서 처음 사용한 용어로 프로젝트에 데브옵스를 적용하는 실천 방법 중 하나이다.

※ 클라우드 네이티브 애플리케이션이 아니어도 깃옵스를 적용할 수 있으나 아래에서 설명드릴 선언형 모델(Declarative Model)을 지원하는 최근 도구들이 클라우드 네이티브에 중점을 두기 때문에 어려움을 겪을 수 있다. 위브웍스는 아예 쿠버네티스 대상이라고 못박고 있다.

 

<출처: https://walter.kr/22 참고>

  • 클라우드 네이티브 애플리케이션을 대상으로 한 지속적 배포(Continuous Deployment)에 초점을 두고 있다.
  • GitOps에서는 소프트웨어를 배포할 때, Git 저장소에 배포를 위한 작업 정의서를 기술하여 repository에 저장한다 <= Gitlab, Github 등의 저장소를 필요
  • 그리고 GitOps의 구현체(ArgoCD 등)가 배포상태를 코드와 맞추기 위해 Git repository에 저장된 배포 정의서를 읽어와서 운영 환경에 변경 사항을 반영한다.  <= ArgoCD의 주 역할은  Manifest의 동기화(sync)
  • 쿠버네티스와 같이 선언형 (declarative description) 명령으로 배포하는 형태의 환경은, Git 저장소에 원하는 배포 형태를 선언하고 동기화함으로써 운영에 반영될 수 있는 구조를 만들 수 있다.

 

 

선언형 배포 작업 정의서

  • GitOps에서 배포는 선언형으로 정의되어야 한다. 쿠버네티스 리소스를 생성할 때 'kubectl run mypod...'와 같이 명령형으로 생성할 수도 있고 YAML 파일을 생성하여 'kubectl apply -f....'와  같이 선언형으로도 생성할 수 있다. GitOps는 선언형으로 배포 방식을 정의한다.

 

Git을 이용한 버전 관리

  • YAML 파일로 배포 방식을 정의하므로 파일은 Git을 통해 형상 관리될 수 있다. Git에 정의한 배포 정의 파일은 FluxCD, ArgoCD와 같은 배포 관리자를 통해 실제 환경에 반영을 자동으로 수행되도록 설정한다. 

 

이상 탐지 및 자가 치유

  • 배포 관리자는 단순히 배포만 하는 것이 아니라 배포된 리소스가 이상이 없는지 확인하는 것 까지 담당한다.

 

단일 진실 공급원(Single Source Of Truth, SSOT)

  • 단일 진실 공급원(SSOT)은 정보 시스템 설계 및 이론중 하나로 정보와 스키마를 오직 하나의 출처에서만 생성 또는 편집하도록 하는 방법론이다

 

 

[참고]