ArgoCD(一): 架构及其模型

1.1 ArgoCD 概览

  • Argo项目2017年由Applatix公司成立,2018年被Intuit收购,之后,BlackRock为Argo项目贡献了Argo Events这一项目;
  • Argo所有组件都通过kubernetes CRD实现
  • Argo生态目前主要由四个子项目组成
    • Argo Workflows :第一个Argo项目
  • Argo Events :k8s上基于事件的依赖管理器,用于触发k8s中Argo工作流和其他操作
  • Argo CD: 支持GitOps范式的声明式kubernetes资源管理
  • Argo Rollouts: ArgoCD的高级交付策略工具,支持声明式渐进式交付策略,例如canary,blue-green等

1.1.1 ArgoCD简介

  • 将应用程序部署到kubernetes之上的GitOps工具
  • 核心组件:Application Controller及相关的一组CRD
  • 基础工作模型
    • 以特定Repo(配置仓库)为应用程序部署和管理的唯一可信源,该Repo负责定义Application大人期望状态;
    • Application Controlller负责将repo定义的Application运行于一个特定目标i的Kubernetes Cluster上;
    • Application Controller持续监视,对比Application的期望状态和实际状态,并确保实际状态和期望状态一致

ArgoCD(一): 架构及其模型_第1张图片

1.1.2 ArgoCD主要功能

  • 可协同使用各种配置管理工具(如ksonnet/jsonnet、Helm和kustomize)确保应用程序的真实状态与GitOps中定义的期望状态一致
  • 将应用程序部署到指定的目标环境
  • 持续监控已部署的应用程序
  • 基于web和CLI的操作接口,以及应用程序可视化
  • 部署或回滚到gitrepo仓库中提交的应用程序任何状态
  • preSync、Sync、PostSync Hooks以支持复杂的应用程序部署策略,例如:blue/green,canary等
  • SSO集成
  • WebHooks集成那个:与github,gitlab等
  • 可以独立使用,也可以作为pipeline的一部分使用,例如与Argo Workflow,Jenkins 以及GitLab CI等配和使用

1.1.3 核心工作模型

  • ArgoCD的两个核心概念为Applicatio和Project,他们可分别基于Application CRD和AppProject CRD创建

  • Application从本质上讲,包含如下两部分:

    • 一组在kubernetes上部署和运行某个应用的资源配置文件,这组资源相关的source和destination:

      1. source: 定义从何处获取配置文件,包括repoUrL和配置文件所在的目录
      2. destination:定义这组资源的配置文件中定义的对象应该创建运行于何处。

      ArgoCD(一): 架构及其模型_第2张图片

    • 支持的配置管理工具

      Helm、Kustomize、Jsonnet

  • Application还存在两个非常重要的属性:Sync Status和Health Status:

    • Sync Status: Application的实际状态与Git Repo中定义的期望状态是否一致;Synced为一致,OutOfSync为不一致

    • Health Status:Application的健康状态,是各资源的健康状态的聚合信息

      Healthy :健康

      Processing:处于尝试转为健康状态的进程中

      Degraded:降级

      Missing:缺失,即在gitrepo中存在资源定义,但并未完成部署

  • Project

    • 能够将Application进行分组的逻辑组件
    • 主要用于Application彼此隔离,并且支持在project内进行细粒度的权限管控
    • 支持为内部Application上的Source和Destionation分别指定各自的黑名单

    ArgoCD(一): 架构及其模型_第3张图片

1.1.4 ArgoCD架构

ArgoCD(一): 架构及其模型_第4张图片

1.1.5 ArgoCD组件

  • ArgoCD API Server: 为Web UI、CLI,以及相关的CI/CD系统提供服务,相关功能包括:

    • 管理应用程序并报告其状态
    • 调用并发起应用程序的特定操作:例如sync、rollback以及用户其他行为
    • 管理repo和cluster相关的凭据
    • 将身份认证与授权功能委派给外部IdP服务
    • 强制实施RBAC
    • 监听及转发Git Webhook相关的事件
  • Repository Server

    • 内部服务,用于为相关的Git仓库维护一个本地缓存
    • 负责生成kubernetes的资源配置
  • Application Controller

    • 持续监控正在运行的应用程序,并将其当前的活动状态与定义在GitRepo中的期望状态进行比较
    • 确保活动状态不断逼近或等同于期望状态
  • ApplicationSet Controller

    • 以模板化形式自动生成由ArgoCD管理的应用程序
    • 支持从多个不同的角度构建模板,例如不同的Git Repo,或者不同的kubernetes Clusterdeng
  • Notification Controller

    • 持续监控ArgoCD管理的Application,并支持通过多种不同的方式将其状态变化通知给用户
    • 支持Trigger和Template】
  • Redis和Dex-Server

    • Redis负责提供缓存服务
    • Dex-Server则用于提供in-memory Database
  • Argo Rollouts

    • 可选组件,需要单独部署,由一个控制器和一组CRD组成
    • 与Ingress Controller和ServiceMesh集成,为Application提供高级部署功能,如blue-gree、canary、canary analysis和渐进式交付

    ArgoCD(一): 架构及其模型_第5张图片

你可能感兴趣的:(Argo,argocd,kubernetes,云原生)