为了更好的可发现性,EventType 自动创建¶
标志名称: eventtype-auto-create
阶段: Alpha,默认情况下禁用
跟踪问题: #7044
角色: 开发人员
概述¶
通过 eventtype-auto-creation
功能,我们有可能自动创建 Knative Broker 和 Channel 实现接收和传入的 EventType。
为了使用这个可选功能,我们必须在 config-features
中启用它,通过将 eventtype-auto-create
标志设置为 enabled
apiVersion: v1
kind: ConfigMap
metadata:
name: config-features
namespace: knative-eventing
data:
eventtype-auto-create: "enabled"
...
启用此功能后,我们会在 broker/channel 入站免费获得 EventType
,而无需像与 Broker
或 Channel
API 交互的应用程序代码那样手动创建它们作为 yaml 清单。
示例¶
创建 Broker¶
要检查该功能是否有效,请创建一个简单的 broker
kn broker create my-broker
-
使用以下示例创建 YAML 文件
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: namespace: default name: my-broker
-
通过运行以下命令应用 YAML 文件
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一步中创建的文件的名称。
向 Broker 生成事件¶
自动创建功能由处理的事件触发。因此,为了验证功能,我们需要发送一个具有所需类型的示例事件。这可以通过几种方法实现,以下是用集群中的 kn-plugin-event
和 cURL
容器的两个示例。
以下是一个使用 kn
CLI 发送事件的示例,以提高开发人员的生产力。kn-plugin-event
插件可以使用 Homebrew 安装,也可以直接从 GitHub 版本下载,有关更多详细信息,请参阅插件 安装步骤。
-
设置
kn event
插件brew install knative-extensions/kn-plugins/event
-
发送事件
kn event send \ --to Broker:eventing.knative.dev/v1:my-broker\ --type com.corp.integration.warning \ -f message="There might be a problem"
可以通过集群中的 curl
发送事件
kubectl run curl --image=docker.io/curlimages/curl --rm=true --restart=Never -ti \
-- -X POST -v \
-H "content-type: application/json" \
-H "ce-specversion: 1.0" \
-H "ce-source: my/curl/command" \
-H "ce-type: my.demo.event" \
-H "ce-id: 6cf17c7b-30b1-45a6-80b0-4cf58c92b947" \
-d '{"name":"Knative Demo"}' \
http://broker-ingress.knative-eventing.svc.cluster.local/default/my-broker
curl
HTTP POST 请求中构建事件。
事件发现¶
在生成两个事件后,我们应该能够在系统中发现事件,基于 eventtype-auto-creation
功能
k get eventtypes.eventing.knative.dev -A
NAMESPACE NAME TYPE SOURCE SCHEMA BROKER DESCRIPTION READY REASON
default <...> com.corp.integration.warning kn-event/v1.9.0 my-broker True
default <...> my.demo.event my/curl/command my-broker True
结论和建议¶
没有这个功能,我们就不会在系统中看到两个 EventType
实例,因此我们提高了事件的可发现性,以便于消费。但是,虽然这个可选功能对于自动创建事件非常方便,但我们强烈建议您为您的应用程序 部署
生成的所有事件创建实际的 EventType
清单,作为您 Gitops 管道的一部分,而不是依赖于此自动创建功能。