Menu Close

4.3. Knative CLI 插件

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

目前,红帽支持 kn-source-kafka 插件和 kn-event 插件。

重要

kn-event 插件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/

4.3.1. 使用 kn-event 插件构建事件

您可以使用 kn event build 命令的 builder 接口来构建事件。然后,您可以稍后发送该事件或在另一个上下文中使用它。

先决条件

  • 已安装 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="
        }
      }