ArgoCD란?

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.

Argo CD 공식 문서에 타이틀 처럼 박혀있는 문구다.

쿠버네티스의 특징 중 하나는 쿠버네티스 리소스(오브젝트)의 **원하는 상태를 manifest file로 작성(선언)**해서 생성한다. 쿠버네티스 컨트롤러는 리소스의 상태를 계속 확인하면서 처음 선언한 상태에서 벗어나면 다시 처음 선언한 상태로 리소스를 맞추게 된다.

그렇다면 manifest file 자체의 변경(원하는 상태의 변경)에 대해서도 누군가가 감시하고 있다가 변경이 일어났을 때 쿠버네티스에 반영해준다면 좋지 않을까? 이러한 역할을 해주는게 ArgoCD가 해주는 역할이다.

클라우드 네이티브 애플리케이션 환경에서의 소프트웨어는 아주 빠른 주기의 배포 주기와 확장성이 필요하다. 이에 맞게 인프라도 유연하게 대응하기 위해 인프라를 코드로 관리(IaC), CI/CD 파이프라인 구성과 같은 자동화 작업을 구현해야한다.

GitOps는 클라우드 네이티브 환경에 **매번 동일한 인프라를 배포할 수 있는 코드(IaC)**를 Git Repository에 저장해서 버전관리를 하고, pull request나 merge request가 인프라 배포(변경)의 트리거로 동작하고, 이 과정에서 필요한 작업을 CI/CD pipeline을 통해서 실행할 수 있도록하는 시스템을 의미한다.

정리해보자면, ArgoCD는

쿠버네티스 mafimest file(YAML, kustomize, helm chart)를 Git Repository에 저장(선언) 해놓고 - declarative

GitOps시스템과 연동하여 쿠버네티스 클러스터에 애플리케이션을 배포를 할 수 있게끔 도와주는 도구다. - GitOps

ArgoCD 아키텍처