본문 바로가기
DevOps/CI-CD

[CI-CD] ArgoCD를 쓰는 이유

by 클레어몬트 2025. 5. 2.

ㅁArgoCD(Argo Continuous Delivery): K8s 환경에서 배포(Delivery)를 Git 기반으로 자동화할 수 있게 도와주는 GitOps 툴

개인적으로 너무 귀엽다..ㅋㅋㅋㅋ 연준님의 슬랙 프사가 이 캐릭터다!

 

 

쉽게 말하면, “Git 저장소에 있는 K8s YAML 파일을 기준 삼아서, 클러스터 상태를 그와 동기화(Sync) 시켜주는 도구”

다시 말해, kubectl apply -f를 사람이 직접 입력하지 않아도, Git에 있는 파일만 바꾸면 알아서 반영되게 만드는 게 핵심이다!

 

 

 

 

ArgoCD는 왜 쓰는가?

ArgoCD를 도입하는 가장 큰 이유는 아래 3가지이다

 

  1. 배포의 일관성과 추적성 확보
    • Git에 있는 YAML 파일만이 단일 소스(Single Source of Truth)
    • 누가 언제 어떤 설정을 바꿨는지 명확히 기록
  2. 수동 배포 제거
    • Jenkins에서 kubectl apply 하던 방식에서 탈피
    • Git만 바꾸면 ArgoCD가 알아서 클러스터를 최신 상태로 맞춰줌
  3. 상태 시각화 및 롤백 기능
    • Web UI나 CLI에서 배포 상태를 실시간으로 확인 가능
    • 이전 버전으로 손쉽게 롤백 가능

 

 

 

※ ArgoCD 설치는 Helm 없이도 가능하지만, Terraform이나 GitOps와 연동하는 경우에는 Helm 으로 설치하는 걸 추천한다

 

https://artifacthub.io/packages/helm/argo/argo-cd

 

argo-cd 7.9.0 · argoproj/argo

A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.

artifacthub.io

ArgoCD 웹 UI

 

 

 

그렇다면 ArgoCD 기본 구조에 대해 알아보자!

ArgoCD는 크게 3가지를 기준으로 동작한다

 

 

내가 설정했던 application.yaml 파일은 다음과 같다

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: sk029-my-app
  namespace: skala-argocd
spec:
  destination:
    namespace: skala-practice
    server: https://96BD83E8CE5CE0396D006BC5CEB350B0.gr7.ap-northeast-2.eks.amazonaws.com
  project: skala
  source:
    path: k8s
    repoURL: https://github.com/himang10/tekton-source.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - PrunePropagationPolicy=background

CD 파이프라인 구성을 위한 Application 생성 결과 화면
※ image의 버전 변경을 통해 yaml에 변경 결과를 반영해야 재배포 실행

 

 

 

ArgoCD를 적용시키는 유명 기업들이 굉장히 많다!

카카오스타일, 카카오뱅크, 카카오엔터프라이즈, 당근, 라인, 중고나라, SK플래닛, CJ ENM 등등..

 

 

.

.

.

.

이제는 Jenkins에서 배포 명령을 직접 실행하기보다, ArgoCD를 통해 Git 기반의 선언적 배포 방식으로 전환하는 게 점점 더 일반화되고 있다.

이번 Application 설정처럼, Git 저장소 구조와 deployment.yaml, service.yaml 등이 잘 구성되어 있으면 개발자는 단순히 코드를 커밋하는 것만으로 배포까지 연결되는 자동화된 흐름을 누릴 수 있는 것이다!

'DevOps > CI-CD' 카테고리의 다른 글

[CI-CD] Jenkinsfile 작성법  (0) 2025.05.02
[CI-CD] 젠킨스(Jenkins) 개념 잡기  (0) 2025.04.29