반응형
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 |