Argo CD Sync 및 배포 전략

Argo CD Sync 및 배포 전략

1️⃣ 자동 vs 수동 Sync


Argo CD에서 애플리케이션의 상태를 Git 리포지토리와 동기화하는 방식에는 두 가지 주요 방식이 있습니다: 자동 Sync와 수동 Sync.

1. 자동 Sync

자동 Sync는 Argo CD가 Git 리포지토리의 변경사항을 감지하고 이를 Kubernetes 클러스터에 자동으로 적용하는 방식입니다. 이 방식은 개발 및 운영 환경에서 애플리케이션 상태를 항상 최신 상태로 유지하는 데 유용합니다.

  • 자동 Sync는 Git 리포지토리의 변경사항을 자동으로 감지하여 즉시 클러스터에 반영합니다.
  • 예를 들어, syncPolicy 설정에서 automated 옵션을 활성화하면 자동 Sync가 작동합니다.

예시: 자동 Sync 설정

syncPolicy:
  automated:
    prune: true  # 사용되지 않는 리소스를 자동으로 삭제
    selfHeal: true  # 변경된 리소스를 자동으로 수정

2. 수동 Sync

수동 Sync는 사용자가 명시적으로 동기화 작업을 트리거할 때만 적용됩니다. 이 방식은 배포 전에 확인 및 검토를 원하는 경우 유용합니다.

  • 수동 Sync는 Argo CD UI나 CLI에서 명시적으로 동기화 작업을 트리거해야 합니다.
  • 실수로 배포되는 것을 방지하려는 상황에서 사용됩니다.

예시: 수동 Sync

Argo CD UI에서 “Sync” 버튼을 클릭하여 수동으로 동기화를 수행할 수 있습니다.


2️⃣ Sync 옵션 및 동작 방식

Argo CD에서 Sync는 여러 가지 옵션을 제공하며, 이 옵션들은 애플리케이션의 배포 방식을 세밀하게 제어할 수 있도록 돕습니다.

1. Sync 옵션

  • Prune: Git 리포지토리에서 삭제된 리소스를 Kubernetes 클러스터에서 자동으로 삭제합니다.
  • SelfHeal: 리소스가 Git 리포지토리와 다를 경우, 자동으로 클러스터 상태를 복구합니다.

2. 동작 방식

Sync 동작은 Git 리포지토리와 Kubernetes 클러스터 간의 차이를 분석하고, 이를 기반으로 새로운 리소스를 생성하거나 기존 리소스를 수정/삭제합니다. 이 과정은 Argo CD의 Helm, Kustomize, 또는 Manifests를 통해 수행됩니다.

3. 예시: Sync 옵션 설정

syncPolicy:
  automated:
    prune: true
    selfHeal: true

이 설정은 자동 Sync를 활성화하고, 불필요한 리소스를 정리하며, 변경 사항을 즉시 클러스터에 반영합니다.


3️⃣ Sync Waves & Phases (배포 단계 제어)

Argo CD는 애플리케이션 배포를 여러 단계로 나누어 배포할 수 있는 Sync Waves 기능을 제공합니다. 이를 통해 배포 작업의 순서를 제어하고, 복잡한 배포 작업을 효율적으로 관리할 수 있습니다.

1. Sync Waves

Sync Waves는 배포 작업을 여러 단계로 나누어 순차적으로 실행할 수 있게 합니다. 각 Wave는 동기화 단계의 그룹으로, 배포 순서를 설정할 수 있습니다.

2. Phases

Sync Phases는 배포 과정에서 각각의 리소스가 처리되는 순서를 정의합니다. 예를 들어, 데이터베이스 리소스를 먼저 배포하고, 그 다음에 애플리케이션을 배포하는 방식으로 설정할 수 있습니다.

3. 예시: Sync Waves 설정

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - SyncWave=1  # 첫 번째 배포 단계
      - SyncWave=2  # 두 번째 배포 단계

4️⃣ Sync Hooks (PreSync, Sync, PostSync)

Argo CD는 배포 과정 중에 특정 작업을 트리거할 수 있는 Sync Hooks를 제공합니다. Sync Hooks는 배포 작업의 각 단계(PreSync, Sync, PostSync)에 실행할 작업을 정의합니다.

1. PreSync Hook

PreSync는 배포가 시작되기 전에 실행되는 작업입니다. 예를 들어, 배포 전에 데이터베이스 마이그레이션을 실행하거나, 이전 배포 버전에서 데이터를 백업할 수 있습니다.

2. Sync Hook

Sync는 실제 애플리케이션 배포가 이루어지는 시점입니다. 이 단계에서 실제 Kubernetes 리소스를 배포합니다.

3. PostSync Hook

PostSync는 배포 후에 실행되는 작업입니다. 예를 들어, 배포 후 애플리케이션의 상태를 모니터링하거나, 추가적인 설정을 적용할 수 있습니다.

4. 예시: Sync Hook 설정

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncHooks:
      - hook: PreSync
        command: ["sh", "-c", "echo 'Running PreSync task'"]
      - hook: PostSync
        command: ["sh", "-c", "echo 'Running PostSync task'"]

5️⃣ Blue-Green 배포 및 Canary 배포 적용

Argo CD는 Blue-Green 배포Canary 배포 전략을 지원하여, 애플리케이션 배포 시 더 안전하고 점진적인 배포를 할 수 있습니다.

1. Blue-Green 배포

Blue-Green 배포는 새 버전의 애플리케이션을 배포할 때, 기존 버전과 새로운 버전을 동시에 유지하고, 트래픽을 새로운 버전으로 전환하는 전략입니다. 이 방식은 롤백이 쉬운 장점이 있습니다.

2. Canary 배포

Canary 배포는 새 버전의 애플리케이션을 일부 사용자에게만 배포하고, 문제가 없을 경우 점진적으로 배포 대상을 확대하는 방식입니다. 이는 위험을 최소화하며 점진적으로 배포를 관리할 수 있습니다.

3. 예시: Canary 배포 설정

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-canary-app
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/my-org/my-canary-app.git
    targetRevision: HEAD
    path: manifests
  project: default
  syncOptions:
    - CanaryStrategy=true

6️⃣ 배포 롤백 (Rollback) 및 히스토리 관리

배포 롤백은 새로운 버전의 배포가 문제가 발생했을 때 이전 안정적인 버전으로 되돌리는 작업입니다. Argo CD는 배포 히스토리를 관리하며, 손쉽게 롤백을 할 수 있습니다.

1. 롤백

Argo CD는 배포 기록을 저장하여, 사용자가 이전 버전으로 쉽게 롤백할 수 있도록 지원합니다. 이 기능은 배포 중 문제가 발생했을 때 매우 유용합니다.

2. 예시: 롤백 수행

Argo CD UI에서 “Rollback” 버튼을 클릭하거나 CLI에서 다음 명령어를 사용하여 롤백할 수 있습니다.

argocd app rollback my-app --revision <revision_number>
RSS Feed
마지막 수정일자