创建自定义事件源¶
如果要为特定的事件生产者类型创建自定义事件源,则必须创建组件,以使事件能够从该生产者类型转发到 Knative Sink。
此类集成比使用某些更简单的集成类型(例如 SinkBinding 或 ContainerSource)需要更多的努力;然而,这提供了最完善的结果,并且是用户最容易使用的集成类型。通过为您的源提供自定义资源定义 (CRD),而不是通用的容器定义,可以更轻松地向用户公开有意义的配置选项和文档,并隐藏实现细节。
注意
如果您创建了一种不属于核心 Knative 项目的新事件源类型,您可以打开一个 pull request 将其添加到 第三方源 列表中,并在 #knative-eventing Slack 频道 中宣布新的源。
您还可以通过遵循创建扩展存储库的说明,将您的事件源添加到 knative-extensions 组织中。
所需组件¶
要创建自定义事件源,您必须创建以下组件
| 组件 | 描述 |
|---|---|
| 接收适配器 (Receive adapter) | 包含指定如何从生产者获取事件、Sink URI 是什么以及如何将事件转换为 CloudEvent 格式的逻辑。 |
| Kubernetes 控制器 (Kubernetes controller) | 管理事件源并协调底层的接收适配器部署。 |
| 自定义资源定义 (CRD) | 提供控制器用于管理接收适配器的配置。 |
使用示例源¶
Knative 项目提供了一个示例存储库,其中包含一个基本事件源控制器和一个接收适配器的模板。
有关使用示例源的更多信息,请参阅文档。
额外资源¶
-
实现 CloudEvent 绑定接口,cloudevent 的 go sdk 提供了用于标准访问以根据需要配置接口的库。
-
Controller runtime(我们通过注入共享的内容)将协议特定的配置合并到“通用控制器”CRD 中。