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
반응형
'클라우드 네이티브 > Kubernetes' 카테고리의 다른 글
Worker Node를 내려야 할 필요가 있을 경우 안전한 이동 (0) | 2024.05.20 |
---|---|
쿠버네티스에 배포할 때 사용할 객체 (0) | 2024.03.08 |
쿠버네티스 등장 배경과 용어 (4) | 2024.03.08 |
[DevOps] 쿠버네티스에 스프링 프로젝트 배포하기(macOS m1) (1) | 2023.12.07 |
도커, 도커 엔진, 컨테이너, 가상 서버, 도커 데몬 (0) | 2023.03.27 |