728x90
Argo Project 제품 설명
- CD: 쿠버네티스 전용 배포 툴. Release 파일 저장소로 Git repository가 필요하다.
- Image Updater: ArgoCD의 추가 기능. Docker Hub의 컨테이너 이미지 변경을 감지하여 배포를 수행한다.
- Rollouts: 고급 배포 지원 (Blue/Green, Canary).
- Events: Kafka와 같은 이벤트 버스 아키텍처에 대한 솔루션.
- Workflow: Airflow, Kubeflow 같은 워크플로우 관리도구.
Argo 제품으로 다음과 같은 아키텍처가 만들어질 수 있다.
- ArgoEvents가 시스템들 간의 이벤트를 주고받는 메인 통로 역할.
- 이 중 Workflow로 보내지는 이벤트가 발생. Workflow는 이벤트를 받고 내부 값에 의해 특정 작업을 실행하라는 순서도가 존재한다.
- Workflow의 작업 중 "배포" 관련 작업이 실행되면 ArgoCD가 실행된다.
- 배포가 실행되면 Rollouts를 통해 특정 배포 전략으로 쿠버네티스에 리소스를 배포한다.
ArgoCD가 쿠버네티스에 설치되었을 때의 아키텍처
우리가 쿠버네티스를 작동할 때 kube-dashboard에 접근하거나 kubectl로 명령어를 날리면 kube-apiserver가 해당 api를 받아 관련 컴포넌트에 트래픽을 전달하는 방식이다. Argo 또한 유사한 흐름으로 실행된다.
- Server: API Server 및 Dashboard 역할. NodePort로 UI에 접근하거나 CLI로 접근할 수 있다.
- Repo Server: Git Server에 연결하고 배포할 yaml 매니페스트를 생성한다.
- Application Controller: k8s 리소스 모니터링 및 Git과 내용을 비교하여 최신 배포를 수행한다.
- Kube API: kube-apiserver로 배포 리소스를 날려준다.
- Notification: ArgoCD의 이벤트를 외부 알람으로 제공한다.
- Dex: 외부 인증 관리.
*(쿠버네티스를 사용하다보면 Grafana와 같은 외부 대시보드를 많이 사용한다.
관리자 입장에서는 이러한 각 UI마다 ID/PW를 생성하고 관리하는게 힘들다. 이를 위해 IAM 솔루션을 사용하여 연결된 시스템은 별도의 로그인을 하지 않아도 자동 로그인을 제공할 수 있다. 이를 SSO(Single Sign On)이라 하고, 쿠버네티스에서는 대표적으로 KeyCloak을 사용한다.) - Redis: Kube API와 Git에서의 요청을 줄이기 위한 캐시 역할.
- ApplicationSet Controller: 멀티 클러스터를 위한 App 패키징 관리. ArgoCD를 하나만 설치하고 여러 개의 클러스터에 App을 배포할 수 있다. 각 환경마다 배포 구성을 만들어주어야 하는데 이런 중복 설정을 완화할 템플릿을 제공해준다(like Helm).
728x90
'DevOps' 카테고리의 다른 글
[ArgoCD] ArgoCD Image Updater를 이용해 쿠버네티스에서 App 버전 업그레이드 자동화하기 (4) | 2024.10.20 |
---|---|
[ArgoCD] ArgoCD로 쿠버네티스 클러스터에 App 배포하기 (4) | 2024.10.18 |
[Helm] Helm 패키지 생성하고 배포하기 (2) | 2024.10.07 |
[Jenkins] Jenkins Pipeline 구축 (기초부터 Blue/Green 배포까지) (0) | 2024.05.31 |
[DevOps] 데브옵스 환경 구축 (0) | 2024.05.12 |