跳到内容

为了更好的可发现性,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,而无需像与 BrokerChannel API 交互的应用程序代码那样手动创建它们作为 yaml 清单。

示例

创建 Broker

要检查该功能是否有效,请创建一个简单的 broker

kn broker create my-broker
  1. 使用以下示例创建 YAML 文件

    apiVersion: eventing.knative.dev/v1
    kind: Broker
    metadata:
      namespace: default
      name: my-broker
    
  2. 通过运行以下命令应用 YAML 文件

    kubectl apply -f <filename>.yaml
    
    其中 <filename> 是您在上一步中创建的文件的名称。

向 Broker 生成事件

自动创建功能由处理的事件触发。因此,为了验证功能,我们需要发送一个具有所需类型的示例事件。这可以通过几种方法实现,以下是用集群中的 kn-plugin-eventcURL 容器的两个示例。

以下是一个使用 kn CLI 发送事件的示例,以提高开发人员的生产力。kn-plugin-event 插件可以使用 Homebrew 安装,也可以直接从 GitHub 版本下载,有关更多详细信息,请参阅插件 安装步骤

  1. 设置 kn event 插件

    brew install knative-extensions/kn-plugins/event
    

  2. 发送事件

    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 管道的一部分,而不是依赖于此自动创建功能。

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,用于该目的。 了解更多