首页 > 其他分享 >Argo CD核心概念及架构设计

Argo CD核心概念及架构设计

时间:2023-01-25 11:55:21浏览次数:43  
标签:架构设计 Kubernetes 状态 仓库 CD 应用 Argo

Argo CD的核心概念

Application(应用):一组Kubernetes资源清单的统一定义,属于CRD(Custom Resource Definition,定制资源定义)资源。

Application source type(应用的源仓库类型):目前Argo CD支持Git和Helm两种源仓库类型。

Target state(目标状态):用户在源仓库中声明的应用状态。

Live state(实时状态):当前环境中应用的实际运行状态。

Sync status(同步状态):应用的实际运行状态与声明的目标状态是否一致,OutOfSync表示未同步,Synced表示已同步。

Sync(同步或部署):使应用更新为目标状态的过程,如下发Kubernetes应用到集群的过程。

Repository(源码仓库):配置连接源码仓库需要提供仓库地址、仓库类型、仓库访问凭证等信息。

Credentials(访问凭证):用于访问源码仓库的凭证。

Clusters(集群):配置可以连接和管理的Kubernetes集群。

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

 

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

标签:架构设计,Kubernetes,状态,仓库,CD,应用,Argo
From: https://www.cnblogs.com/muzinan110/p/17066814.html

相关文章

  • Argo CD安装配置
    安装ArgoCD单独为ArgoCD创建命名空间argocd,命令如下所示。$kubectlcreatenamespaceargocdnamespace/argocdcreated使用以下命令将ArgoCD部署到argocd命名空间下......
  • 输出十六进制整数ABCDEF对应的十进制整数,所占域宽为15。
    备注:printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。参考代码:#include<stdio.h>intmain(){  printf("%15d\n",0XABCDEF);  return0;}0XABCDEF......
  • 2023牛客寒假算法基础集训营1 个人题解(ACDHKL)
    A.WorldFinal?WorldCup!(I)题意:给10场比赛的点球输赢情况,奇数为A队点球,偶数为B队点球思路:用两个变量x,y来分别存A队当前赢的场次和B队当前赢的场次然后就就扫......
  • 个人写的双缓冲 CDC绘图函数
    voidCDRImageStatic::ShowImg(CDC*dc,CRectrect){CBitmapbmp;bmp.CreateCompatibleBitmap(dc,m_nWidth,m_nHeight);CBitmap*pOld=NULL;CDCmemDC;memDC.......
  • cargo update failed
    https://blog.csdn.net/weixin_39420106/article/details/127345581?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTR......
  • 扩展欧几里得算法 exgcd
    凌:前言\(\tt\#include~"\)\(\tt{\small\texttt{扩展欧几里得算法-}}OI~Wiki\)\(\tt"\)\(\tt\#include~"\)\(\tt{\small\texttt{关于}}~exgcd~{\small\texttt{求得......
  • [ARC144E]GCD of Path Weights
    ProblemStatementYouaregivenadirectedgraph$G$with$N$verticesand$M$edges.Theverticesarenumbered$1,2,\ldots,N$.The$i$-thedgeisdirected......
  • GCD辗转相除的经典套路
      2543.判断一个点是否可以到达-力扣(Leetcode)前两个移动很像辗转相除法(这个套路在Codeforces上已经出烂了)<br>后两个移动可以让 g 乘上$2^k$classS......
  • leetocde-374-easy
    GuessNumberHigherorLowerWeareplayingtheGuessGame.Thegameisasfollows:Ipickanumberfrom1ton.YouhavetoguesswhichnumberIpicked.Eve......
  • vue项目cdn加速秒加载和项目优化
    项目中的问题1.当我们在维护自己的博客或者自己的网站的时候没有特别好的服务器就会响应特别的慢2.当我们项目特别大的时候也会首屏加载特别慢而且vue项目打包后的js......