Argo CD 是什麼?

Argo CD 是什麼?

Argo CD是一個用於持續交付(Continuous Delivery)的工具,用於自動化應用程序的部署、更新和操作。
它是基於Kubernetes的開源項目,旨在幫助團隊更有效地管理和交付應用程序。

Argo CD允許開發人員和運維團隊使用 GitOps 模型來管理基礎設施和應用程序的狀態。

GitOps是一種軟體開發實踐,它將Git作為單一可信源來管理應用程序的狀態和配置。

透過將應用程序的狀態描述為Git存儲庫中的一組聲明,Argo CD可以根據這些聲明自動驅動應用程序的部署和更新。

前言

這部分會分享 Argo CD 的中心思想、架構與功能。

中心思想 GitOps pattern

  • Argo CD 遵循 GitOps 模式,即以 Git repositories 作為唯一識別 application 狀態的來源

Argo CD 作為 kubernetes controller

  • Argo CD 作為 kubernetes controller,持續偵測運行中的 application,並比較現在狀態與目標狀態!

  • 可用以下幾種方式建立 Argo CD 的 kubernetes manifest

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

Argo CD architecture

架構圖

argocd architecture, ref: https://argo-cd.readthedocs.io/en/stable/

有哪些 Components?

  • API Server

    • 可以被 Web UI, CLI, 以及 CI/CD systems 介接的 gRPC/REST server
    • 它有幾項責任
      • 應用管理與狀態回報
      • 處理 application 的操作,如 sync, rollback, 其他使用者定義的動作
      • 管理 credential,如 K8s secrets
      • 管理驗證與權限
      • 執行 RBAC
      • Git webhook 事件的傾聽者/傳送者
  • Repository Server

    • 管理本地 Git repository 的快取 (Cache)
    • 當有新增以下參數,需建立 Kubernetes manifests
      • repository URL
      • revision (commit, tag, branch)
      • application path
      • template specific settings: parameters, helm values.yaml
  • Application Controller

    • 屬於 Kubernetes controller
    • 持續偵測運行中的 application,並比較現在狀態與目標狀態,若偵測到 OutOfSync 則會選擇性採取正確動作
    • 此元件負責為生命週期事件(PreSync, Sync, PostSync)去調用使用者定義的 hooks

Features

根據提供的功能,可以將其分為以下幾項:

  1. 部署和管理功能:
  • 自動部署應用程序到指定的目標環境
  • 支持多個配置管理/模板工具(Kustomize、Helm、Jsonnet、純YAML)
  • 能夠管理和部署到多個集群
  1. 身份驗證和安全功能:
  • SSO集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
  • 多租戶和RBAC策略用於授權
  1. 回滾和配置管理功能:
  • 回滾/任意回滾到Git存儲庫中提交的任何應用程序配置
  • 應用程序資源的健康狀態分析
  • 自動配置漂移檢測和可視化
  • 自動或手動將應用程序同步到所需狀態
  1. 用戶界面和集成功能:
  • 提供實時應用程序活動的Web UI
  • 命令行界面(CLI)用於自動化和CI集成
  • Webhook集成(GitHub、BitBucket、GitLab)
  • 用於自動化的訪問令牌(Access token)
  1. 應用程序升級和監控功能:
  • 支持 PreSync、Sync、PostSync 鉤子以支持複雜的應用程序升級(例如藍/綠和金絲雀升級)
  • 應用程序事件和API調用的軌跡
  • Prometheus metrics
  • 可覆蓋 Helm 參數的參數覆蓋

支援的功能繁多,列出一部分。每一版或者會有些不同,建議可參考官方文件

這些功能可幫助團隊實現自動化部署、安全驗證、配置管理、回滾、監控等在持續交付環境中必要的任務。

心得

  • Argo CD 在 March 26, 2020 被 CNCF 列入,CNCF 的專案們整合程度越來越高,相信未來的多數公司的 CICD、監控、Log、角色權限控管、資料庫等會以 CNCF 專案為主。

  • 若想知道如何在 docker desktop 建立 Argo CD,請參考文章【使用 Docker Desktop 運行 Argo CD】

參考資料

最後,若喜歡我的分享,可以免費幫我按讚,是對我最大的鼓勵!