Argo CD 初探(一)

什么是Argo CD?

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
Argo CD是一种用于Kubernetes的声明性GitOps连续交付工具。

Why Argo CD?

1.Application definitions, configurations, and environments should be declarative and version controlled.
应用的定义,配置和环境都应是声明的并且是受版本控制的。
2.Application deployment and lifecycle management should be automated, auditable, and easy to understand.
应用的部署和生命周期管理都应是自动的,可审核的以及易于理解的。

Argo CD 架构

Argo CD被当作实现为kubernetes的控制器,该控制器连续监视正在运行的应用程序,并将当前的活动状态与所需的目标状态(在Git存储库中指定)进行diff比较。 其活动状态偏离目标状态的已部署应用程序被标记为OutOfSync。 Argo CD报告并可视化差异,同时提供了自动或手动将实时状态同步回所需目标状态的功能。 在Git存储库中对所需目标状态所做的任何修改都可以自动应用并反映在指定的目标环境中。
在这里插入图片描述

Argo CD组件

API Server

API Server是gRPC/REST服务器,它公开了Web UI,CLI和CI/CD系统使用的API。它具有以下职责:

  • 应用程序管理和状态报告
  • 调用应用程序操作(例如同步,回滚,用户定义的操作)
  • 存储库和集群凭证管理(存储为K8s Secrets)
  • 向外部身份提供者的身份验证和身份验证委派
  • RBAC enforcement
  • Git Webhook事件的侦听器/转发器

Repository Server

Repository Server是一个内部服务,用于维护保存应用程序清单的Git储存库的本地缓存。提供以下输入时,它负责生成和返回Kubernetes清单:

  • repository URL
  • revision (commit, tag, branch)
  • application path
  • 模板特定设置: 参数, ksonnet environments, helm values.yaml

Application Controller

Application Controller是Kubernetes控制器,它持续监视正在运行的应用程序,并将当前的活动状态与所需的目标状态(如在repo中指定)进行比较。它检测OutOfSync应用程序状态并有选择地采取纠正措施。它负责为生命周期事件(PreSync、Sync、PostSync)调用任何用户定义的钩子。

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钩子可支持复杂的应用程序部署(例如,蓝/绿发布和金丝雀升级)
  • 应用程序事件和API调用的审核跟踪
  • 普罗米修斯指标 在Git中覆盖ksonnet / helm参数

Argo CD核心概念

  • Application:清单定义的一组Kubernetes资源,这是一个自定义资源定义(CRD)。
  • Application source type:使用哪个工具来构建应用程序
  • Target state:应用程序的期望状态,由Git存储库中的文件表示。
  • Live state:该应用程序的实时状态,部署了哪些Pod等。
  • Sync status:实时状态是否与目标状态匹配,部署的应用程序是否与Git期望的相同。
  • Sync:使应用程序移至其目标状态的过程,如通过将更改应用于Kubernetes集群。
  • Refresh:将Git中的最新代码与实时状态进行比较,找出有什么不同。
  • Health:应用程序的运行状况是否正常,是否可以满足请求。
  • Tool:从文件目录创建清单的工具,如Kustomize或Ksonnet,请参阅应用程序源类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值