×

Knative (kn) CLI 支持使用插件,这使您可以通过添加自定义命令和其他非核心分发版共享命令来扩展 kn 安装的功能。Knative (kn) CLI 插件的使用方式与主 kn 功能相同。

目前,Red Hat 支持 kn-source-kafka 插件和 kn-event 插件。

kn-event 插件仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围

使用 kn-event 插件构建事件

您可以使用 kn event build 命令的类似构建器的界面来构建事件。然后,您可以稍后发送该事件或将其用于其他上下文。

先决条件
  • 您已安装 Knative (kn) CLI。

步骤
  • 构建事件

    $ kn event build --field <field-name>=<value> --type <type-name> --id <id> --output <format>

    其中

    • --field 标志将数据作为字段值对添加到事件中。您可以多次使用它。

    • --type 标志使您可以指定一个字符串,该字符串指定事件的类型。

    • --id 标志指定事件的 ID。

    • 您可以将 jsonyaml 参数与 --output 标志一起使用以更改事件的输出格式。

      所有这些标志都是可选的。

      构建简单的事件
      $ kn event build -o yaml
      YAML 格式的结果事件
      data: {}
      datacontenttype: application/json
      id: 81a402a2-9c29-4c27-b8ed-246a253c9e58
      source: kn-event/v0.4.0
      specversion: "1.0"
      time: "2021-10-15T10:42:57.713226203Z"
      type: dev.knative.cli.plugin.event.generic
      构建示例交易事件
      $ kn event build \
          --field operation.type=local-wire-transfer \
          --field operation.amount=2345.40 \
          --field operation.from=87656231 \
          --field operation.to=2344121 \
          --field automated=true \
          --field signature='FGzCPLvYWdEgsdpb3qXkaVp7Da0=' \
          --type org.example.bank.bar \
          --id $(head -c 10 < /dev/urandom | base64 -w 0) \
          --output json
      JSON 格式的结果事件
      {
        "specversion": "1.0",
        "id": "RjtL8UH66X+UJg==",
        "source": "kn-event/v0.4.0",
        "type": "org.example.bank.bar",
        "datacontenttype": "application/json",
        "time": "2021-10-15T10:43:23.113187943Z",
        "data": {
          "automated": true,
          "operation": {
            "amount": "2345.40",
            "from": 87656231,
            "to": 2344121,
            "type": "local-wire-transfer"
          },
          "signature": "FGzCPLvYWdEgsdpb3qXkaVp7Da0="
        }
      }

使用 kn-event 插件发送事件

您可以使用 kn event send 命令发送事件。事件可以发送到公共可用地址或群集内的可寻址资源,例如 Kubernetes 服务以及 Knative 服务、代理和通道。该命令使用与 kn event build 命令相同的类似构建器的界面。

先决条件
  • 您已安装 Knative (kn) CLI。

步骤
  • 发送事件

    $ kn event send --field <field-name>=<value> --type <type-name> --id <id> --to-url <url> --to <cluster-resource> --namespace <namespace>

    其中

    • --field 标志将数据作为字段值对添加到事件中。您可以多次使用它。

    • --type 标志使您可以指定一个字符串,该字符串指定事件的类型。

    • --id 标志指定事件的 ID。

    • 如果您要将事件发送到公共可访问的目标,请使用 --to-url 标志指定 URL。

    • 如果您要将事件发送到群集内的 Kubernetes 资源,请使用 --to 标志指定目标。

      • 使用 <Kind>:<ApiVersion>:<name> 格式指定 Kubernetes 资源。

    • --namespace 标志指定命名空间。如果省略,则命名空间取自当前上下文。

      除目标规范外,所有这些标志都是可选的,您需要使用 --to-url--to

      以下示例显示了将事件发送到 URL。

      示例命令
      $ kn event send \
          --field player.id=6354aa60-ddb1-452e-8c13-24893667de20 \
          --field player.game=2345 \
          --field points=456 \
          --type org.example.gaming.foo \
          --to-url http://ce-api.foo.example.com/

      以下示例显示了将事件发送到群集内资源。

      示例命令
      $ kn event send \
          --type org.example.kn.ping \
          --id $(uuidgen) \
          --field event.type=test \
          --field event.data=98765 \
          --to Service:serving.knative.dev/v1:event-display