使用JulieOps管理Kafka自动化部署?


当试图建立一个自动化的Kafka平台时,有一个问题是 "我如何管理我的Kafka Artefacts?"。

在这篇文章中,我们谈论了一个我们目前在不同项目中使用的解决方案,在未来的文章中,我们打算更详细地了解它的一些功能和实现。

如果你开始使用Kafka,或者已经有了一个稳定的解决方案,并且有必要进行实验,或者开始有请求来创建新的主题,甚至有特定的配置,不同的模式,为不同的集成部署不同的连接器,运行多个ksqlDB查询等。你打算每次都通过控制台手动部署它们,还是尝试使用API?你打算如何跟上变化?必须有一种方法来保持它的组织性、自动化和所有其他的好东西。

我们得到的答案是......JulieOps! 

什么是 JulieOps?
以前称为 Kafka Topology Builder,现在以 JulieOps 的名字命名(向作者的母亲致敬——如果您想了解更多关于它为何以这样的名称结尾的信息,请单击此处)。它是一个开源工具,可帮助您以集中的方式自动配置 Kafka 中的主题、连接器、访问控制、Confluent Schema Registry 和其他工具(查看官方文档以获取支持的功能的完整列表)。

为什么这个解决方案是一个答案?
如果您想利用版本控制和“一切即代码”来帮助您自动化并控制集群状态,JulieOps 的设计考虑了 GitOps 理念,因此它非常适合。

你问什么是 GitOps?
下面我们给你一个品味,但你肯定应该更深入地研究它。
GitOps 是一种范式或一组实践,使开发人员能够执行通常属于 IT 运营范围的任务。GitOps 要求我们使用声明式规范来描述和观察系统,这些规范最终构成了连续一切的基础。

JulieOps,由Pere Urbon-Bayes,Confluent 的高级解决方案架构师建立的一个活跃的项目,不断添加新功能并欢迎功能请求和贡献。不仅与 Apache Kafka 兼容,而且还与 Confluent Kafka 进行了一些集成,例如 RBAC、SR 等。

CLI 工具有多种格式。你已经准备好使用 docker 镜像、不同发行版的包,甚至可以将它作为一个胖 jar,除了你自己在本地构建它。
运行此 CLI 工具所需的文件是:

  • 一个属性文件,它将包含工具和 Kafka 集群的所有相关配置,通常称为拓扑构建器属性文件
  • 描述符文件(可以是一个或多个,采用 YAML 或 JSON 格式),顾名思义,它将包含我们对象的描述(参见下面的示例)

JulieOps 适合我吗?之前我应该​​考虑什么?
使用 JulieOps 作为模块化辅助工具很容易,将其添加到我们的管道中以应用配置更改,使流程自动化。
关于这一点,有可能走不同的道路,因此可以灵活地适应您的环境。
您可以选择在短期容器中实施 JulieOps(用于资源优化,因为它只是一个一次性操作)或持久的长期实例,以便在配置发生变化时持续应用它们。
尝试扩展配置时相关的其他一些问题:

  • 您会在一个文件中收集所有信息还是将其拆分为多个文件?
  • 每个团队都有一个配置文件吗?对于每个主题/连接器或任何其他点?
  • 你将如何处理你的 repo 中的文件结构?你会只有一个回购还是几个?
  • 你会按项目分离文件吗?团队?用例?
  • 您还可以考虑拥有多个描述符文件或保留一个文件作为事实来源(您可以在存储库中看到原始想法,但对于更大更复杂的项目可能难以管理并且容易出错)。

您选择管理文件(拓扑构建器属性文件或/和描述符文件)的策略可能会影响性能和成本。您对此的关心程度取决于您的用例。
  • 例如,如果您有多个文件夹或目录级别,您是否需要在管道中执行其他步骤来展平您的文件?
  • 您会将所有文件复制到您的容器吗?或者你会有一个专用的共享卷,在那里你已经克隆了你的 repo 或者已经附加了可以使用的文件?
  • 你的配置文件中有秘密吗?它们将如何在您的管道中处理?

应该考虑所有这些以及更多。

我们如何利用 JulieOps 来帮助我们解决问题?
使用 JulieOps,我们还可以通过设计实现自动命名控制。还可以添加试运行和默认验证以及您自己的自定义验证。这对于管道中的测试步骤非常有价值。

使用 JulieOps 作为工具并围绕它构建强大的管道,我们可以轻松配置新主题或更改现有主题,使此类操作像提交到存储库一样简单。我们可以添加新的连接器、模式、ksqlBD 查询、添加 ACL 等等。

项目动机之一是在保持运营控制的同时为团队提供自主权。

但是,强大的力量带来了巨大的责任,并且应该应用围绕您的存储库的强大策略来保持控制并防止错误修剪事件的发生。

因此,还应该为您的存储库、分支、PR、提交等添加多个级别的安全性和访问控制,这是您应该牢记在心的事情。
如您所见,JulieOps 之类的工具与您的 Kafka 集群并行工作得很好,如果您有良好的实践,可以真正帮助自动化操作任务并保持控制。