Skip to content

1) Introduction to Argo CD

Alex, Lee edited this page Jun 23, 2022 · 8 revisions

2022.03. 이장재 📧 cine0831@gmail.com 📂 https://github.com/jangjaelee 📒 http://www.awx.kr


Introduction

Argo CD는 선언적 GitOps 지속적 배포(continuous delivery) 도구로 Git Repository 또는 Helm Chart에 저장된 manifest를 Kubernetes 클러스터에 적용하는 배포 도구 입니다.

Argo는 2020년 4월 7일 CNCF에 승인되어 현재는 Incubating 프로젝트 단계에 있습니다.

🌐 https://www.cncf.io/projects/argo/

 

Overview

Argo CD는 GitOps 모델을 기반으로 제작 되었습니다.

원하는 애플리케이션 상태를 정의하기 위해 소스로 Git repository 들을 사용하며, Kubernetes manifest는 다양한 방법으로 지정하여 사용 가능합니다.

  • kustomize applications
  • helm charts
  • ksonnet applications
  • jsonnet applications
  • Plain directory of YAML/json manifests
  • Any custom config management tool configured as a config management plugin

Argo CD는 클러스터의 현재 상태(current state)와 원하는 상태(desired state)의 drift 감지 및 수정을 통해 구성 일관성을 보장하며, 이것을 유지하면 운영 노력을 줄이고 환경 전반에 걸쳐 보안을 개선하는데 도움이 됩니다.

 

Architecture

argocd_architecture.png

 

구성요소 (Components)

Argo CD의 구성요로는 크게 세 가지 API Server, Repository Server, Application Controller가 있습니다.

API Server

API 서버는 Web UI, CLI 및 CI/CD 시스템에서 사용하는 API를 노출하는 gRPC/RSET 서버로 다음과 같음 책임이 따릅니다.

  • 애플리케이션 관리 및 상태 리포팅
  • 애플리케이션 작업 호출 (e.g. sync, rollback, user-defined actions)
  • 저장소 및 클러스터 자격 증명 관리 (stored as K8s secrets)
  • 외부 ID 공급자 (identity providers)에 대한 인증 및 인증 위임
  • 역할 기반 접근 제어 (RBAC, Roll-Based access control) 시행
  • Git webhook 이벤트에 대한 listener/forwarder

Repository Server

리포지토리 서버는 내부 서비스로 애플리케이션 manifest를 보유하고 있는 Git 리포지토리의 로컬 캐시를 유지관리 하며, 다음의 입력들이 제공되면 쿠버네티스 manifests를 생성 및 반환을 담당 합니다.

  • repository URL
  • revision (commit, tag, branch)
  • application path
  • template specific settings: parameters, ksonnet environments, helm values.yaml

Application Controller

애플리케이션 컨트롤러는 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재 live status를 원하는 target status와 비교하는 쿠버네티스 컨트롤러 입니다.

 

핵심 개념 (Core Concepts)

 

특징 (Features)

Argo CD는 다음의 특징들을 제공 합니다.

  • 지정된 대상 환경에 애플리케이션 자동 배포
  • 다양한 구성 관리 및 템플릿 도구 지원 (Kustomize, Helm, Ksonnet, Jsonnet, plain-YAML)
  • 다중 클러스터에 대한 관리 및 배포 기능
  • SSO Integration (OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn)
  • 권한 부여를 위한 멀티테넌시(Multi-tenancy)와 RBAC 정책
  • 애플리케이션 리소스의 Health 상태 분석
  • 자동화된 구성 drift 감지 및 시각화
  • 애플리케이션을 원하는 상태로 자동 또는 수동 동기화
  • 애플리케이션 활동의 실시간 보기를 제공하는 Web UI
  • 애플리케이션 이벤트 및 API 호출에 대한 감사 추적
  • 자동화 및 CI integration을 위한 CLI (argocd cli)
  • Webhook integration (GitHub, BitBucket, GitLab)
  • 자동화를 위한 접근 토큰 (access token)
  • 프로메테우스 지표 (metrics)
  • Rollback/Roll-anywhere to any application configuration committed in Git repository
  • PreSync, Sync, PostSync hooks to support complex application rollouts (e.g.blue/green & canary upgrades)

 

Official Website

 

Reference

 

END