Argo CD的核心概念
Application(应用):一组Kubernetes资源清单的统一定义,属于CRD(Custom Resource Definition,定制资源定义)资源。
Application source type(应用的源仓库类型):目前Argo CD支持Git和Helm两种源仓库类型。
Target state(目标状态):用户在源仓库中声明的应用状态。
Live state(实时状态):当前环境中应用的实际运行状态。
Sync status(同步状态):应用的实际运行状态与声明的目标状态是否一致,OutOfSync表示未同步,Synced表示已同步。
Sync(同步或部署):使应用更新为目标状态的过程,如下发Kubernetes应用到集群的过程。
Repository(源码仓库):配置连接源码仓库需要提供仓库地址、仓库类型、仓库访问凭证等信息。
Credentials(访问凭证):用于访问源码仓库的凭证。
Clusters(集群):配置可以连接和管理的Kubernetes集群。
Argo CD架构设计与工作原理
Argo CD本质上是一个Kubernetes Operator,设计和定义了一系列Kubernetes CRD描述的自定义资源。Argo CD会持续监听当前应用的运行状态并对比当前应用运行态与Git仓库中声明态的区别,当被监听的应用运行态与声明态有差异时,Argo CD会在UI页面上可视化展示差异部分,同时提供手动或者自动同步应用至所需目标状态的选项设置。如果你在Git仓库中对目标状态做了任何修改,Argo CD都可以自动将修改同步部署到指定目标环境中。从功能上看,Argo CD包括以下主要功能。
- 自动部署应用到指定目标集群上。
- 支持多种应用配置或编排工具,如Kustomize、Helm、Ksonnet等。
- 支持在多集群环境中管理和部署应用。
- 支持多种单点登录方式的集成,如OICD、OAuth2、LDAP、SAML 2.0、GitHub、GitLab等。
- 支持多租户和基于角色访问控制(RBAC)的身份验证。
- 回滚应用到指定的历史版本。
- 应用资源的健康状态分析。
- 自动化和可视化检测应用状态的差异。
- 支持自动化或手动同步策略。
- Web UI界面可以展示应用实时运行状态。
- 提供CLI用于第三方工具持续集成。
- 集成Webhook,如GitHub、GitLab或BitBucket。
- 提供用于远程访问或触发的令牌功能。
- 提供PreSync、Sync、PostSync等钩子能力,帮助用户更好地处理复杂的应用发布,如蓝绿发布、金丝雀发布等。
- 支持应用事件或者API调用的审计和跟踪。
- 支持Prometheus指标采集。
- 支持ksonnet/helm类型应用编排的参数覆盖。
Argo CD架构主要由3个组件组成,如下所示。
1. API Server组件
Argo CD的API Server是一个gRPC/REST风格的API组件,暴露出来的API用于Web UI、CLI或者其他CI/CD系统调用,主要负责以下工作。
- 管理应用和上报应用状态。
- 执行与应用管理相关的操作,如同步操作、回滚操作等。
- 管理源码仓库或集群访问凭证(将其保存为Kubernetes集群中的Secret资源)。
- 对外部身份提供者进行身份验证以及委派身份。
- 执行基于角色的访问权限控制策略。
- 监听和转发Git webhook事件。
2. Repository Server组件
Argo CD的Repository Server是一个内部服务组件,负责维护从Git仓库中拉取的应用编排文件的本地缓存。Repository Server会基于用户提供的以下信息,生成应用的Kubernetes资源清单。
- 仓库地址:如https://github.com/haoshuwei/appcenter-samples.git。
- 修订版本:如master分支(还支持commit id、tag等)。
- 应用路径:如指定子目录examples/demo。
- 应用模板相关参数设置:如helm类型应用的values.yaml文件的设置。
3. Application Controller组件
Argo CD的Application Controller是一个标准的Kubernetes CRD组件,持续监听应用的实时运行状态并与Git仓库中声明的期望状态进行对比,如果有不一致的状态,会根据用户设置的同步策略决定是否自动修复应用。
标签:架构设计,Kubernetes,状态,仓库,CD,应用,Argo From: https://www.cnblogs.com/muzinan110/p/17066814.html