ArgoCD 간단한 사용법 가이드

GarionNachal·2025년 9월 8일
post-thumbnail

ArgoCD Architecture

ArgoCD란 무엇인가?

ArgoCD는 Kubernetes를 위한 선언적(Declarative) GitOps 지속적 배포(Continuous Delivery) 도구입니다. Git 저장소를 "단일 진실 소스(Single Source of Truth)"로 사용하여 Kubernetes 애플리케이션을 자동으로 배포하고 관리하는 데 사용됩니다.

GitOps란?

GitOps는 Git을 중심으로 한 운영 모델로, 다음과 같은 특징을 가집니다:

  • 선언적 구성: 모든 인프라와 애플리케이션 구성이 Git에 코드로 저장
  • 버전 관리: Git의 모든 변경사항이 추적 가능
  • 자동화된 배포: Git 저장소의 변경사항이 자동으로 클러스터에 반영

GitOps Workflow

ArgoCD의 주요 특징

1. 지속적 모니터링

ArgoCD는 지정된 Git 저장소와 Kubernetes 클러스터를 지속적으로 모니터링하여 두 환경 간의 상태 차이를 감지합니다.

2. 자동 동기화

설정에 따라 Git 저장소의 변경사항이 감지되면 자동으로 클러스터 상태를 업데이트합니다.

3. 웹 UI 제공

직관적인 대시보드를 통해 애플리케이션 상태를 시각적으로 모니터링할 수 있습니다.

ArgoCD Dashboard

4. 멀티 클러스터 지원

여러 Kubernetes 클러스터를 하나의 ArgoCD 인스턴스로 관리할 수 있습니다.

ArgoCD 설치 가이드

사전 요구사항

  • Kubernetes 클러스터
  • kubectl CLI 도구
  • kubeconfig 파일 (기본 위치: ~/.kube/config)

1. ArgoCD 설치

# ArgoCD 네임스페이스 생성
kubectl create namespace argocd

# ArgoCD 설치
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

2. ArgoCD CLI 다운로드

최신 버전은 ArgoCD 릴리스 페이지에서 다운로드할 수 있습니다.

Mac/Linux (Homebrew):

brew install argocd

3. ArgoCD 서버 접근 설정

포트 포워딩 사용 (개발 환경)

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

접근 URL: https://localhost:8080

LoadBalancer 서비스 타입 (프로덕션 환경)

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

초기 설정 및 로그인

1. 초기 관리자 비밀번호 확인

argocd admin initial-password -n argocd

2. ArgoCD 로그인

argocd login <ARGOCD_SERVER>
# 사용자명: admin
# 비밀번호: 위에서 확인한 초기 비밀번호

3. 비밀번호 변경

argocd account update-password

ArgoCD UI Application View

첫 번째 애플리케이션 배포하기

1. CLI를 통한 애플리케이션 생성

# 네임스페이스 설정
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

2. 웹 UI를 통한 애플리케이션 생성

  1. ArgoCD 웹 UI에 로그인
  2. + New App 버튼 클릭
  3. 애플리케이션 정보 입력:
    • Application Name: guestbook
    • Project: default
    • Sync Policy: Manual
  4. Git 저장소 정보 입력:
  5. 배포 대상 정보 입력:
  6. Create 버튼 클릭

Application Creation UI

3. 애플리케이션 동기화 (배포)

CLI 사용

# 애플리케이션 상태 확인
argocd app get guestbook

# 애플리케이션 동기화 (배포)
argocd app sync guestbook

웹 UI 사용

  1. Applications 페이지에서 guestbook 애플리케이션 선택
  2. Sync 버튼 클릭
  3. Synchronize 버튼 클릭하여 배포 실행

Application Sync

ArgoCD 주요 개념

1. Application

ArgoCD에서 관리하는 배포 단위로, Git 저장소의 특정 경로와 Kubernetes 클러스터의 특정 네임스페이스를 연결합니다.

2. Project

여러 애플리케이션을 그룹화하고 접근 권한을 관리하는 단위입니다.

3. Sync Policy

  • Manual: 수동으로 동기화 실행
  • Automatic: Git 저장소 변경 시 자동 동기화

4. Health Status

  • Healthy: 모든 리소스가 정상 상태
  • Progressing: 배포 진행 중
  • Degraded: 일부 리소스에 문제 발생
  • Missing: 리소스가 존재하지 않음

Application Health Status

고급 사용법

1. 멀티 클러스터 관리

외부 클러스터를 ArgoCD에 등록:

# 사용 가능한 컨텍스트 확인
kubectl config get-contexts -o name

# 클러스터 추가
argocd cluster add docker-desktop

2. Helm 차트 배포

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

3. ApplicationSet을 이용한 멀티 애플리케이션 관리

ApplicationSet을 사용하면 템플릿을 기반으로 여러 애플리케이션을 자동으로 생성할 수 있습니다.

GitOps CI/CD Workflow

모범 사례

1. 환경별 브랜치 전략

  • main: 프로덕션 환경
  • staging: 스테이징 환경
  • develop: 개발 환경

2. 보안 고려사항

  • ArgoCD 서버에 TLS 인증서 적용
  • RBAC을 통한 접근 권한 관리
  • Sealed Secrets 또는 External Secrets를 통한 민감 정보 관리

3. 모니터링 및 알림

  • Prometheus와 Grafana를 통한 메트릭 수집
  • Slack, Discord 등을 통한 배포 알림 설정

문제 해결

1. 동기화 실패 시

# 애플리케이션 로그 확인
argocd app logs guestbook

# 이벤트 확인
kubectl get events -n default

2. 리소스 충돌 시

# 강제 동기화
argocd app sync guestbook --force

결론

ArgoCD는 GitOps 패턴을 구현하는 강력한 도구로, Kubernetes 환경에서 애플리케이션 배포를 자동화하고 관리하는 데 매우 유용합니다. Git을 중심으로 한 선언적 배포 방식을 통해 배포 과정의 투명성과 추적 가능성을 크게 향상시킬 수 있습니다.

시작은 간단한 예제 애플리케이션부터 시작하여, 점차 복잡한 멀티 클러스터 환경과 고급 기능들을 활용해 나가시길 권장합니다.

참고 자료

profile
AI를 꿈꾸는 BackEnd개발자

0개의 댓글