ArgoCD
Argo Continuous Delivery
Kubernetes용 GitOps CD 도구. Git 저장소와 클러스터 상태 동기화.
Argo Continuous Delivery
Kubernetes용 GitOps CD 도구. Git 저장소와 클러스터 상태 동기화.
ArgoCD는 2018년 Intuit에서 개발하여 오픈소스로 공개한 Kubernetes 네이티브 GitOps CD(Continuous Delivery) 도구입니다. CNCF(Cloud Native Computing Foundation) 졸업 프로젝트로, 기업 환경에서 신뢰성이 검증되었습니다.
GitOps의 핵심 원칙을 따라 Git 저장소를 단일 진실 공급원(Single Source of Truth)으로 사용합니다. 선언적 방식으로 애플리케이션을 정의하고, 실제 클러스터 상태가 Git의 원하는 상태와 동기화되도록 자동으로 관리합니다.
ArgoCD는 지속적으로 클러스터 상태를 감시하며, 드리프트(Drift)가 발생하면 자동 또는 수동으로 동기화합니다. 멀티 클러스터 관리, RBAC, SSO 통합, 감사 로그 등 엔터프라이즈급 기능을 제공합니다.
실무에서는 Helm, Kustomize, Jsonnet 등 다양한 템플릿 도구와 통합하여 사용합니다. 웹 UI, CLI, API를 통한 배포 관리가 가능하며, ApplicationSet으로 대규모 멀티 테넌트 환경도 효율적으로 관리할 수 있습니다.
# ArgoCD Application CRD 예제
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/my-app.git
targetRevision: HEAD
path: k8s/overlays/production
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true # Git에서 삭제된 리소스 자동 정리
selfHeal: true # 수동 변경 자동 롤백
syncOptions:
- CreateNamespace=true
- ApplyOutOfSyncOnly=true
시니어: "이번 스프린트부터 ArgoCD로 GitOps 전환하려고 해요. kubectl apply 직접 실행 금지하고, 모든 배포는 Git PR 머지로만 진행합니다."
주니어: "클러스터에서 직접 수정한 게 있으면 어떻게 되나요?"
시니어: "selfHeal 설정되어 있으면 ArgoCD가 자동으로 Git 상태로 되돌려요. 운영 환경 일관성 유지에 필수입니다."
면접관: "GitOps 방식의 CD와 전통적인 push 방식 CD의 차이점을 설명해주세요."
지원자: "Push 방식은 CI 시스템이 클러스터에 직접 배포하지만, GitOps는 클러스터 내 에이전트가 Git 상태를 pull해서 적용합니다. ArgoCD 같은 도구는 보안상 이점이 있고, Git 커밋 히스토리가 배포 이력이 되어 감사 추적이 용이합니다."
리뷰어: "Application 리소스에 ignoreDifferences 설정이 없네요. HPA가 관리하는 replicas 필드는 무시해야 하지 않나요?"
개발자: "맞습니다. HPA와 충돌 방지를 위해 ignoreDifferences에 replicas 필드 추가하겠습니다."