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