Argo CD 개요
ArgoCD 개요
Argo CD는 Argo 프로젝트의 하위 프로젝트 하나의 Kubernetes를 위한 GitOps 스타일의 배포를 지원하는 CD(Continuous Delivery) 도구이다.
Git 저장소의 내용과 쿠버네티스 클러스터를 동기화해주는 역할을 하는 에이전트이며, 쿠버네티스 클러스터 내부에서 Pod 형태로 배포가 된다.
2017년에 시작된 Argo 프로젝트는 Argo Workflows, Argo CD, Argo Events, Argo Rollouts 등의 하위 프로젝트를 가지고 있으며, 2020년 4월에는 CNCF(Cloud Native Computing Foundation) 인큐베이터 프로젝트가 되었다. Argo라는 이름은 그리스 신화의 아르고 배에서 채택되고 있으며, 그 마스코트는 같은 이름의 문어의 일종을 이미지 한 것으로 되어 있다.
Agro CD는 “CD"라는 이름에서 알 수 있듯이 지속적인 배달을 전문으로하는 도구이며 CI(Continuous intergration) 기능이 없다. 따라서 CI 툴과는 별도로 다른 방법으로 통합해야 한다.
Argo CD는 원하는 응용 프로그램의 상태를 정의하는 소스 (매니페스트)로 Git 저장소를 사용하는 GitOps 패턴을 따른다. Argo CD에서의 Kubernetes 매니페스트는 표준 YAML/json 이외에 Kustomize나 Helm chart, ksonnet, jsonnet 등 여러 방법으로 지정이 가능하다.
Argo CD에서는 Git 리포지토리의 상태에 맞게 자동 배포를 수행한다. 애플리케이션 구성이 Git에서 관리되므로 특정 브랜치 및 태그 업데이트를 추적할 수 있다. 또한 배포된 응용 프로그램에 문제가 있는 경우에도 특정 커밋 버전으로 즉시 되돌릴 수 있다.
Argo CD는 실행 중인 k8s 애플리케이션을 지속적으로 모니터링하며 현재 상태와 Git 저장소의 상태를 비교하는 Kubernetes 컨트롤러로 구현된다. 현재 상태와 Git 리포지토리의 상태에 차이가 있는 경우에 그 차이를 시각화하여 자동 또는 수동으로 어플리케이션의 동기화를 실시한다.
Argo CD 주요 특징
- 애플리케이션 정의, 구성 및 환경은 선언적이어야 하며 버전을 제어해야 한다.
- 애플리케이션 배포 및 수명주기 관리는 자동화되고 확인하기 쉽다.
특징 | 설명 |
---|---|
자동 배포 | 지정된 환경에 응용 프로그램을 자동으로 배포 |
설정 관리/템플릿 도구 지원 | Kustomize, Helm, Ksonnet, Jsonnet, plain-YAML 등을 지원 |
멀티 클러스터 지원 | 여러 k8s 클러스터 관리, 배포 가능 |
SSO 통합 | OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn과 SSO 통합 가능 |
허가 기능 | 멀티 테넌트 및 RBAC 정책 지원 |
롤백 | Git 저장소에 커밋된 애플리케이션의 어느 시점으로도 롤백 가능 |
헬스 체크 | 애플리케이션 리소스의 상태 상태 분석 가능 |
드리프트 감지 및 시각화 | 설정의 드리프트 감지 및 시각화를 자동으로 수행 |
애플리케이션 동기화 | 자동 또는 수동으로 이상적인 상태에 동기화 가능 |
웹 UI | 실시간 뷰에서 애플리케이션 활동을 제공 |
CLI | 자동화 및 CI 통합을 위한 CLI 제공 |
Webhook 통합 | GitHub, BitBucket, GitLab 등 Webhook 통합 지원 |
자동화 토큰 | 자동화를 위한 액세스 토큰을 프로젝트별로 발행 |
PreSync/Sync/PostSync 후크 | 복잡한 애플리케이션 배포를 지원하기 위한 PreSync/Sync/PostSync 후크 지원(예: 블루 그린 배포 및 카나리 릴리스 등) |
감사 추적 | 애플리케이션 이벤트 및 API 호출 감사 가능 |
Prometheus 대응 | Prometheus 지표를 표준으로 지원 |
파라미터 오버라이 | Git의 ksonnet / helm 매개 변수 덮어 쓰기 가능 |
작동 원리
- Argo CD는 원하는 애플리케이션 상태를 정의하기위한 소스로 Git repository를 사용하는 GitOps 패턴을 따른다.
- Kubernetes 매니페스트는 여러 방법으로 지정할 수 있다. (필자는 helm 차트를 사용하였습니다.)
- Argo CD는 지정된 대상 환경에서 원하는 애플리케이션 상태의 배포를 자동화한다.
Argo CD 운영 환경
Argo CD는 Kubernetes의 구성 요소로 작동하므로 온프레미스 또는 클라우드의 Kubernetes 환경에서 작동한다.
- 온프레미스/클라우드에 독자적으로 구축한 Kubernetes 환경
- 클라우드 관리 서비스의 Kubernetes 환경
유사한 기능을 가진 OSS
Kubernetes/GitOps와 호환되는 오픈 소스 CD 도구는 다음과 같다.
- Jenkins X
- FluxCD
- Spinnaker
Argo CD 라이센스
Argo CD의 라이센스는 “Apache 라이센스 버전 2”(Apache License version2)라는 라이센스에 따라 공개되며, 영리, 비영리를 불문하고 누구나 자유롭고 무료로 이용, 변경, 재배포할 수 있게 되어 있다.