'CICD/Argo'에 해당되는 글 2건

아래 이미지를 참고하며 글을 읽으면 이해에 도움이 된다.

 

1. Argo CD 컴포넌트

Argo CD 를 설치하면 생성되는 컴포넌트들과 그 역할은 다음과 같다.

컴포넌트명(Pod) 역할
Server Argo CD 의 API 서버이면서, Argo CD 대시보드 역할. argocd CLI 명령을 받는 서버임
Repo Server 배포용 Git Repository 에 연결되어 클러스터에 배포할 매니페스트를 생성해줌
Application Controller k8s 클러스터의 리소스를 모니터링하며, Repo Server 로부터 받아온 Git 의 매니페스트와 클러스터의 리소스 상태가 동일한지 비교함. 동일하지 않은 경우 Git 매니페스트 기반으로 리소스 apply 를 하도록 Kube API 로 요청을 보냄 
Notification Argo CD 에서 발생하는 이벤트를 외부로 트리거해줌(Slack 연동 등에 사용)
Dex 연결된 솔루션에 대한 통합 인증을 위해 SSO 같은 IAM 솔루션을 연동해줌
Redis Kube API 에 대한 요청, 배포용 Git Repository 에 대한 요청을 캐싱해줌
ApplicationSet Controller CICD 서버에서 모든 환경의 k8s 클러스터를 배포하는 경우, 여러 환경(멀티 클러스터)에 대한 app 패키징이 필요한데, 이를 관리하기 편하도록 템플릿화 해줌
Kube API kube-apiserver 로 배포 명령어를 전송해줌

 

2. Argo CD 가 배포용 Git 의 배포구성을 클러스터에 적용하는 워크플로우

  1. Argo CD 가 배포용 Git 저장소의 배포구성 변경사항을 쿠버네테스 클러스터에 적용하는 순서는 아래와 같다.
  2. Repo Server 는 배포파일이 저장된 Git Repository 를 감시하며, 변경사항이 존재하면 해당 변경사항으로 배포할 매니페스트를 생성한다.(=> Desired Manifest) 참고로, Argo CD 는 패키지 매니저인 Helm, Kustomize 를 내장하고 있기 때문에 별도로 설치할 필요가 없으며, Git Repository 의 배포 파일 구성에 따라 자동으로 패키지 매니저(또는 기본 매니페스트)를 인식하여 작동한다.
  3. 매니페스트를 Application Controller 로 전달한다.
  4. Application Controller 는 클러스터의 현재 리소스와 전달받은 매니페스트를 비교하며, 변경사항이 있을시 Kube API 로 변경사항을 전달한다.
  5. Kube API 는 전달받은 변경사항을 클러스터에 적용하도록 kube-apiserver 에 배포명령을 전달한다.
  6. 클러스터에 적용이 완료되면 클러스터의 현재 리소스 상태를 기반으로 Live Manifest 를 생성한다.

 

3. Desired Manifest vs Live Manifest

Live Manifest 는 클러스터의 실제 리소스를 기반으로 만들어진다.(Live Manifest 가 먼저 만들어지고, 이를 기반으로 클러스터에 배포되는 것이 아님에 유의하자.) Argo CD 에서 편의기능으로 Live Manifest 를 수정하면 클러스터에 동기화 되도록 지원해주긴 한다.

Desired Manifest 는 Argo CD 의 Repo Server 가 만들며, 배포용 Git 의 매니페스트를 기반으로 만든다. 기본적으로 Git 의 수정사항이 발생하면 최대 3분 이내에 Desired Manifest 가 생성된다.(3분 주기 Sync)

주의할 점은, Argo CD 대시보드에서 볼 수 있는 Diff 는 Desired Manifest vs Live Manifest 가 아니라, 배포시 변경될 부분을 표시해준다. 즉, Live Manifest 를 직접 수정해서 k8s 클러스터에 변경 배포가 일어났더라도, 그 사항이 Desired Manifest 에도 설정된 사항이 아니라면, 덮어씌워지지 않을 것이기 때문에 Diff 에 표시되지 않는다는 점에 주의하자.

'CICD > Argo' 카테고리의 다른 글

[ARGO] Argo 의 대표적인 제품  (0) 2026.05.28
블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

1. Argo CD

쿠버네티스 전용 배포 솔루션이다. 배포파일(쿠버네티스 리소스 매니페스트, helm 패키지, kustomize 패키지) 레포지토리로 git 저장소가 요구된다. 지정한 배포파일 저장소의 특정 디렉토리를 감시하며, 변경사항이 발생하면 클러스터의 현재 배포상태와 비교하여 변경된 부분을 자동으로 배포해준다.

 

2. Argo Image Updater

Argo CD 에 추가하여 사용하는 배포 솔루션이다.(Argo CD 없이 독립적으로 사용 불가) Argo CD 는 기본적으로 연결해놓은 git 기반 배포 레포지토리의 소스코드 변경사항을 지켜보고, 변경이 일어날 시 자동으로 클러스터에 배포를 진행한다. 하지만 Argo Image Updater 를 설치하면 Docker Hub 같은 컨테이너 레지스트리의 이미지를 지켜보게 할 수 있고, 이미지의 태그(버전)이 변경되면 이 변경사항을 github 의 배포 레포지토리에 커밋해준다. 배포 레포지토리의 소스코드가 변경되었으므로, 이후의 배포 과정은 Argo CD 가 기존대로 진행한다.

 

3. Argo Rollouts

쿠버네티스의 Deployment 는 기본 배포 전략으로 RollingUpdate 와 Recreate 만 지원한다. Argo Rollouts 는 Blue/Green 배포나 Canary 배포를 지원해주는 솔루션이다. ArgoCD 를 사용하지 않고 Rollouts 만 사용할 수도 있다.

 

4. Argo Events

kafka 와 같이 이벤트 버스 역할을 하는 솔루션이다. 여러 시스템간에 이벤트를 주고 받는 통로의 역할을 한다.

 

5. Argo Workflow

airflow, kubeflow 와 같은 워크플로우 관리 도구이다. 작업의 실행 순서도를 정의할 수 있다.

'CICD > Argo' 카테고리의 다른 글

[ARGO] Argo CD 아키텍쳐  (0) 2026.06.01
블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,