귀찮게하기/DevOps-SRE

DevOps - Argo CD

게임이 더 좋아 2025. 3. 31. 22:52
반응형
728x170

왜?

ArgoCD는 Kubernetes 애플리케이션 배포 및 관리의 복잡성을 해결

 

  • 애플리케이션 배포의 일관성 부족
    → 수동 배포나 스크립트 배포는 사람이 실수할 가능성이 높습니다.
  • 운영 환경의 실시간 상태 추적 어려움
    → 어떤 리소스가 어디에 배포됐는지, 설정이 정확한지 파악하기 어려움.
  • 여러 환경 간 설정 차이 관리의 어려움
    → dev/stage/prod 등에서 설정 드리프트 발생 가능성

 

gitops?

 

  • GitOps란?
    Git을 단순 코드 저장소가 아닌, 배포 및 운영 설정의 단일 진실 원천(Single Source of Truth)으로 삼는 방식
  • ArgoCD는 Git 리포지토리에 정의된 Kubernetes manifests (혹은 Helm chart 등)를 “원하는 상태”로 간주하고,
  • Kubernetes 클러스터의 “실제 상태”를 지속적으로 감시하며
  • 두 상태가 다르면 자동(또는 수동)으로 동기화(Sync)를 수행

 

 

 

주요 컴포넌트?

 

api-server CLI/웹 UI와 통신하며 인증, 권한 처리 수행
repo-server Git 리포지토리에서 앱 정의를 가져와 Kubernetes manifests로 렌더링
application-controller 클러스터 상태 감시 및 동기화, 드리프트 감지/복구
dex (선택적) SSO 로그인 제공 (OIDC, LDAP, GitHub 등과 연동)
redis 내부 캐시 용도
argocd-server UI, CLI, API 등 사용자 인터페이스 제공하는 엔트리포인트

 

어떻게?

 

ArgoCD는 어떻게 Git 리포지토리와 Kubernetes 클러스터를 동기화

 

  • Git 리포지토리 등록
    사용자는 Git 리포지토리를 ArgoCD에 등록
  • Application 객체 생성
    해당 리포지토리에서 어떤 디렉토리의 어떤 경로를 어떤 클러스터의 어떤 namespace에 배포할 것인지를 정의
  • repo-server가 manifests 생성
    Git에서 데이터를 받아 kustomize/helm/plain YAML 등을 실제 manifests로 렌더링
  • application-controller가 클러스터 상태 비교
    현재 클러스터 상태와 Git 상태를 비교하여 차이가 있는 리소스를 감지
  • 동기화 수행(Sync)
    사용자가 수동으로 Sync를 하거나, 자동 동기화(auto-sync)를 설정하면 클러스터에 적용

 

 

ArgoCD가 "실제 상태"와 "원하는 상태"를 어떻게 비교하고 관리하나요?

  • 원하는 상태 (Desired State)
    → Git 리포지토리에 정의된 manifests (kustomize, helm 포함)
  • 실제 상태 (Live State)
    → 현재 Kubernetes 클러스터에 존재하는 리소스의 상태

ArgoCD는 이 두 상태를 비교하여:

  • 어떤 리소스가 추가되었는지
  • 어떤 설정이 변경되었는지
  • 어떤 리소스가 삭제되었는지
    를 파악한 뒤, Sync 상태(Healthy/Synced/OutOfSync) 로 표시하고, 필요한 경우 자동/수동으로 수정

 

 

 

 

728x90
반응형
그리드형

'귀찮게하기 > DevOps-SRE' 카테고리의 다른 글

DevOps - Helm  (0) 2025.03.31
DevOps - ArgoCD APP of APPS  (0) 2025.03.18
내 컴퓨터가 해킹당했다면?  (0) 2025.02.16
SRE 귀찮게 안하기 - 하는 일  (5) 2024.11.27
DevOps와 SRE 귀찮게 안하기 - DevOps 와 SRE  (0) 2024.11.27