一、概述

1、为什么使用Argo CD

Jenkins采用推的形式进行部署,ArgoCD采用拉的方式,更为高效

Jenkins部署更新需要保存k8s的集群认证信息,以及无法感知应用的状态,argocd为原生部署在k8s集群内,

2、什么是Argo CD

Argo CD是Kubernetes的声明式GitOps持续交付工具

3、什么是Git Ops

Git Ops:Git 作为唯一的事实来源来管理基础设施操作。

4、如何运行

Argo CD遵循Git Ops模式,使用Git存储库作为定义所需使用应用程序状态的事实来源。

k8s清单可以通过多种方式进行制定:

  • kustomize application
  • helm charts
  • jsonnet files
  • YAML/Json

Argo CD可在指定的目标环境中自动部署所需的应用状态。应用程序可以跟踪分支、标签的更新,或是git提交的清单进行更新容器的状态。

二、架构

Argo CD被实现为k8s的控制器,它持续监控正在运行的程序,并将当前状态与所需的目标状态(git仓库中)进行比较,并报告实时差异。可以通过自动或者手动的方式将实时状态与目标状态进行同步。

在这里插入图片描述

如上图所示,Argo CD主要由核心组件、web UI、CLI、通知系统构成

1、核心组件

API server

API server是一个gRPC/REST服务器,公开web UI 、CLI以及CI/CD使用的API

  • 应用程序管理和状态报告
  • 应用程序的操作管理(同步、回滚)
  • 存储库和k8s集群凭证管理
  • RBAC
  • git webhook 事件侦听

Repository Server(仓库服务器-默认3分钟轮训一次)

将git仓库缓存到本地,用于维护本地缓存,

根据以下信息生成并返回k8s资源的yaml文件,

  • git仓库的地址
  • git revison(提交、标签、分支)
  • 应用路径
  • 模板的特定参数

Application Controller(应用控制器)

他是一个k8s的控制器,它持续监控正在运行的程序,并将当前的实时状态与gitRepo所需的目标状态进行比较,确保当前状态不断逼近或等同于期望状态。

2、其他组件

notifications controller

为application提供通用的通知引擎,支持trigger和template,语序用户通过自定义的方式进行通知

redis、Dex-server

redis提供缓存服务

Dex-server则主要用于提供in-memory database

三、核心功能

  • 可以协同使用各种配置管理工具(helm、kustomize)确保应用程序的真实状态与gitrepo中定义的期望状态保持一致
  • 将应用程序部署到指定的目标环境
  • 持续监控已经部署的应用程序
  • 基于web ui、CLI的操作接口,以及应用程序可视化
  • 部署或者回滚到gitRepo仓库中提交的应用程序的任何状态
  • Presync、sync、Psotsync以支持复杂的应用程序部署和策略
  • sso集成
  • webhook集成
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐