ArgoCD
是一个声明性(declarative)
的、GitOps 的、轻松将应用程序部署到Kubernetes
的连续交付工具。
介绍
ArgoCD
负责构建 CD Pipeline,一般与 Tekton 配合使用ArgoCD
是一个可以将应用程序快速部署到 kubernetes 之上的 GitOps 工具
子项目
目前Argo包含多个子项目:
- Argo Workflows:基于容器的任务编排工具
- Argo CD:基于GitOps声明的持续交付工具
- Argo Events:事件驱动工具
- Argo Rollouts:支持金丝雀以及蓝绿发布的应用渐进式发布工具
工作流程
- 以配置仓库(repository)为应用程序部署和管理的唯一可信源(定义 application 的期望状态)
Application Controller
负责将 repository(git) 中定义的 application 运行于指定的 Kubernetes Cluster 中Application Controller
持续监视、对比运行状态是否和定义状态,确保和期望状态一致
核心
ArgoCD 有两个核心概念:
- Application:基于 Application CRD 实现,由如下部分组成:
- 一组在 k8s 上部署和运行某应用的资源配置文件
- 上述资源相关的 source 和 destination
source
定义获取该应用的资源配置文件的位置,有 git 仓库地址和目录组成destination
定义被创建的应用运行目标,包括 k8s 的 cluster
- Application CRD 中有两个重要的属性:
Sync Status
:Application 在 k8s 的实际状态与 Git Repo 中定义的期望状态是否一致Health Status
:Application 的健康状态,由各资源的健康状态组成的聚合信息Health
:健康Processing
:部署中,通过和解循环尝试变更为 HealthDegraded
:降级Missing
:缺失,未部署完成
- Project:基于 AppProject CRD 实现
支持的配置管理工具: