

ArgoCD는 Kubernetes를 위한 선언적(Declarative) GitOps 지속적 배포(Continuous Delivery) 도구입니다. Git 저장소를 "단일 진실 소스(Single Source of Truth)"로 사용하여 Kubernetes 애플리케이션을 자동으로 배포하고 관리하는 데 사용됩니다.
GitOps는 Git을 중심으로 한 운영 모델로, 다음과 같은 특징을 가집니다:

ArgoCD는 지정된 Git 저장소와 Kubernetes 클러스터를 지속적으로 모니터링하여 두 환경 간의 상태 차이를 감지합니다.
설정에 따라 Git 저장소의 변경사항이 감지되면 자동으로 클러스터 상태를 업데이트합니다.
직관적인 대시보드를 통해 애플리케이션 상태를 시각적으로 모니터링할 수 있습니다.

여러 Kubernetes 클러스터를 하나의 ArgoCD 인스턴스로 관리할 수 있습니다.
~/.kube/config)# ArgoCD 네임스페이스 생성
kubectl create namespace argocd
# ArgoCD 설치
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
최신 버전은 ArgoCD 릴리스 페이지에서 다운로드할 수 있습니다.
Mac/Linux (Homebrew):
brew install argocd
kubectl port-forward svc/argocd-server -n argocd 8080:443
접근 URL: https://localhost:8080
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
argocd admin initial-password -n argocd
argocd login <ARGOCD_SERVER>
# 사용자명: admin
# 비밀번호: 위에서 확인한 초기 비밀번호
argocd account update-password

# 네임스페이스 설정
kubectl config set-context --current --namespace=argocd
# 예제 애플리케이션 생성
argocd app create guestbook \
--repo https://github.com/argoproj/argocd-example-apps.git \
--path guestbook \
--dest-server https://kubernetes.default.svc \
--dest-namespace default

# 애플리케이션 상태 확인
argocd app get guestbook
# 애플리케이션 동기화 (배포)
argocd app sync guestbook

ArgoCD에서 관리하는 배포 단위로, Git 저장소의 특정 경로와 Kubernetes 클러스터의 특정 네임스페이스를 연결합니다.
여러 애플리케이션을 그룹화하고 접근 권한을 관리하는 단위입니다.

외부 클러스터를 ArgoCD에 등록:
# 사용 가능한 컨텍스트 확인
kubectl config get-contexts -o name
# 클러스터 추가
argocd cluster add docker-desktop
ArgoCD는 Helm 차트도 지원합니다:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-helm-app
spec:
source:
repoURL: https://charts.bitnami.com/bitnami
chart: nginx
targetRevision: 13.2.23
helm:
values: |
service:
type: LoadBalancer
ApplicationSet을 사용하면 템플릿을 기반으로 여러 애플리케이션을 자동으로 생성할 수 있습니다.

main: 프로덕션 환경staging: 스테이징 환경 develop: 개발 환경# 애플리케이션 로그 확인
argocd app logs guestbook
# 이벤트 확인
kubectl get events -n default
# 강제 동기화
argocd app sync guestbook --force
ArgoCD는 GitOps 패턴을 구현하는 강력한 도구로, Kubernetes 환경에서 애플리케이션 배포를 자동화하고 관리하는 데 매우 유용합니다. Git을 중심으로 한 선언적 배포 방식을 통해 배포 과정의 투명성과 추적 가능성을 크게 향상시킬 수 있습니다.
시작은 간단한 예제 애플리케이션부터 시작하여, 점차 복잡한 멀티 클러스터 환경과 고급 기능들을 활용해 나가시길 권장합니다.