一段时间以来,Brigade[1]的维护人员,根据社区使用该产品的经验,以及我们自己的经验,一直在努力规划和实施平台的重大修订。今天,我们自豪地宣布这一努力的里程碑——Brigade v2.0.0-alpha.1 的发布。当我们还在解决问题,并培养一个扩展的 Brigade 2 生态系统时,我们觉得是时候开始将社区引入 Brigade 2 了。
Event-driven scripting for Kubernetes. Brigade is a tool for running scriptable, automated tasks in the cloud — as part of your Kubernetes cluster.
如果你不熟悉 Brigade,现在可能是一个很好的时间去 brigade.sh 了解一下,因为本文的其余部分至少假定你对这个平台有一定的了解。
有哪些改变?
随着时间的推移,Brigade 的维护人员已经了解到两件事:成功使用这个平台需要相当程度的 Kubernetes 能力——通过更好的抽象,不特别精通 Kubernetes 的用户也可以在 Brigade 中发现价值。所以,矛盾的是,Brigade 2 最大的变化在某些方面也是微妙的。熟悉 Brigade 1.x 的人,可能也熟悉它的口号——“Kubernetes 的事件驱动脚本”。Brigade 2 的口号也许写成“(Kubernetes 的)事件驱动脚本”。这反映了我们努力将最终用户从 Kubernetes 中尽可能地抽象出来,同时不向那些既熟悉又能访问底层集群的用户完全隐藏它。
Kubernetes 作为实现细节逐渐消失在背景中,这对 Brigade 的整体架构产生了广泛的影响。Brigade 1.x CLI 和事件网关都直接与 Kubernetes API 服务器交互,而 Brigade 2 与全新的 Brigade API 交互。这是一个非常积极的改变,因为拥有了我们自己的 API,我们的项目可以做一些以前不可能做的事情。
非详尽的重点清单包括:
- 访问底层集群不再是最终用户的先决条件。
- 支持 OpenID Connect 认证和兼容的身份提供者,如 Azure Active Directory 或谷歌云身份平台。
- 基于订阅的事件总线。网关可以将事件发送到 Brigade 中,而不需要知道事件是针对谁的。所有订阅者都会收到该事件的副本。
- 事件数据(包括日志)现在将持续存在到处理事件的 Kubernetes pod 的生命周期之外。
- 支持由多个 OCI 容器组成的作业(即具有边车容器的作业)。
- 更简单和显著改进的集成:
- 自定义工作器(基于容器的事件处理器)和事件网关比以前更容易创建。
- 事件网关现在可以跟踪它们发送到 Brigade 中的事件的状态,也许可以报告状态到上游。
- Go、JavaScript/TypeScript 和 Rust(实验性)的官方 SDK 意味着自定义工作器、事件网关、UI 等都可以用这些流行语言中你最喜欢的任何一种来实现。
其他值得注意的改进并不直接归功于修订后的架构,包括显著改善了用户体验,并支持使用 TypeScript 处理事件。
要解决最后一个技术性较小的变化——命名事物是困难的。Brigade 1.x,单个事件衍生单个“build”,所以毫不奇怪,术语“build”几乎与“event”同义使用。例如,使用 CLI,用户可能查询的是“builds”而不是“events”。随着时间的推移,维护人员已经意识到这个术语促进了一个不准确的概念,即 Brigade 是一个 CI 平台。尽管 CI 是 Brigade 很好地处理的一个著名且流行的用例,但 Brigade 从来没有被限制在这样的用途上。在 Brigade 2,我们把"build"这个词从我们的方言中去掉了。现在只有事件(events)了。项目订阅事件。Brigade 生成工作器来处理事件。
那么,什么没有改变呢?
尽管有许多变化,维护人员相信我们仍然忠于 Brigade 的最初设想,以及 Brigade 1.x 的一般知识应该转到 Brigade 2。最终,Brigade 2,就像它的前辈一样,只是简单地用任意的动作(脚本)连接来自任意源的事件(如果有网关存在或者可以开发)。
很多爱已经投入这个令人兴奋的产品更新,我们希望你会像我们一样爱它。
接下来是什么?
我们还没有做完。随着第一个 alpha 版本的发布,我们期待着进一步的 alpha 和 beta 版本,并最终定期发布候选版本。
目前,我们非常专注于:
- 压扁臭虫
- 刷新文档
- 特性开发
- 构建集成既能拓宽生态系统,又能识别漏洞和缺失的 API 功能:
- 一个新的 GitHub 网关,还有更多的网关
- 来自 Brigham Young University 的一组学生,正在独立开发一款焕然一新的、与 Brigade 2 兼容的Kasthi[2](Brigade UI)。
Kashti仪表盘
Brigade 2 可能是一个正在进行的工作,但如果你想开始熟悉,这不是太早,这是提供反馈甚至开始贡献的最佳时间!
参考资料
[1]
Brigade: https://brigade.sh/
[2]
Kasthi: https://github.com/brigadecore/kashti