'2026/06/01'에 해당되는 글 1건

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

 

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
블로그 이미지

망원동똑똑이

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

,