ArgoCD(一): 架构及其模型

news2024/12/24 2:39:47

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的期望状态和实际状态,并确保实际状态和期望状态一致

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3TorFkO8-1686018548554)(images\image-20230116152940426.png)]

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:定义这组资源的配置文件中定义的对象应该创建运行于何处。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWNw4l48-1686018548555)(images\image-20230116160021773.png)]

    • 支持的配置管理工具

      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分别指定各自的黑名单

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFoHLGK4-1686018548555)(images\image-20230116161330979.png)]

1.1.4 ArgoCD架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBvhUjPv-1686018548555)(images\image-20230116161500538.png)]

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和渐进式交付

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ep4JsdMy-1686018548556)(images\image-20230116164224530.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Godot引擎 4.0 文档 - 手册 - 最佳实践

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面:Best practices — Godot Engine (stable) documentation in English 介绍 本系列是一系列最佳实践,可帮助您高效地使用 Godot。 Godot 在构建项目代码库并…

图漾相机—windows- C# SDK(官网下载编译)

文章目录 一、 安装依赖:二. 下载swig和SDK:swig下载连接:[https://www.swig.org/](https://www.swig.org/)下载C# SDK下载 Windows Camport3 SDK 三、配置C#和swig环境变量编译前,请先:安装 Python。 安装 NumPy 和 O…

华为 HCU 硬改教程 真实参数,华为改串号 改机教程 登录异常 设备异常 环境异常Qv

华为 HCU 硬改教程 真实参数,华为改串号 改机教程 登录异常 设备异常 环境异常Qv HCU基础版硬改教程 须知:使用需要关闭所有杀毒软件 华为手机支持这些型号硬改 ------------------------------操作前准备---------------------------------- 确保手机能…

05SpringCloud 分布式事务seata

分布式事务seata 1.前言 务必要知道,分布式事务不可能100%完美解决问题!只能尽量提高成功概率!让这个成功概率尽量接近99.999%,为了达到这个目的,甚至加入人工。 2.场景 有如下业务场景:当我们添加订单…

“AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘 专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌…

vue3-实战-05-管理后台顶部tabbar开发-全局守卫

目录 1-顶部tabbar组件静态搭建与拆分 2-菜单折叠效果 3-顶部面包屑动态展示 4-刷新和全屏 4.1-点击刷新操作 4.2-全屏 4.3-退出登录 5-路由鉴权 1-顶部tabbar组件静态搭建与拆分 分析一下,顶部分为左右两侧,左侧是面包屑,右边是 刷新…

物联网行业的发展的趋势、现状与挑战

随着物联网技术的不断发展,越来越多的行业正在积极拥抱物联网,进行物联网开发。在这些行业中,有大量的产品和服务都在使用物联网技术。事实上,目前有超过1000亿个设备在运行着联网设备。全球智能传感器市场预计将从2021年的272亿美…

Codeforces Round 877 div2 C No Prime Differences

目录 一、题目 二、题目分析 三、 一、题目 传送门 C. No Prime Differences time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given integers n and m. Fill an n by m grid with the…

分布式理论 - CAP

tip: 作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 文章目录 一、简介深入理解三、CAP的应用应用 一、简介 CAP理论是分布式系统中最重要的理论之一&#xf…

windows编译CTK

文章目录 windows编译CTK环境准备使用cmake-gui编译CTK测试VTK windows编译CTK 环境准备 CTK源码 :https://github.com/commontk/CTK CTKData 源码:https://github.com/commontk/CTKData 最新版本的不用下载CTKData 相关的下载会在编译的时候去下载&…

CSS样式——悬停变色

目录 准备图标 实现效果 基础模板 清除默认样式 重合相同图标 实现悬停变色 CSS样式——悬停变色,效果如下所示: 准备图标 在完成上面的效果之前,我们需要准备图标,这里我使用的是阿里巴巴矢量图标库,不会使用阿…

聚力自主安全,领跑先进计算!麒麟信安闪耀2023首届国家新一代自主安全计算系统产业集群融通生态大会

5月25日至26日,2023首届“国家新一代自主安全计算系统产业集群”融通生态大会在长沙隆重举行。大会以“聚力自主安全 领跑先进计算”为主题,由工业和信息化部规划司指导,湖南省工业和信息化厅、长沙市人民政府主办,旨在围绕实现“…

C++入门——缺省参数|函数重载

前言: C入门我们主要是补充C语言的不足,为后续类和对象学习打基础。在前面我们学了命名空间、输入输出,今天我们继续学习。 上期链接: C入门——关键字|命名空间|输入&输出_wangjiushun的博客-CSDN博客 目录: …

CompletableFuture真香,可以替代CountDownLatch!

1、背景 之前我们提到了 Future 和 Promise。Future 相当于一个占位符,代表一个操作将来的结果。一般通过 get 可以直接阻塞得到结果,或者让它异步执行然后通过 callback 回调结果。 但如果回调中嵌入了回调呢?如果层次很深,就是…

Spring Cloud Alibaba 快速上手搭建公司项目(四)Sentinel

Sentinel是一个开源的云原生流量控制和熔断降级的组件,它可以实现对微服务架构中的服务进行实时监控、自动降级、熔断限流等功能。Sentinel的核心原理是通过滑动窗口的方式对请求进行控制,当请求超过阈值时,会自动触发熔断操作,避…

JavaWeb——JSP实现书城首页

实验名称: JSP实现书城首页 实验目的: (1)了解JSP的特点及其运行原理 (2)掌握JSP的基本语法 (3)熟悉JSP指令和隐式对象的使用 (4)掌握JSP动作元素的使用…

ABP VNext 利用QQ邮箱发送邮件

ABP VNext 利用QQ邮箱发送邮件 1.配置邮箱1.1 设置1.2账户1.3 开启邮箱服务1.4 生成授权码 2 默认的SmtpEmailSender发送邮件2.1 生成数据库2.2 添加一个后台任务执行发送邮件2.3 服务中注入ISmtpEmailSender2.4 在配置文件添加邮箱信息 3 集成MailKit发送邮件3.1 添加包Volo.A…

从Docker和Kubernetes看Containerd

导读: 在学习Containerd之前,我们需要去了解Docker与Kubernetes这两个使用Containerd最多的技术,也需要明白什么是容器,什么是容器运行时,以及里面涉及的组件,这些组件是用来干什么的,及容器领域…

Zabbix Httpd漏洞修复2

一、背景 漏洞库升级的真是快啊,绿盟扫描的zabbix服务器又有新的漏洞了,经一番折腾,搞定,记录如下。 二、漏洞内容 漏洞主要还是集中在php和http漏洞 三、修复过程 思路还是升级httpd版本解决。 1、查看下zabbix版本&#xff…

【JVM】垃圾回收机制

垃圾回收三大步骤:判断是不是垃圾(垃圾判断算法) -> 标记需要回收的垃圾(三色标记) -> 回收垃圾(垃圾回收算法)。 一、如何判断是不是垃圾(垃圾判断算法)? (1)引用计数器算法:对象中记录…