API server
API 서버는 웹 UI, CLI 및 CI/CD 시스템에서 사용하는 API를 노출하는 gRPC/REST 서버입니다. 다음과 같은 책임이 있습니다.
- 애플리케이션 관리 및 상태 보고
- 애플리케이션 작업 호출(예: 동기화, 롤백, 사용자 정의 작업)
- 리포지토리 및 클러스터 자격 증명 관리(K8s에 secret으로 저장됨)
- 외부 ID 공급자에 대한 인증 및 인증 위임
- RBAC 시행
- Git 웹훅 이벤트에 대한 리스너/포워더
Repository Server
리포지토리 서버는 애플리케이션 매니페스트를 보유하는 Git 리포지토리의 로컬 캐시를 유지 관리하는 내부 서비스입니다.
다음 입력이 제공될 때 Kubernetes 매니페스트 생성 및 반환을 담당합니다.
- 저장소 URL
- revision (commit, tag, branch)
- application path
- template specific settings: parameters, ksonnet environments, helm values.yaml
Application Controller
애플리케이션 컨트롤러는 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재 라이브 상태를 원하는 대상 상태(리포지토리에 지정된 대로)와 비교하는 Kubernetes 컨트롤러입니다. OutOfSync 애플리케이션 상태를 감지 하고 선택적으로 수정 조치를 취합니다. 수명 주기 이벤트(PreSync, Sync, PostSync)에 대한 사용자 정의 훅의 호출을 담당합니다.
Project
AppProject CRD는 애플리케이션의 논리적 그룹을 나타내는 Kubernetes 리소스 개체입니다. 다음과 같은 주요 정보로 정의됩니다.
- sourceRepos: 프로젝트 내의 애플리케이션이 매니페스트를 가져올 수 있는 리포지토리에 대한 참조입니다.
- destinationsnameserver: 프로젝트 내의 애플리케이션이 배포할 수 있는 클러스터 및 네임스페이스에 대한 참조입니다
- roles: 프로젝트 내 리소스에 대한 액세스 정의가 있는 entity 목록입니다.
https://argoproj.github.io/argo-cd/operator-manual/architecture/
'DevOps > ArgoCD' 카테고리의 다른 글
[ArgoCD]Install ArgoCD from Helm chart (0) | 2022.06.23 |
---|---|
[ArgoCD]Install ArgoCD from url with Ingress (0) | 2022.06.15 |