专栏首页CNCFArgo CD v1.6|通过GitOps Engine民主化GitOps

Argo CD v1.6|通过GitOps Engine民主化GitOps

作者:Alexander Matyushentsev

今天,Argo CD团队很高兴地宣布GitOps Engine的首次发布!GitOps Engine将核心Argo CD功能打包到一个可重用的库中,并使其对所有人可用。该库是开源的,可以在Github上获得:

https://github.com/argoproj/gitops-engine

GitOps Engine使你能够快速构建专门的工具来实现特定的GitOps用例,例如引导Kubernetes集群,或者分散地管理命名空间。在这种情况下,Argo CD提供的用户管理和其他管理抽象可能会妨碍你,并引入不必要的复杂性。

Argo CD本身现在也基于GitOps Engine,仍然专注于企业用例,包括:

https://github.com/argoproj/argo-cd

  • 核心GitOps特性。这些特性包括一些基本特性,如在Git中与Kubernetes集群中存储的所需状态的协调、两种状态之间差异的偏差检测,以及一些高级特性,如健康评估和同步钩子。
  • 将GitOps作为服务交付给大型企业的特性。Argo CD提供了SSO集成、灵活的访问控制系统,以及作为Kubernetes CRD实现的应用程序和项目等抽象。这些特性使集中的基础设施团队能够将GitOps功能转移到基础设施层,并将其作为服务提供给整个组织。

Argo CD团队还与CNCF Flux团队合作,利用GitOps Engine实现Flux:

https://github.com/fluxcd/flux/pull/2886

GitOps Engine

那么GitOps Engine到底包含了什么呢?下面的清单演示了v0.1.1中包含的顶级Golang包:

.
├── agent         # provides CLI driven interface 
└── pkg
    ├── cache     # implements k8s caching
    ├── diff      # implements resource diffing
    ├── engine    # provides a high-level gitops interface
    ├── health    # implements resources health assessment
    ├── sync      # implements synchronization
    └── utils     # utility packages

Cache

https://pkg.go.dev/github.com/argoproj/gitops-engine/pkg/cache

在Argo CD开发过程中,团队遇到了很多性能和可伸缩性问题。即使是单个集群用例也非常具有挑战性,需要解决很多边缘用例。阅读这篇博文,了解更多关于这次过程的信息。通过存储轻量级资源元数据并利用Kubernetes watch API更新缓存,cache包允许快速获得Kubernetes集群的live状态来执行协调。这种设计大大减少了Kubernetes API请求的数量,并提供了对所需元数据的即时访问。

https://blog.argoproj.io/doing-gitops-at-scale-6313f5889775

Diff

https://pkg.go.dev/github.com/argoproj/gitops-engine/pkg/diff

diff包帮助协调Git中存储的资源和动态Kubernetes资源。该包使用三路合并,并实现与kubectl diff等价的逻辑。

Health

https://pkg.go.dev/github.com/argoproj/gitops-engine/pkg/health

health包支持资源健康评估。这使得Argo CD能够找到部署降级(Degraded deployment)的应用程序,能够有效地将部署后验证集成到CI流水线中,并且是同步钩子和同步波所必需的。v0.1.1版本只支持内置的Kubernetes资源。在未来的版本中,我们计划包括自Custom Resource支持,在Argo CD已经支持:

https://github.com/argoproj/gitops-engine/issues/48

Sync

https://pkg.go.dev/github.com/argoproj/gitops-engine/pkg/sync

sync包利用diff和health包并实现资源同步功能。高级功能,如Sync Hooks和Sync Waves也包括在内。

Engine

https://pkg.go.dev/github.com/argoproj/gitops-engine/pkg/engine

GitOps engine包是将所有东西集合在一起并为GitOps提供高级API的东西。

GitOps Agent

最后,我们需要一个端到端示例,说明如何使用引擎实现GitOps操作器(https://github.com/argoproj/gitops-engine/tree/master/agent)。GitOps Agent利用GitOps Engine,并通过一个简单的CLI接口访问许多引擎特性。该代理非常适合于需要基本GitOps操作但不需要SSO或其他多租户特性的用例。

一个演示胜过千言万语!

https://asciinema.org/a/168161

https://asciinema.org/a/334213

GitOps Agent的主要目的是鼓励你在项目中使用GitOps Engine并收集社区反馈。请给代理一个尝试,让我们知道你想看到在下一个版本。

Argo CD + GitOps Agent

Argo CD v1.6版本将Argo CD迁移到GitOps Engine。我们希望迁移能够简化额外的GitOps特性、bug修复,并最终加速项目开发。除了GitOps Engine重构之外,v1.6版本还包含了一些增强和bug修复。在发布描述中了解关于发布更改的更多信息:

https://github.com/argoproj/argo-cd/releases/tag/v1.6.0-rc1

本文分享自微信公众号 - CNCF(lf_cncf),作者:Argo

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • metal3-io项目

    说明:Metal³项目(发音:Metal Kubed)的存在是为了为Kubernetes提供裸机主机管理。Metal³的主要组件包括baremetal-oper...

    CNCF
  • Harbor项目

    说明:Harbor是一个开源的云原生registry项目,用来存储、签名并扫描存储工件,能够提供诸如用户管理,访问控制,活动审计,和节点间的复制等一系列高级功能...

    CNCF
  • Dragonfly项目

    说明:Dragonfly是一个智能、基于P2P的镜像和文件分配系统。它旨在解决在文件传输过程中出现的低效、低成功率和浪费网络带宽问题。特别是大型文件分布场景,如...

    CNCF
  • idea报错:Error running $classname: Command line is too long. Shorten command line for $classname.

    打印的变量太长了,超过了限制,这都会报错...我只想知道idea基于什么原理会报这个错...

    ydymz
  • Node.js v13.3.0(Current)发布

    Node.js v13.3.0(Current)于 2019-12-03 发布,以下为一些显著的的变化。Node.js 版本不清楚的可以参考 Node.js 版...

    五月君
  • 科普 | 硬核充电来咯!有关Blockcerts V3提案你应该知道的事(三)

    上期我们为大家介绍了 Blockerts 作为可验证凭证是如何实现的,本期我们将继续连载翻译 Rebooting Web of Trust 组织在 RWOT I...

    本体Ontology
  • 程序员的最爱

    2.机械键盘对于程序员也不属于高消费物品,想买就买咯。而且机械键盘很耐用,性价比很高

    IT大咖说
  • python: sort, sorted, reverse

    python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加...

    昱良
  • WordPress下载:429 Too Many Requests,怎么办

    国内访问WordPress官方下载站:https://cn.wordpress.org/download/会经常出现:429 Too Many Requests...

    崔文远TroyCui
  • 纯CSS实现常见的UI效果「详细介绍」

    切图仔,是大多数前端用来自嘲的称呼。相信很多人平时写页面的时候,大部分时间是在切图和排图,如此往复。这里并不是要否定切图本身,而是在质疑:一直切图到底对自己的功...

    睡魔的谎言

扫码关注云+社区

领取腾讯云代金券