ㅁArgoCD(Argo Continuous Delivery): K8s 환경에서 배포(Delivery)를 Git 기반으로 자동화할 수 있게 도와주는 GitOps 툴
쉽게 말하면, “Git 저장소에 있는 K8s YAML 파일을 기준 삼아서, 클러스터 상태를 그와 동기화(Sync) 시켜주는 도구”
다시 말해, kubectl apply -f를 사람이 직접 입력하지 않아도, Git에 있는 파일만 바꾸면 알아서 반영되게 만드는 게 핵심이다!
ArgoCD는 왜 쓰는가?
ArgoCD를 도입하는 가장 큰 이유는 아래 3가지이다
- 배포의 일관성과 추적성 확보
- Git에 있는 YAML 파일만이 단일 소스(Single Source of Truth)
- 누가 언제 어떤 설정을 바꿨는지 명확히 기록
- 수동 배포 제거
- Jenkins에서 kubectl apply 하던 방식에서 탈피
- Git만 바꾸면 ArgoCD가 알아서 클러스터를 최신 상태로 맞춰줌
- 상태 시각화 및 롤백 기능
- 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 기본 구조에 대해 알아보자!
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
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 |