Argo CD架构设计与工作原理
创始人
2024-05-30 04:17:09

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个组件组成,如下所示。

image-20230307163924567

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仓库中声明的期望状态进行对比,如果有不一致的状态,会根据用户设置的同步策略决定是否自动修复应用。

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...