-
ArgoCD 설치 (Helm)Kubernetes 2025. 3. 23. 18:35
ArgoCD란?
Argo CD는 GitOps 패턴을 따라 Git 저장소를 원하는 애플리케이션 상태를 정의하는 Source of Truth으로 사용하며, Kubernetes 컨트롤러로 구현된 도구입니다. 실행 중인 애플리케이션의 현재 실제 상태를 지속적으로 모니터링하고, Git 저장소에 지정된 원하는 대상 상태와 비교하여 관리합니다.
주요 기능 및 동작 원리
상태 비교 및 동기화
- 배포된 애플리케이션의 실제 상태가 대상 상태와 일치하지 않을 경우, 해당 애플리케이션은 OutOfSync 상태로 간주됩니다.
- Argo CD는 이러한 상태 차이를 보고 및 시각화하며, 실제 상태를 원하는 상태로 자동 또는 수동으로 동기화할 수 있습니다.
- Git 저장소의 대상 상태가 수정되면 변경 사항을 자동으로 적용하여 지정된 대상 환경에 반영합니다.
Kubernetes 매니페스트 관리
Kubernetes 매니페스트는 다음과 같은 다양한 방식으로 지정할 수 있습니다:
- Kustomize 애플리케이션
- Helm 차트
- Jsonnet 파일
- YAML/JSON 매니페스트가 포함된 일반 디렉토리
- 사용자가 구성한 구성 관리 플러그인을 사용하는 커스텀 도구
자동화된 애플리케이션 배포
Argo CD는 원하는 애플리케이션 상태를 지정된 대상 환경에 자동으로 배포합니다.
- 애플리케이션 배포는 Git 커밋, 브랜치 업데이트, 또는 태그를 추적하여 이루어집니다.
- 다양한 추적 전략에 대한 정보는 Tracking Strategies에서 확인할 수 있습니다.
구성 요소
API 서버
API 서버는 Web UI, CLI, CI/CD 시스템에서 사용하는 API를 노출하는 gRPC/REST 서버입니다. 다음과 같은 주요 역할을 수행합니다:
- 애플리케이션 관리 및 상태 보고
- 애플리케이션 작업 수행 (예: 동기화, 롤백, 사용자 정의 작업)
- 저장소 및 클러스터 자격 증명 관리 (Kubernetes 비밀로 저장)
- 외부 ID 공급자에 대한 인증 및 인증 위임
- RBAC(역할 기반 액세스 제어) 적용
- Git 웹훅 이벤트에 대한 리스너/포워더
저장소 서버
저장소 서버는 애플리케이션 매니페스트를 포함하는 Git 저장소의 로컬 캐시를 유지 관리하는 내부 서비스입니다. 다음 입력값을 기반으로 Kubernetes 매니페스트를 생성하고 반환하는 역할을 합니다:
- 저장소 URL
- 리비전(커밋, 태그, 브랜치)
- 애플리케이션 경로
- 템플릿 관련 설정: 매개변수, Helm values.yaml
애플리케이션 컨트롤러
애플리케이션 컨트롤러는 Kubernetes 컨트롤러로, 실행 중인 애플리케이션을 지속적으로 모니터링하며 실제 상태와 저장소에 지정된 대상 상태를 비교합니다. 다음과 같은 역할을 수행합니다:
- OutOfSync 상태의 애플리케이션 감지 및 선택적 수정 작업 수행
- 생명주기 이벤트(PreSync, Sync, PostSync)에 대한 사용자 정의 훅 호출
ArgoCD Helm 설치
- 저장소 추가
helm repo add argo https://argoproj.github.io/argo-helm
- +) HA 구성 values yaml 작성, service type 변경
redis-ha: enabled: true controller: replicas: 1 server: replicas: 2 service: type: LoadBalancer repoServer: replicas: 2 applicationSet: replicas: 2
- 설치
helm install argocd argo/argo-cd -n argocd --create-namespace -f argocd-values.yaml
초기 비밀번호 확인 및 변경
UI에서 비밀번호 변경
- ID : admin
- 초기 비밀번호 : argocd-initial-admin-secret 참고
kubectl get secret argocd-initial-admin-secret -n argo-cd -o jsonpath='{.data.password}' | base64 --decode
CLI로 비밀번호 변경
CLI 설치 방법 : https://github.com/argoproj/argo-cd/releases/tag/v2.13.3
- 초기 비밀번호 확인
argocd admin initial-password -n argocd
- 로그인
argocd login <ARGOCD_SERVER>
- 비밀번호 변경
argocd account update-password
Reference
'Kubernetes' 카테고리의 다른 글
Prometheus & Grafana - 1) 개요 (0) 2025.03.23 CloudNativePG (0) 2025.03.23 MetalLB 설치하기 (0) 2025.03.22 Harbor 설치 (Helm) (0) 2025.03.21 [K8S] kubespray inventory_builder 제거 (0) 2025.03.21