7.3. Knative CLI プラグイン

Knative (kn) CLI は、プラグインの使用をサポートします。これにより、カスタムコマンドとコアディストリビューションの一部ではない他の共有コマンドを追加でき、kn インストールの機能の拡張を可能にします。Knative (kn) CLI プラグインは主な kn 機能として同じ方法で使用されます。

現在、Red Hat は kn-source-kafka プラグインと kn-event プラグインをサポートしています。

重要

kn-event プラグインは、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat の実稼働環境におけるサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

7.3.1. 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 を指定します。
    • json または yaml 引数を --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="
        }
      }

7.3.2. 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 フラグは namespace を指定します。省略すると、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