Argo CD 핵심 개념

Argo CD 핵심 개념

1️⃣ Application: Argo CD의 애플리케이션 개념


Argo CD에서 애플리케이션(Application)은 Git 저장소에 정의된 애플리케이션 구성을 쿠버네티스 클러스터에 배포하는 단위입니다. 애플리케이션은 Git 저장소Kubernetes 클러스터를 연결하는 역할을 합니다.

1. 애플리케이션 구성 요소

애플리케이션은 다음과 같은 주요 요소들로 구성됩니다:

  • Git 저장소 URL: 애플리케이션의 소스 코드 및 배포 설정이 저장된 Git 저장소 주소
  • 클러스터: 애플리케이션이 배포될 Kubernetes 클러스터
  • 네임스페이스: 애플리케이션이 배포될 Kubernetes 네임스페이스
  • 리소스: 애플리케이션의 리소스들 (Deployment, Service, ConfigMap 등)

2. 애플리케이션 생성 예시

argocd app create my-app \
  --repo https://github.com/my-org/my-app.git \
  --path deploy/k8s \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

2️⃣ Project: 여러 애플리케이션을 관리하는 단위

Project는 여러 애플리케이션을 관리하는 단위로, 애플리케이션 그룹을 정의하고, 리소스 접근 제어를 설정할 수 있는 기능을 제공합니다. 이를 통해 조직 내 여러 환경에 대해 더 효율적으로 관리할 수 있습니다.

1. Project 구성 요소

  • Git 저장소: 각 애플리케이션의 Git 저장소를 정의
  • 리소스 제한: 프로젝트 내 애플리케이션들이 사용할 수 있는 리소스의 범위를 제한
  • RBAC 설정: 각 애플리케이션에 대한 접근 권한을 제어

2. Project 생성 예시

argocd proj create my-project \
  --description 'My Project for production apps' \
  --src-repo https://github.com/my-org/ \
  --dest-namespace default \
  --dest-server https://kubernetes.default.svc

3️⃣ Sync: 쿠버네티스 클러스터와 Git 상태 동기화

Sync는 Argo CD의 핵심 기능으로, Git 저장소에 정의된 상태를 쿠버네티스 클러스터와 동기화합니다. Sync가 발생하면 Argo CD는 Git에서 지정된 리소스를 가져와 쿠버네티스 클러스터에 적용하고, 클러스터 상태를 업데이트합니다.

1. Sync 동작 예시

  1. 사용자가 Git 저장소에서 애플리케이션의 설정을 변경
  2. Argo CD가 Git 저장소를 모니터링하고 변경 사항을 감지
  3. 클러스터에 설정 변경 사항을 적용하여 동기화 완료

2. Sync 상태 확인

argocd app sync my-app

4️⃣ Sync Policy: 자동 vs 수동 동기화 모드

Sync Policy는 동기화 방식에 대한 설정으로, 자동 또는 수동 모드로 구분할 수 있습니다.

1. 자동 동기화 (Auto Sync)

자동 동기화 모드에서는 Git 저장소와 클러스터의 상태가 다를 경우 자동으로 동기화가 이루어집니다.

  • 장점: 자동으로 배포되어 실시간으로 최신 상태를 유지할 수 있음
  • 단점: 실수로 잘못된 설정이 배포될 위험 있음

2. 수동 동기화 (Manual Sync)

수동 동기화 모드에서는 Git 저장소와 클러스터의 상태가 다르더라도 수동으로 동기화를 실행해야 합니다.

  • 장점: 실수로 배포를 하지 않아 안전하게 관리 가능
  • 단점: 수동으로 동기화 작업을 해야 하므로 관리가 번거로울 수 있음

3. Sync Policy 설정 예시

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    retry:
      limit: 3

5️⃣ Health Status: 애플리케이션 상태 모니터링

Argo CD는 애플리케이션의 상태를 모니터링하고 이를 Health Status로 표시합니다. Health Status는 애플리케이션이 정상적으로 작동하고 있는지, 아니면 문제가 발생했는지를 나타냅니다.

1. Health Status 유형

  • Healthy: 애플리케이션이 정상적으로 동작 중
  • Degraded: 애플리케이션이 예상보다 성능이 낮거나 일부 기능이 동작하지 않음
  • Progressing: 애플리케이션이 배포 중이거나 업데이트 중
  • Suspended: 애플리케이션이 중지된 상태

2. Health 상태 확인

argocd app get my-app

6️⃣ Sync Hooks: 배포 전후 작업 실행

Sync Hooks는 애플리케이션의 배포 전후에 특정 작업을 자동으로 실행할 수 있게 해주는 기능입니다. 이를 통해 배포 과정에서 필수적인 설정 작업을 자동화할 수 있습니다.

1. Sync Hooks의 종류

  • PreSync: 애플리케이션 배포 전에 실행되는 작업
  • Sync: 애플리케이션 배포 중에 실행되는 작업
  • PostSync: 애플리케이션 배포 후에 실행되는 작업
  • Sync Failure: 배포 실패 시 실행되는 작업

2. Sync Hook 예시

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  syncPolicy:
    syncOptions:
      - CreateNamespace=true
  hooks:
    - exec:
        command: ["/bin/sh", "-c", "echo 'PreSync Hook'"]
    - exec:
        command: ["/bin/sh", "-c", "echo 'PostSync Hook'"]
RSS Feed
마지막 수정일자