[Jenkins] ArgoCD

배창민·2025년 12월 16일
post-thumbnail

ArgoCD 핵심 정리

1. ArgoCD란?

ArgoCD는 Kubernetes 애플리케이션을 GitOps 방식으로 배포·운영하는 오픈소스 도구다.
Git 저장소에 선언적으로 정의된 매니페스트(Desired State)를 기준으로, Kubernetes 클러스터의 실제 상태(Actual State)를 자동으로 감지하고 동기화(Sync) 한다.

핵심 아이디어는 단순하다.

Git을 소스의 진리(Source of Truth)로 삼고
Git 상태와 클러스터 상태를 지속적으로 일치시키는 방식으로 운영

1-1. GitOps 개념

GitOps는 애플리케이션/인프라의 상태를 Git 리포지토리에서 관리하고, 이를 Kubernetes 같은 환경에 자동 적용하는 운영 방법론이다.
ArgoCD는 Kubernetes에서 GitOps를 구현하는 대표 도구다.


2. ArgoCD 등장 배경

Kubernetes 환경에서는 배포 대상이 많고 상태가 복잡해지기 쉽다.

  • 수동 kubectl 적용은 실수/누락이 발생하기 쉬움
  • 운영 환경에서 “현재 무엇이 적용되어 있는지” 추적이 어려움
  • 선언적 매니페스트와 실제 클러스터 상태가 쉽게 불일치함

ArgoCD는 이런 문제를 해결하기 위해 등장했다.

  • 2018년 Intuit에서 시작
  • Git을 기준으로 배포/운영을 자동화하고, 상태 불일치를 감지해 일관성을 유지하는 방향으로 발전

3. ArgoCD 장단점

3-1. 장점

  • GitOps 기반 선언적 배포

    • Git에 정의된 상태를 기준으로 운영 가능
    • 배포 이력과 변경 추적이 명확해짐
  • 자동 동기화

    • Git 변경을 감지해 클러스터에 자동 반영 가능
    • 수동 배포 작업 감소, 일관성 강화
  • UI/CLI 지원

    • 웹 UI와 CLI로 상태/동기화/배포를 관리
  • 멀티 클러스터 지원

    • 여러 Kubernetes 클러스터에 걸쳐 애플리케이션 관리 가능

3-2. 단점

  • Kubernetes 의존

    • Kubernetes 환경에서만 동작
  • 초기 설정 복잡도

    • GitOps 워크플로우/권한/리포지토리 구조 설계가 필요
  • 동적 구성 한계

    • 복잡한 동적 배포 요구가 큰 경우 일부 제약이 생길 수 있음

ArgoCD 주요 개념

1. Repository (리포지토리)

  • 애플리케이션의 선언적 정의(Kubernetes 매니페스트)가 저장된 Git 리포지토리
  • ArgoCD는 이 리포지토리를 기준으로 클러스터 상태를 관리

2. Application (애플리케이션)

  • ArgoCD가 관리하는 배포 단위
  • 특정 리포지토리 경로의 매니페스트를 어떤 클러스터/네임스페이스에 적용할지 정의

3. Cluster (클러스터)

  • ArgoCD가 배포를 수행하는 대상 Kubernetes 클러스터
  • 여러 클러스터를 등록해 관리할 수 있음

4. Sync (동기화)

  • Git 리포지토리 상태와 클러스터 상태를 비교해 일치시키는 과정
  • Git 변경 사항을 클러스터에 반영하거나, 드리프트(불일치)를 감지해 수정하는 방식으로 운영

ArgoCD 기본 워크플로우

ArgoCD의 흐름은 보통 아래 패턴으로 이해하면 된다.

Define → Sync → Deploy

1. Define (정의)

  • Git 리포지토리에 Kubernetes 매니페스트 작성
  • Git에 올라간 선언적 정의가 목표 상태가 됨

2. Sync (동기화)

  • Git 상태와 클러스터 상태를 비교
  • 불일치가 있으면 동기화로 맞춤

3. Deploy (배포)

  • 동기화된 정의대로 애플리케이션이 클러스터에 적용됨
  • 결과적으로 Git의 상태가 곧 운영 상태가 됨

자주 쓰는 CLI 명령

1. 애플리케이션 생성

  • Git 리포지토리의 매니페스트를 기반으로 ArgoCD 관리 대상으로 등록
argocd app create

2. 애플리케이션 동기화

  • Git 리포지토리 최신 상태를 클러스터에 즉시 반영
argocd app sync <app-name>

정리

  • ArgoCD는 Kubernetes GitOps 배포/운영 도구
  • Git을 소스의 진리로 두고 클러스터 상태를 지속적으로 동기화한다
  • 주요 구성 요소는 Repository / Application / Cluster / Sync로 정리 가능
  • 기본 흐름은 Define → Sync → Deploy
  • argocd app create, argocd app sync로 애플리케이션 등록과 동기화가 가능하다
profile
개발자 희망자

0개의 댓글