Judaeng

ArgoCD 알아보기 본문

DevOps/ArgoCD

ArgoCD 알아보기

Judaeng 2022. 4. 27. 02:00

ArgoCD logo

“Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.”

한마디로 쿠버네티스를 위한 CD(Continuous Delivery)툴이다.

GitOps방식으로 관리되는 Manifest 파일의 변경사항을 감시하며, 현재 배포된 환경의 상태와 Git에 정의된 Manifest 상태를 동일하게 유지하는 역할을 수행 한다.

push타입과 pull타입 모두를 지원하며 pull타입 배포를 권장하고 있다.

 

Argo CD는 Kubernetes용 선언적 GitOps 지속적 전달 도구입니다. - 공식문서

 

출처:https://argo-cd.readthedocs.io/en/stable/

ArgoCD를 사용하는 이유는 무엇일까?


애플리케이션의 정의, 구성 및 환경은 선언적이어야 하고 버전을 제어해야 한다.

애플리케이션 배포 및 수명 주기 관리는 자동화되고 감사 가능하며 이해하기 쉬워야 한다.

ArgoCD 작동원리


ArgoCD는 원하는 애플리케이션 상태를 정의하기 위한 정보 소스로 Git 리포지토리를 사용하는 GitOps 패턴을 따른다.

Kubernetes Manifest는 여러 가지 방법으로 지정할 수 있다.

  • kustomize applications
  • helm charts
  • ksonnet applications
  • jsonnet files
  • YAML/json 매니페스트의 일반 디렉토리
  • 구성 관리 플러그인으로 구성된 모든 사용자 지정 구성 관리 도구

ArgoCD는 지정된 대상 환경에서 원하는 애플리케이션 상태의 배포를 자동화한다.

애플리케이션 배포는 분기, 태그에 대한 업데이트를 추적하거나 Git 커밋에서 특정 버전의 Manifest에 고정할 수 있다.

 

Architecture


출처: https://argo-cd.readthedocs.io/en/stable/#architecture

ArgoCD는 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재 라이브 상태를 원하는 대상 상태(Git 저장소에 지정된 대로)와 비교하는 Kubernetes 컨트롤러로 구현된다.

라이브 상태가 대상 상태와 다른 배포된 애플리케이션이 고려된다. OutOfSync.

ArgoCD는 차이점을 보고 및 시각화하는 동시에 라이브 상태를 원하는 대상 상태로 자동 또는 수동으로 다시 동기화하는 기능을 제공한다.

Git 리포지토리에서 원하는 대상 상태에 대한 모든 수정 사항은 지정된 대상 환경에 자동으로 적용되고 반영될 수 있다.

자세한 내용은 여기를 확인해보자.

 

ArgoCD의 특징


  • 지정된 대상 환경에 애플리케이션 자동 배포
  • 여러 구성 관리/템플릿 도구 지원(Kustomize, Helm, Ksonnet, Jsonnet, plain-YAML)
  • 여러 클러스터에 대한 관리 및 배포 기능
  • SSO 통합(OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn)
  • 권한 부여를 위한 다중 테넌시 및 RBAC 정책
  • Git 리포지토리에서 커밋된 모든 애플리케이션 구성으로 롤백/어디서나 롤백
  • 애플리케이션 리소스의 상태 분석
  • 자동화된 구성 드리프트 감지 및 시각화
  • 애플리케이션을 원하는 상태로 자동 또는 수동 동기화
  • 애플리케이션 활동의 실시간 보기를 제공하는 웹 UI
  • 자동화 및 CI 통합을 위한 CLI
  • Webhook 통합(GitHub, BitBucket, GitLab)
  • 자동화를 위한 액세스 토큰
  • 복잡한 애플리케이션 롤아웃을 지원하는 PreSync, Sync, PostSync 후크(예: 블루/그린 및 카나리아 업그레이드)
  • 애플리케이션 이벤트 및 API 호출에 대한 감사 추적
  • 프로메테우스 측정항목
  • Git에서 ksonnet/helm 매개변수 재정의를 위한 매개변수 재정의

GitOps Operator


GitOps 오퍼레이터는 Git 저장소에 있는 Manifest 파일을 쿠버네티스 클러스터에 반영해 주는 역할을 한다.

직접 구현할 수도 있지만, 보안이나 모니터링 등 여러 측면에서 불편하기 때문에 기존에 만들어진 GitOps 오퍼레이터를 사용한다.

널리 알려진 GitOps 오퍼레이터는 위브웍스(Weavework)에서 만든 Flux와 Intuit에서 만든 ArgoCD가 있다.

출처: https://kangwoo.kr/tag/argocd/

 

 

📝 이번 게시물을 만들기 위해 참고한 사이트

1. ArgoCD 공식문서

2. GitOps와 ArgoCD란? - 호롤리한 하루

Comments