본문 바로가기

[Kubernetes]/[ArgoCD]

[ArgoCD] GitOps란

반응형

GitOps란?

Git을 이용한 인프라 및 애플리케이션을 관리하는 것을 말한다.

 

GitOps의 핵심포인트

1. 모든 시스템들은 선언적으로 표현되어야한다.

사실(fact)들의 집합으로 이루어져야 한다. 애플리케이션이 Git으로 관리를 하면 단일 진실 출처 (SSOT, Single source of truth)를 얻을 수 있다. 가령 쿠버네티스를 예로 들면 배포, 혹은 롤백을 할때 Git에 정의된 버전을 토대로 진행을 할 수 있게 된다.

2. Git에 정의된 버전을 표준으로 한다

Git에 정의된 버전을 토대로 배포를 진행을 하며, 롤백을 위해서는 Git revert를 진행한다

3. 배포 자동화

배포가 승인된 버전은 자동으로 시스템에 적용된다. 클러스터에 대한 추가적인 credential이 필요없다.

4. 시스템 장애 발생시 사용자에게 경고를 보낸다.

배포 혹은 운영하는 과정에서 어떠한 경고가 발생하게 되면 이를 사용자에게 알리고 self-healing을 진행한다. 

 

GitOps의 배포전략

1. Push Type

Git Repository가 변경되었을 때 배포 파이프라인을 진행한다. 하지만 이 경우, 배포 파이프라인 자체가 외부에 있기 때문에 배포 환경에 대한 자격증명 정보들도 외부에 있어 보안정보들이 노출될 수 있다. 

주로 사용되는 툴 : Jenkins, CircleCI, TravisCI

2. Pull Type

배포 환경에 위치한 별도의 오퍼레이터가 배포 파이프라인을 대신한다. 저장소의 manifest와 배포환경을 지속적으로 비교하다가 차이가 발생할 경우 저장소의 Manifest를 기준으로 배포 환경을 유지한다. 

Pull Type의 경우 오퍼레이터가 애플리케이션과 동일한 환경에서 동작중이기 때문에 보안정보들이 외부로 노출될 일이 없다. 

그래서 GitOps를 처음 발표한 WeaveCloud에서는 해당 방법을 이용하길 권장한다.

주로 사용되는 툴 : ArgoCD, Flux, JenkinsX

 

Repository 관리

 

GitOps에서는 최소 2개의 레포지토리를 이용하는 것을 권장한다.

1. Application Repository : 애플리케이션 소스코드와 배포를 위한 manifest

2. Deploy Repository : K8s 배포 환경에 대한 manifest 

728x90