IT/DevOps
GitOps
엔지니어 문
2022. 8. 25. 17:34
GitOps는 위브웍스(Weaveworks Inc.)에서 처음 사용한 용어로 프로젝트에 데브옵스를 적용하는 실천 방법 중 하나이다.
※ 클라우드 네이티브 애플리케이션이 아니어도 깃옵스를 적용할 수 있으나 아래에서 설명드릴 선언형 모델(Declarative Model)을 지원하는 최근 도구들이 클라우드 네이티브에 중점을 두기 때문에 어려움을 겪을 수 있다. 위브웍스는 아예 쿠버네티스 대상이라고 못박고 있다. |
- 클라우드 네이티브 애플리케이션을 대상으로 한 지속적 배포(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)은 정보 시스템 설계 및 이론중 하나로 정보와 스키마를 오직 하나의 출처에서만 생성 또는 편집하도록 하는 방법론이다
[참고]