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
반응형

+ Recent posts