클라우드 네이티브/Kubernetes
[DevOps] ArgoCD와 사용 이유
tt_honey
2023. 12. 7. 15:11
728x90
반응형
ArgoCD
정의
ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes.
ArgoCD는 쿠버네티스를 위한 선언적인 GitOps CD 도구입니다.
선언적이다?
선언적 인프라
- Infrastructure를 정의하고 관리하는 방법론 중 하나
- 원하는 상태(Desired state)나 구성을 명시적으로 선언하고, 시스템이 명시된 상태로 수렴하도록 하는 방식
- 쿠버네티스도 선언적 인프라의 형태를 띄고 있다.
원하는 상태(Desired state)
- 선언적 인프라에서는 시스템 또는 애플리케이션이 원하는 상태를 정확하게 명시한다.
- 이 상태를 정의하기 위해 코드 또는 구성 파일을 사용한다.
- 현재 몇 개가 존재하는지는 중요하지 않고
replicas:2
라고 선언한다.
자동 수렴(Automatic Convergence)
- 현재 상태(Current state)와 원하는 상태(desired state)간 차이를 자동으로 해결해준다.
- 원하는 상태로 시스템이 자동으로 수렴시킨다.
상태 관리(State Management)
- 시스템이 원하는 상태로 유지되도록 변경 사항을 추적하고 관리하는 기능을 제공한다.
- 변경사항은 지속적으로 기록한다.
- Mainfest의 정의를 바탕으로 Pod를 생성하게 될 것이고, pod를 유지하려고 하는 특징을 가지고 있다.
- pod를 삭제하고 재배포한다거나 해서 최종적으로 정상상태로 도달하기 위해 상태를 계속적으로 관리한다.
추상화(Abstraction)
- 하부의 인프라 세부 사항을 추상화하여 사용자가 구체적인 구현 세부 사항을 모르더라도 인프라를 관리할 수 있도록 함.
- 인프라 구성을 더 쉽게 관리하고 이식성을 향상
- 하부에 있는 인프라에 대한 세부사항을 추상화한다.
- ArgoCD와 쿠버네티스를 사용하였다 → 인프라들은 무엇이든지 상관이 없다.
- 쿠버네티스에서 다루고 있는 pod나 service나 pv, 와 같은 리소스들을 언제나 배포할 수 있다.
반복 가능성(Reproducibility)
- 코드를 통해 시스템의 상태를 정의하고 이를 통해 반복 가능한 배포가 가능하며, 여러 환경에서 동일한 결과가 나올 수 있다.
특징
- ArgoCD는 기본적으로 GitOps 기반 관리를 지원하고 있다.
- GitOps는 모든 어플리케이션 및 구성 설정을 Git 레포지토리에 저장하고 업데이트 하는 방식으로 작동한다.
- 모든 설정 및 변경 내역을 Versioning하고 롤백, 협업, 복구 기능을 제공한다.
- 지정된 대상 환경에 어플리케이션 자동 배포
- 다양한 구성 관리 툴 지원 (Helm, Kustomize)
- SSO 제공
- Kubernetes 멀티 클러스터 관리 기능
- 웹 UI를 통한 시각화
- 어플리케이션 자원 상태 자동 체크
- 어플리케이션 상태 자동 동기화 제공
사용 이유
ArgoCD는 GitOps 툴 중에서 점점 많이 사용하는 추세이다. 특히나, 내가 만든 프로젝트는 애플리케이션 상태 체크가 지속적으로 필요했고,
쿠버네티스를 통한 클러스터링을 했으며 Github과 연동해서 CI, CD를 진행해야 했기 때문에 ArgoCD를 선택하게 되었다.
728x90
반응형