클라우드 타고 포트와 파도
article thumbnail

쿠버네티스를 좀 더 깔끔하게 운영하고 싶다면, Argo CD는 정말 괜찮은 선택입니다. 이 글에서는 Argo CD를 설치하고, Git 저장소를 연동해 애플리케이션을 배포하는 전체 흐름을 적어볼까 해요.

 

Argo CD 같은 CD 도구 없이 운영 중이었는데,
👉 운영 환경과 Git 저장소 간 상태 불일치,
👉 로컬에서 수동으로 배포 스크립트를 실행해야 하는 구조,
👉 배포에 시간이 오래 걸리고 이력 추적도 어려운 상황이 반복됐어요.

 

이런 구조에서는 안정적인 운영도, 빠른 배포도 어렵다는 걸 계속 체감했고, 결국 Argo CD 도입을 고민하게 됐습니다.

 

GitOps라는 개념이 익숙하지 않다면 간단하게 설명하자면, 애플리케이션의 배포 설정을 Git에 모두 저장하고, Git을 '단일 진실 소스(Single Source of Truth)'로 삼아 배포와 동기화를 관리하는 방식이에요. 즉, Git에 Push만 하면 Argo CD가 알아서 클러스터에 배포해주는 거죠. 이게 진짜 편하고 안전해요.

 

현재 많은 팀이 GitHub Actions를 통해 CI/CD를 구성하고 있지만, CD 영역에서 실제 배포의 신뢰성과 안정성을 확보하기 위해서는 별도의 CD 도구 도입이 중요합니다. 특히 Helm upgrade를 CLI로 수동으로 관리하거나, 롤백 및 이력관리가 어려운 경우에는 Argo CD 같은 도구가 강력한 대안이 될 수 있다고 생각해요.

 

사전 준비 사항

시작하기 전에 몇 가지 준비물이 필요해요:

  • 쿠버네티스 클러스터 (Minikube, EKS, GKE 등 아무거나 가능)
  • kubectl, helm, git CLI 툴 설치
  • 깃 저장소 하나 (퍼블릭이든 프라이빗이든 상관없어요)

로컬 실습을 원한다면 Minikube를 추천합니다. 설치가 간단하고 테스트 환경으로 적합해요. Helm은 템플릿 기반 배포 도구인데, Argo CD와 함께 쓰면 반복되는 작업이 매우 줄어듭니다.

 

Argo CD 설치 

2-1. YAML 방식으로 간단하게 설치하기

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

 

2-2. Helm으로 설치하고 싶다면? 

조금 더 커스터마이징을 하고 싶거나, 운영 환경에서 유지보수를 고려한다면 Helm으로 설치하는 걸 추천합니다.

helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm install argocd argo/argo-cd -n argocd --create-namespace

 

만약 Helm chart를 로컬로 다운로드해 수정하고 싶다면:

helm pull argo/argo-cd --untar
cd argo-cd
vi values.yaml # 필요한 옵션 수정 후
helm upgrade --install argocd . -n argocd -f values.yaml

Ingress 설정 시, server.insecure: true 와 함께 healthcheck 관련 annotation을 설정하지 않으면 307 오류로 접속이 안 되는 경우가 있으니 유의하세요.

 

Argo CD 웹 UI 접속해보기

3-1. 포트포워딩으로 브라우저에서 보기

kubectl port-forward svc/argocd-server -n argocd 8080:443

 

브라우저에서 https://localhost:8080으로 접속하면 로그인 창이 뜹니다.

 

3-2. 초기 비밀번호 확인

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

ID는 admin, 비밀번호는 위 명령어 결과입니다. 보안을 위해 초기 비밀번호는 CLI 또는 UI에서 바로 변경하세요.

argocd login localhost:8080
argocd account update-password

 

Argo CD CLI 설치하고 로그인하기

CLI는 자동화, 배포 스크립트, 상태 확인에 매우 유용합니다.

brew install argocd  # macOS
scoop install argocd # Windows

 

로그인 : 

argocd login localhost:8080 --insecure

 

Git 저장소 연동

5-1. Web UI에서 등록

  1. Settings → Repositories
  2. Connect Repo 클릭 후 Git URL 입력
  3. 인증 방법 선택 (HTTPS or SSH)

 

5-2. CLI 사용시

argocd repo add https://github.com/사용자명/저장소명.git \
  --username 사용자명 \
  --password 비밀번호

 

Application 등록해보기

6-1. Web UI 이용

  • Applications → New App
  • App 이름, Repository URL, Branch, Path, Namespace 입력
  • Auto-Sync 활성화 여부 설정

 

6-2. YAML로 CRD 생성

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: testapp
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/사용자명/저장소명.git
    targetRevision: HEAD
    path: app
  destination:
    server: https://kubernetes.default.svc
    namespace: test
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
kubectl apply -f application.yaml

 

동기화(sync)하고 배포 확인 

  • Web UI에서 SYNC 버튼을 클릭해 수동 동기화
  • CLI에서 :
argocd app sync testapp
argocd app get testapp

배포 확인:

kubectl get all -n test

 

참고 링크

https://github.com/argoproj/argo-helm

https://argo-cd.readthedocs.io/en/stable/ 

profile

클라우드 타고 포트와 파도

@cloudwave

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!