argo-cd基於Kubernetes的聲明式持續部署linux
什麼是argo-cd?
Argo CD是一個基於Kubernetes的聲明式GitOps持續交付工具。git
爲何CD ?
應用程序定義、配置和環境應該是聲明性的,而且應該是版本控制的。應用程序部署和生命週期管理應該是自動化的、可審計的、易於理解的。github
argo-cd功能
- 將應用程序自動部署到指定的目標環境
- 支持多種配置管理/模板工具(Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)
- 可以管理和部署到多個集羣
- SSO集成(OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn)
- 受權的多租戶和RBAC策略
- 回滾/回滾到Git存儲庫中提交的任何應用程序配置
- 應用程序資源的健康狀態分析
- 自動配置漂移檢測和顯示
- 將應用程序自動或手動同步到所需的狀態
- Web UI,提供應用程序活動的實時視圖
- 用於自動化和CI集成的CLI
- Webhook集成(GitHub, BitBucket, GitLab)
- 用於自動化的訪問令牌
- PreSync、Sync、PostSync鉤子支持複雜的應用程序發佈(例如,blue/green & canary升級)
- 應用程序事件和API調用的審計跟蹤
- Prometheus指標
- 在Git中重寫ksonnet/helm參數的參數覆蓋
Argo 如何工做的CD?
Argo CD遵循GitOps模式,使用Git存儲庫存儲所需應用程序的配置。
Kubernetes清單能夠經過如下幾種方式指定:
json
- kustomize應用程序
- helm圖表
- ksonnet應用程序
- jsonnet文件
- 基於YAML/json配置
- 配置管理插件配置的任何自定義配置管理工具
Argo CD實現爲kubernetes控制器,它持續監視運行中的應用程序,並將當前的活動狀態與指望的目標狀態進行比較(如Git repo中指定的那樣)。若是已部署的應用程序的活動狀態偏離了目標狀態,則認爲是OutOfSync。Argo CD報告和可視化這些差別,同時提供了方法,能夠自動或手動將活動狀態同步回所需的目標狀態。在Git repo中對所需目標狀態所作的任何修改均可以自動應用並反映到指定的目標環境中。api
快速開始:
這將建立一個新的名稱空間argocd, Argo CD服務和應用程序資源將駐留在這裏。app
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
下載 Argo CD CLI
VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64 chmod +x /usr/local/bin/argocd 如今你就能夠運行argocd
開源代碼:
https://github.com/argoproj/argo-cd/
https://argoproj.github.io/argo-cd/
https://cd.apps.argoproj.io/applications
curl