Argo CD는 Kubernetes를 위한 선언적 GitOps 지속적 전달 도구
그림 출처 : https://argo-cd.readthedocs.io/en/stable/
ArgoCD는 Kubernetes 환경에서 CI/CD를 구현하기 위한 오픈 소스 도구 중 하나이다. ArgoCD는 GitOps 원칙을 기반으로 하여 애플리케이션 및 인프라스트럭처의 배포 및 관리를 단순화하는 데 중점을 두고 있다.
GitOps는 애플리케이션의 상태 및 구성을 Git 리포지토리에 저장하고, 이를 통해 애플리케이션을 배포하고 관리하는 방식을 말한다. ArgoCD는 이 GitOps 접근 방식을 통해 클러스터에 배포된 애플리케이션의 상태를 지속적으로 추적하고, Git 리포지토리의 변경 사항을 감지하여 클러스터를 최신 상태로 유지한다.
ArgoCD는 다양한 CI/CD 도구와 통합이 가능하며, YAML 파일을 사용하여 애플리케이션의 배포 및 관리를 정의한다. 이를 통해 개발자들은 손쉽게 애플리케이션의 라이프사이클을 관리하고, 여러 환경에서 일관된 배포를 보장할 수 있다.
ArgoCD를 선택한 이유는 몇가지가 있다. 그 중 내가 찾아본 것을 종합적으로 아래와 같다.
1. GitOps 지원
ArgoCD는 GitOps 원칙을 기반으로 하여 애플리케이션의 상태와 구성을 Git 리포지토리에 저장하고, Git의 변경 사항을 통해 배포 및 관리하는 방식을 제공한다. 이는 애플리케이션의 상태 추적과 배포 프로세스를 단순화하여 일관된 환경을 유지할 수 있게 한다.
2. Kubernetes 특화
ArgoCD는 Kubernetes에 특화된 CI/CD 도구로서, Kubernetes 클러스터에서의 애플리케이션 배포 및 관리에 최적화되어 있다. Kubernetes 자원 및 객체를 쉽게 관리할 수 있도록 지원하며, 네이티브 Kubernetes 자원 정의(YAML 파일)를 사용한다.
3. 유연성과 확장성
ArgoCD는 다양한 CI/CD 도구와 통합이 가능하며, 다양한 환경에서의 사용에 유연하게 대응할 수 있다. 또한, 많은 환경에서의 배포에 대한 확장성을 제공한다.
4. 웹 기반 대시보드
ArgoCD는 사용자가 쉽게 클러스터와 애플리케이션의 상태를 시각화할 수 있는 웹 기반 대시보드를 제공한다. 이를 통해 개발자 및 운영팀은 시각적으로 애플리케이션의 상태를 파악하고 모니터링할 수 있다.
기능/도구 | ArGoCD | Flux | Jenkins X | Spinnaker | GitLab CI/CD | Drone |
---|---|---|---|---|---|---|
GitOps 지원 | O | O | O | O | O | O |
Kubernetes 특화 | O | O | O | O | O | O |
웹 기반 대시보드 | O | O | O | O | O | O |
Helm 지원 | O | O | O | O | O | O |
다양한 클라우드 | X | X | X | O | O | X |
프로그레시브 롤아웃 | O (Argo Rollouts) | O | X | X | X | X |
사용자 경험 | 우수 | 양호 | 양호 | 양호 | 양호 | 양호 |
커뮤니티 지원 | 활발 | 활발 | 활발 | 활발 | 활발 | 활발 |
Jenkins X : https://jenkins-x.io/
Spinnaker : https://spinnaker.io/
ArgoCD : https://argo-cd.readthedocs.io/en/stable/
Flux : https://fluxcd.io/
명령어 | 설명 |
---|---|
argocd login | ArgoCD 클러스터에 로그인 |
argocd app list | 현재 클러스터에 배포된 애플리케이션 목록을 표시 |
argocd app get | 특정 애플리케이션의 상세 정보를 표시 |
argocd app sync | 애플리케이션을 수동으로 동기화하여 설정과 클러스터를 일치 |
argocd app delete | 애플리케이션을 삭제 |
argocd proj list | 현재 클러스터에 정의된 프로젝트 목록을 표시 |
argocd repo list | Git 리포지토리 목록을 표시 |
argocd diff | 애플리케이션과 Git 리포지토리 간의 차이를 표시 |
argocd rollback | 이전 배포 상태로 롤백 |
argocd logout | 현재 로그인한 사용자를 로그아웃 |
https://blog.devops.dev/ci-cd-on-kubernetes-using-argo-cd-7f438efb0a10