Skip to content

ArgoCD

지원 버전: ArgoCD v2.9+, Argo Rollouts v1.6+ 마지막 업데이트: 2026년 7월 11일

목차

ArgoCD란?

ArgoCD는 Kubernetes를 위한 선언적 GitOps 지속적 배포(Continuous Delivery) 도구입니다. CNCF(Cloud Native Computing Foundation) Graduated 프로젝트로, Git 저장소에 정의된 애플리케이션 상태를 Kubernetes 클러스터에 자동으로 동기화합니다.

ArgoCD는 Git 저장소를 "진실의 원천(Single Source of Truth)"으로 사용하여:

  • 애플리케이션 배포를 자동화
  • 클러스터 상태를 지속적으로 모니터링
  • 원하는 상태와 실제 상태의 차이를 감지하고 조정
  • 배포 이력을 추적하고 롤백 지원

주요 이점

1. 선언적 배포

yaml
# 원하는 상태를 선언적으로 정의
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  source:
    repoURL: https://github.com/myorg/myapp
    path: manifests
  destination:
    server: https://kubernetes.default.svc
    namespace: production

2. 자동화된 동기화

  • Git 변경 시 자동 배포
  • 드리프트(Drift) 감지 및 자체 치유
  • 수동 변경 자동 복구

3. 멀티 클러스터 관리

  • 중앙 집중식 다중 클러스터 관리
  • ApplicationSet을 통한 대규모 배포
  • 클러스터 간 일관성 유지

4. 가시성과 감사

  • 직관적인 웹 UI
  • 배포 이력 및 롤백
  • 실시간 상태 모니터링
  • 감사 로그 자동 생성

5. 프로그레시브 딜리버리

  • Argo Rollouts 통합
  • 블루/그린, 카나리 배포
  • 자동 롤백

아키텍처

ArgoCD는 Kubernetes 컨트롤러 패턴을 따르며, 여러 구성 요소로 이루어져 있습니다:

핵심 컴포넌트

컴포넌트역할설명
API Server인터페이스gRPC/REST API 제공, 인증/인가 처리
Application Controller핵심 로직애플리케이션 상태 모니터링 및 동기화
Repo Server매니페스트 생성Git 저장소에서 매니페스트 렌더링
Redis캐싱매니페스트 캐시, 세션 저장
DexSSOOIDC/SAML/LDAP 인증 브로커
ApplicationSet Controller대규모 배포템플릿 기반 Application 생성
Notifications Controller알림Slack, Email 등 알림 발송

데이터 흐름

핵심 개념

Application

ArgoCD의 기본 배포 단위입니다. Git 저장소의 매니페스트를 특정 클러스터와 네임스페이스에 배포합니다.

yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    server: https://kubernetes.default.svc
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

AppProject

Application을 논리적으로 그룹화하고 접근 제어를 설정합니다.

yaml
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  description: Production applications
  sourceRepos:
    - 'https://github.com/myorg/*'
  destinations:
    - namespace: '*'
      server: https://prod-cluster.example.com
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace

ApplicationSet

템플릿을 사용하여 여러 Application을 자동 생성합니다.

yaml
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-apps
spec:
  generators:
    - clusters: {}
  template:
    metadata:
      name: '{{name}}-app'
    spec:
      source:
        repoURL: https://github.com/myorg/apps
        path: '{{metadata.labels.env}}'
      destination:
        server: '{{server}}'

동기화 상태

상태설명
SyncedGit과 클러스터 상태 일치
OutOfSyncGit과 클러스터 상태 불일치
Unknown상태 확인 불가

헬스 상태

상태설명
Healthy모든 리소스 정상
Progressing배포 진행 중
Degraded일부 리소스 비정상
Suspended일시 중지됨
Missing리소스 없음

버전 지원 정보

2026년 7월 업데이트: ArgoCD 3.x 패치 릴리스

2026년 7월 9일 ArgoCD v3.4.5 패치 릴리스가 공개되었습니다. 현재 3.4가 최신 안정(stable) 릴리스 라인이며, 차기 마이너 버전인 v3.5.0은 rc2까지 진행 중입니다. 아래 표는 2.x 시절 기준으로 작성된 것이므로, 최신 버전별 지원 정보는 ArgoCD 릴리스 페이지를 함께 확인하세요.

ArgoCD 버전

버전Kubernetes 지원주요 기능
v2.131.27 - 1.31최신 안정 버전
v2.121.26 - 1.30ApplicationSet Progressive Syncs
v2.111.26 - 1.30Server-side Apply
v2.101.25 - 1.29Multiple Sources
v2.91.24 - 1.28ApplicationSet Matrix/Merge

Argo Rollouts 버전

버전주요 기능
v1.7최신 안정 버전, ALB 개선
v1.6Istio Gateway API 지원
v1.5Analysis improvements

Kubernetes 호환성

하위 가이드

이 ArgoCD 가이드는 다음 하위 문서로 구성되어 있습니다:

가이드설명난이도
01. 설치 및 구성ArgoCD 설치, CLI 설정, 초기 구성초급
02. Application 심층 분석Application CRD 상세, 소스 유형, 훅중급
03. 동기화 전략자동/수동 동기화, 웨이브, 윈도우중급
04. ApplicationSets9가지 생성기, 템플릿, 대규모 배포고급
05. 트래픽 관리Argo Rollouts, 블루/그린, 카나리고급
06. 프로젝트와 RBACAppProject, RBAC 정책, 멀티테넌시중급
07. 보안SSO, 시크릿 관리, TLS중급
08. 알림Slack, Teams, Webhook 연동중급
09. 모범 사례프로덕션 구성, 성능 최적화, 문제 해결고급

학습 경로

빠른 시작

1. ArgoCD 설치

bash
# 네임스페이스 생성
kubectl create namespace argocd

# ArgoCD 설치
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# 설치 확인
kubectl get pods -n argocd

2. CLI 설치

bash
# macOS
brew install argocd

# Linux
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64

3. 초기 접근

bash
# 포트 포워딩
kubectl port-forward svc/argocd-server -n argocd 8080:443 &

# 초기 비밀번호 가져오기
argocd admin initial-password -n argocd

# 로그인
argocd login localhost:8080

4. 첫 번째 Application 배포

bash
# Application 생성
argocd app create guestbook \
  --repo https://github.com/argoproj/argocd-example-apps.git \
  --path guestbook \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace guestbook

# 동기화
argocd app sync guestbook

# 상태 확인
argocd app get guestbook

5. 웹 UI 접근

브라우저에서 https://localhost:8080으로 접속합니다.

  • 사용자명: admin
  • 비밀번호: 위에서 얻은 초기 비밀번호

Amazon EKS 통합

ArgoCD는 Amazon EKS와 원활하게 통합됩니다:

yaml
# IRSA 설정
apiVersion: v1
kind: ServiceAccount
metadata:
  name: argocd-application-controller
  namespace: argocd
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/ArgoCD
---
# ALB Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server
  namespace: argocd
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/backend-protocol: HTTPS
spec:
  rules:
    - host: argocd.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: argocd-server
                port:
                  number: 443

자세한 EKS 통합 가이드는 설치 및 구성을 참조하세요.

다음 단계

  1. 설치 및 구성: ArgoCD를 클러스터에 설치하고 기본 구성을 완료하세요.

  2. Application 심층 분석: Application CRD의 모든 옵션을 학습하세요.

  3. 동기화 전략: 자동 동기화와 동기화 웨이브를 구성하세요.

참고 자료

퀴즈

이 장에서 배운 내용을 테스트하려면 ArgoCD 설치 퀴즈를 풀어보세요.