728x90
ArgoCD
- 쿠버네티스 환경에서 GitOps 기반의 CD(Continuous Deployment) 도구 (GitOps CD tools for k8s)
- 대상 환경에서 원하는 상태의 배포 자동화를 지원 (Automate the deployment of the desired state in target env)
- 쿠버네티스에서 지원하는 다양한 리소스 형태를 지원 (k8s menifests can be specified in serveral ways)
- kubstomize, helm, yaml, ...
ArgoCD 구성 요소
ArgoCD는 크게 3가지 컴포넌트(서버)로 구성
- API server, Repository Server, Application Controller
API server
- 사용자(or 관리자) UI 또는 CLI를 통해 접근
- 다른 서비스에서 gRPC 또는 REST API를 통해 접근
- Git webhook event를 통해 접근
- 철학적으로 ArgoCD는 외부의 identity provider에게 권한을 위임해서 인증/인가 구현
- ArgoCD는 RBAC을 통해 권한을 관리
Repository Server
- Git repository에 대한 캐싱
- Git에 있는 일련의 현상을 k8s 워크로드에 싱크해주는 게 ArgoCD의 목적
- helm, yaml 파일들을 k8s manifest로 변경
Application Controller
- k8s controller
- reconciliation(지속적으로 비교해서 current state을 desired state로)을 담당
ArgoCD Project & Application
Project는 Application을 그룹으로 관리하는 개념으로, Appliction은 생성할 때 Project를 선택해야 하고 Project는 0개 이상 Application을 가질 수 있음
- Project: 여러 application의 묶음 (k8s의 namespace)
- Application: k8s의 workload에 맵핑
ArgoCD 도입과 배포 프로세스
ArgoCD 도입 시 아래와 같은 형태로 배포 프로세스를 가져갈 수 있음
- 사용자는 기능(피처) 개발을 진행 후 해당 코드를 Source Repository에 푸시
- 구축된 CI 파이프라인을 통해 해당 소스의 도커 이미지 빌드 및 이미지 레지스트리에 등록
- CI 프로세스에서 생성된 이미지에 대해 트리거를 통해 ArgoCD와 Sync 되어 있는 GitOps Repository에 원하는 버전을 적용(푸시)
- Webhook 또는 ArgoCD polling을 통해 GitOps Repository에 선언된 리소스와 쿠버네티스 클러스터 상의 리소스를 확인 및 비교
- GitOps Repository에 선언된 리소스와 배포된 리소스의 상태가 다른 경우 GitOps Repository에 선언된 리소스를 자동화 적용
Reference
728x90
'CI CD' 카테고리의 다른 글
CI/CD 란? - 지속적 통합(Continuous Integration), 지속적 배포(Continuous Deployment) (0) | 2024.07.28 |
---|