前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Argo CD v1.6|通过GitOps Engine民主化GitOps

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

作者头像
CNCF
发布2020-06-05 11:23:56
9860
发布2020-06-05 11:23:56
举报
文章被收录于专栏:CNCF

作者: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包:

代码语言:javascript
复制
.
├── 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档