1. ArgoCD 소개
- ArgoCD는 쿠버네티스를 위한 선언적 GitOps 지속적 배포(CD) 도구입니다.
- Git 저장소에 있는 애플리케이션 정의와 구성을 쿠버네티스 클러스터의 원하는 상태로 자동으로 동기화합니다.
- 애플리케이션 배포와 라이프사이클 관리를 자동화하여 개발자와 운영팀의 작업을 단순화합니다.
1.1 GitOps란?
- GitOps는 인프라와 애플리케이션 구성을 코드로 관리하는 방식입니다.
- Git을 단일 진실 공급원(Single Source of Truth)으로 사용합니다.
- 모든 변경사항은 Git을 통해 이루어지며, 자동으로 클러스터에 반영됩니다.
- 버전 관리, 감사, 롤백이 용이하며 협업에 이점이 있습니다.
1.2 ArgoCD의 주요 특징
- 자동 동기화: Git 저장소의 변경사항 을 자동으로 감지하고 클러스터에 적용
- 다양한 배포 전략 지원: Blue/Green, Canary, Rolling Update 등
- 강력한 보안: RBAC, SSO 통합, 다중 테넌시 지원
- 웹 UI: 직관적인 대시보드를 통한 애플리케이션 상태 모니터링
- 다양한 매니페스트 도구 지원: Helm, Kustomize, Jsonnet 등
2. ArgoCD 아키텍처
2.1 주요 컴포넌트
- API 서버
- ArgoCD의 핵심 컴포넌트로 비즈니스 로직 처리
- REST API 엔드포인트 제공
- gRPC를 통한 다른 컴포넌트와의 통신
- Repository Server
- Git 저장소의 애플리케이션 매니페스트 캐싱
- 저장소 인증 관리
- 매니페스트 생성 (Helm, Kustomize 등)
- Application Controller
- 실제 클러스터 상태 모니터링
- Git의 원하는 상태와 실제 상태 비교
- 필요한 경우 동기화 수행
2.2 동작 방식
- ArgoCD는 선언적 방식으로 작동합니다
- Argo CD는 쿠버네티스 컨트롤러로 구현되어 있으며, 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재의 실제 상태 를 Git 저장소에 명시된 원하는 목표 상태와 비교합니다.
- 실제 상태가 목표 상태와 다른 배포된 애플리케이션은 'OutOfSync' (동기화 이탈) 상태로 간주됩니다.
- Argo CD는 이러한 차이점을 보고하고 시각화하며, 자동 또는 수동으로 실제 상태를 원하는 목표 상태로 다시 동기화할 수 있는 기능을 제공합니다.
- Git 저장소의 원하는 목표 상태에 대한 모든 수정사항은 자동으로 적용되어 지정된 대상 환경에 반영될 수 있습니다.
- 동작 방식
- Git 저장소에 원하는 상태 정의
- ArgoCD가 주기적으로 상태 확인
- 차이가 발견되면 자동 또는 수동으로 동기화
- 변경사항 적용 후 결과 모니터링
3. ArgoCD 설치 및 구성
3.1 설치 준비
- 쿠버네티스 클러스터가 필요합니다.
- kubectl이 구성되어 있어야 합니다.
- Git 저장소 접근 권한이 필요합니다.
3.2 설치 과정
네임스페이스 생성