시스템 개발 및 관리/이커머스 효율화: NLP 모델 적용

[CI/CD 구축] ArgoCD

Data Jun 2025. 3. 5. 15:44

ArgoCD는 GitOps 기반의 Kubernetes 배포 관리 도구입니다. Git 저장소를 **싱글 소스 오브 트루스(Single Source of Truth)**로 활용하여 자동화된 배포 및 지속적인 동기화를 제공합니다.

ArgoCD의 핵심 원리

Git의 파일, 구조, 코드가 변경되면ArgoCD가 이를 감지하고 자동으로 Kubernetes에 배포

즉, **Git이 Kubernetes 배포의 기준(Single Source of Truth)이 되며, Git 변경 사항이 자동으로 반영되는 방식(GitOps)**입니다.

ArgoCD를 사용하는 이유

GitOps 방식으로 Kubernetes 애플리케이션을 관리

  • 기존 CI/CD 방식과 달리 Git을 실시간으로 Kubernetes 배포와 동기화합니다.
  • Git 저장소의 상태가 실제 Kubernetes 상태와 다르면 자동으로 조정하여 배포를 안정적으로 유지.

자동 배포 및 동기화 (Self-Healing)

  • Kubernetes 클러스터에서 배포 상태를 자동 감지 및 수정합니다.
  • 예를 들어, 누군가 수동으로 변경을 가해도 ArgoCD가 Git 상태로 복원하여 일관성 유지.

Kubernetes 환경에 최적화된 UI & CLI 지원

  • ArgoCD는 웹 UI와 **CLI(Command Line Interface)**를 제공하여 손쉽게 애플리케이션을 배포 및 관리할 수 있음.

ArgoCD를 사용하면 좋은 경우

Kubernetes에서 GitOps를 적용하고 싶은 경우
배포의 일관성과 신뢰성을 높이고 싶은 경우
CI/CD에서 Kubernetes 배포를 더 자동화하고 싶은 경우
운영자가 직접 배포하는 대신 Git에서 관리하고 싶은 경우
멀티클러스터 환경에서 애플리케이션을 배포해야 하는 경우

Install Argo CD

 

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

설명:

  • 첫 번째 명령어: argocd 네임스페이스 생성
  • 두 번째 명령어: ArgoCD 관련 리소스(파드, 서비스 등) 설치

 

이제 kubectl get pods -n argocd 로 설치 상태 확인

 

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

 

  • kubectl patch svc argocd-server -n argocd → ArgoCD 서버의 서비스(argocd-server)를 수정
  • -p '{"spec": {"type": "LoadBalancer"}}' → 서비스 타입을 LoadBalancer로 변경

왜 필요한가?

  • ArgoCD 설치 후 기본 서비스 타입이 ClusterIP내부에서만 접근 가능
  • LoadBalancer로 변경하면 **외부에서 접근 가능한 IP(External IP)**가 할당됨
  • 이후 웹 UI(ArgoCD 대시보드)에 브라우저로 접속 가능

 

ArgoCD CLI를 설치해야 하는 이유

curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64

 

ArgoCD CLI를 설치해야 하는 이유

ArgoCD CLI터미널에서 ArgoCD를 쉽게 관리할 수 있도록 도와주는 도구입니다.

설치하는 이유:

  1. GitOps 자동화 → 터미널에서 argocd app sync 명령어로 애플리케이션 동기화
  2. ArgoCD 서버 제어 → 로그인, 앱 배포, 롤백 등을 CLI에서 직접 실행 가능
  3. 자동화 스크립트 사용 → CI/CD 파이프라인에서 활용 가능
  4. 빠른 문제 해결 → 웹 UI 없이 CLI로 직접 상태 확인 및 디버깅 가능

즉, ArgoCD를 효과적으로 운영하고 배포 자동화를 하기 위해 CLI가 필요합니다

 

ArgoCD 초기 관리자 비밀번호 가져오기

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

이 명령어는 ArgoCD의 초기 관리자(admin) 계정의 비밀번호를 가져오는 역할을 합니다.

🔹 세부 설명:

  1. kubectl -n argocd get secret argocd-initial-admin-secret
    → argocd 네임스페이스에서 초기 관리자 비밀번호가 저장된 시크릿(Secret) 조회
  2. -o jsonpath="{.data.password}"
    → JSON 형식에서 비밀번호 데이터만 추출
  3. | base64 -d
    → 비밀번호가 Base64로 인코딩되어 있어 디코딩(복호화)
  4. ; echo
    → 줄바꿈 추가하여 보기 편하게 출력

결과: admin 계정의 초기 비밀번호가 출력됨 → ArgoCD UI 또는 CLI 로그인 시 사용!

 

 

ArgoCD 레포지토리 인증 및 추가 과정

argocd login <IP>

cat > key.json

ls | grep key.json

argocd repo add asia-northeast3-docker.pkg.dev --type helm --name registry --enable-oci --username _json_key --password "$(cat key.json)"

 

  • ArgoCD 서버에 로그인
  • <IP>는 ArgoCD argocd-server의 EXTERNAL-IP (예: argocd login 35.226.XX.XX)
  • 로그인 후 ArgoCD CLI 사용 가능
  • Google Cloud의 서비스 계정 키(JSON)를 생성하여 입력
  • 입력 후 Ctrl + D를 눌러 저장
  • 이 파일을 사용하여 ArgoCD가 **GCP Artifact Registry (Helm Repo)**에 인증
  • 현재 디렉토리에서 key.json 파일이 존재하는지 확인

ArgoCD에 GCP Artifact Registry(Helm) 추가

 

  • GCP **Artifact Registry(Helm Repository)**를 ArgoCD에 추가
  • asia-northeast3-docker.pkg.dev → GCP Artifact Registry 주소
  • --type helm → Helm 차트 저장소 추가
  • --enable-oci → OCI(Helm Registry) 사용
  • --username _json_key → GCP 서비스 계정 인증 방식 사용
  • --password "$(cat key.json)" → key.json의 내용을 비밀번호로 사용하여 인증

이 명령어들은 ArgoCD에서 GCP Artifact Registry(Helm) 인증 및 저장소 추가를 위한 과정

 

Helm 애플리케이션 추가 과정

  • ArgoCD에서 Helm Chart를 사용하여 Kubernetes에 애플리케이션을 배포하는 과정
  • Git 또는 Helm Registry에서 가져온 Helm Chart를 기반으로 ArgoCD에서 관리
  • CREATE 버튼을 누르면 ArgoCD가 Helm Chart를 배포

이제 Sync를 실행하면 ArgoCD가 Helm을 통해 배포를 진행

 

Helm을 활용한 ArgoCD 애플리케이션 추가 완료

  • nlp-service 애플리케이션이 ArgoCD를 통해 Helm Chart로 추가됨
  • Helm 저장소: asia-northeast3-docker.pkg.dev
  • 사용된 Chart: mlops-project-447713/helm/chart
  • 버전: 0.1.0
  • 네임스페이스: api

ArgoCD에서 Helm을 통해 애플리케이션을 추가한 상태이며, 배포 구성이 완료됨
SYNC를 실행하면 Helm Chart가 Kubernetes 클러스터에 반영됨