事件源¶
事件源是由开发者或集群管理员创建的 Kubernetes 自定义资源 (CR),它充当事件生产者和事件接收器之间的链接。接收器可以是 k8s 服务(包括 Knative 服务)、通道或从事件源接收事件的代理。
事件源是通过从 Source 对象实例化 CR 来创建的。Source 对象定义了实例化 CR 所需的参数。
所有源都属于 sources 类别。
您可以通过输入 kn 命令来列出集群上现有的事件源
kn source list
您可以通过输入命令来列出集群上现有的事件源
kubectl get sources
注意
从 Kafka 或 RabbitMQ 等其他消息技术导入事件的事件源不负责设置可选属性,例如 datacontenttype。这是原始事件生产者的责任;源只在属性存在时附加它们。
Knative 源¶
| 名称 | 状态 | 维护者 | 描述 |
|---|---|---|---|
| Amazon DynamoDB | Alpha | Knative | 接收来自 Amazon DynamoDB Streams 的事件通知。 |
| Amazon S3 | Alpha | Knative | 接收来自 Amazon S3 存储桶的事件通知。 |
| Amazon SQS | Alpha | Knative | 接收来自 Amazon SQS 队列的事件通知。 |
| APIServerSource | 稳定 | Knative | 将 Kubernetes API 服务器事件引入 Knative。每次创建、更新或删除 Kubernetes 资源时,APIServerSource 都会触发一个新事件。 |
| Apache CouchDB | Alpha | Knative | 将 Apache CouchDB 消息引入 Knative。 |
| Apache Kafka | 稳定 | Knative | 将 Apache Kafka 消息引入 Knative。KafkaSource 从 Apache Kafka 集群读取事件,并将这些事件传递给接收器,以便它们可以被消费。有关更多详细信息,请参阅 Kafka 源示例。 |
| CephSource | Beta | Knative | Ceph 源将来自 Ceph 格式的存储桶通知转换为 CloudEvents 格式,并将其注入 Knative。转换逻辑遵循 AWS S3 存储桶通知中描述的逻辑。 |
| ContainerSource | 稳定 | Knative | ContainerSource 实例化可以生成事件的容器镜像,直到 ContainerSource 被删除。例如,这可以用于轮询 FTP 服务器以查找新文件或以设定的时间间隔生成事件。给定至少指定了一个容器镜像的 spec.template,ContainerSource 会保持一个运行指定镜像的 Pod。K_SINK(目标地址)和 KE_CE_OVERRIDES(JSON CloudEvents 属性)环境变量被注入到正在运行的镜像中。它被多个其他源用作底层基础设施。有关更多详细信息,请参阅容器源示例。 |
| 通用定时器 | Alpha | Knative | 生成带有自定义有效负载的周期性消息。 |
| GitHub | Beta | Knative | 注册指定 GitHub 组织或仓库上指定类型的事件,并将这些事件引入 Knative。GitHubSource 为选定的 GitHub 事件类型触发一个新事件。有关更多详细信息,请参阅 GitHub 源示例。 |
| GitLab | Beta | Knative | 注册指定 GitLab 仓库上指定类型的事件,并将这些事件引入 Knative。GitLabSource 为指定的 事件类型创建 webhook,监听传入事件,并将它们传递给消费者。有关更多详细信息,请参阅 GitLab 源示例。 |
| KogitoSource | Alpha | Knative | Kogito Operator 管理的 Kogito Runtime 自定义资源的实现。 |
| PingSource | 稳定 | Knative | 以指定的 Cron 计划生成具有固定负载的事件。有关更多详细信息,请参阅 Ping 源示例。 |
| RabbitMQ | 稳定 | Knative | 将 RabbitMQ 消息引入 Knative。 |
| RedisSource | Beta | Knative | 将 Redis Stream 引入 Knative。 |
| SinkBinding | 稳定 | Knative | SinkBinding 可用于使用 Kubernetes 提供的任何熟悉的计算抽象(例如 Deployment、Job、DaemonSet、StatefulSet)或 Knative 抽象(例如 Service、Configuration)来创建新的事件源。SinkBinding 提供了一个框架,用于将 K_SINK(目标地址)和 K_CE_OVERRIDES(JSON cloudevents 属性)环境变量注入到任何具有类似 Pod 的 spec.template 的 Kubernetes 资源(又称 PodSpecable)中。有关更多详细信息,请参阅 SinkBinding 示例。 |
第三方源¶
| 名称 | 状态 | 维护者 | 描述 |
|---|---|---|---|
| Apache Camel | 稳定 | Apache 软件基金会 | 启用使用 Apache Camel 组件将事件推送到 Knative。Camel 源现在通过 Kamelets 作为 Apache Camel K 项目的一部分提供。 |
| Debezium | Alpha | Debezium | 将数据库更改作为 CloudEvents 在 Knative 中消费。(knative 配置) |
| Direktiv | Alpha | Direktiv | 接收来自 Direktiv 的事件。 |
| DockerHubSource | Alpha | 无 | 从 Docker Hub Webhooks 检索事件并将其转换为 CloudEvents,以便在 Knative 中消费。 |
| VMware | Alpha | VMware | 将 vSphere 事件引入 Knative。 |
额外资源¶
- 如果您的代码需要作为其业务逻辑的一部分发送事件,并且不符合源的模型,请考虑将事件直接发送到代理。
- 有关使用
kn源相关命令的更多信息,请参阅kn source参考文档。