10.4. トリガーの使用

チャネルまたはブローカーに送信されたすべてのイベントは、デフォルトでそのチャネルまたはブローカーのすべてのサブスクライバーに送信されます。

トリガーを使用すると、チャネルまたはブローカーからイベントをフィルターできるため、サブスクライバーは定義された基準に基づくイベントのサブセットのみを受け取ることができます。

Knative CLI は、トリガーの作成および管理に使用できる kn trigger コマンドのセットを提供します。

10.4.1. 前提条件

トリガーを使用する前に、以下が必要になります。

  • Knative Eventing および kn がインストールされている。
  • default ブローカーまたは作成したブローカーのいずれかの利用可能なブローカー。

    default ブローカーは、「Knative Eventing でのブローカーの使用」の説明に従うか、またはトリガーの作成時に --inject-broker フラグを使用して作成できます。このフラグの使用方法については、以下の手順で説明します。

  • Knative サービスなどの利用可能なイベントコンシューマー。

10.4.2. kn を使用したトリガーの作成

手順

  • トリガーを作成します。

    $ kn trigger create <trigger_name> --broker <broker_name> --filter <key=value> --sink <sink_name>

    トリガーを作成し、またブローカー挿入を使用して default ブローカーを作成するには、以下のコマンドを入力します。

    $ kn trigger create <TRIGGER-NAME> --inject-broker --filter <KEY=VALUE> --sink <SINK>

トリガー YAML の例:

apiVersion: eventing.knative.dev/v1alpha1
kind: Trigger
metadata:
  name: trigger-example 1
spec:
 broker: default 2
 subscriber:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: my-service 3

1
トリガーの名前。
2
イベントのフィルターに使用されるブローカーの名前。ブローカーが指定されていない場合、トリガーは default ブローカーの使用に戻ります。
3
フィルターされたイベントを使用するサービスの名前。

10.4.3. kn を使用したトリガーの一覧表示

kn trigger list コマンドは利用可能なトリガーの一覧を出力します。

手順

  1. 利用可能なトリガーの一覧を出力します。

    $ kn trigger list

    出力例

    NAME    BROKER    SINK           AGE   CONDITIONS   READY   REASON
    email   default   svc:edisplay   4s    5 OK / 5     True
    ping    default   svc:edisplay   32s   5 OK / 5     True

10.4.4. JSON 形式の kn を使用したトリガーの一覧表示

手順

  1. JSON 形式でトリガーの一覧を出力します。

    $ kn trigger list -o json

10.4.5. kn を使用したトリガーの記述

kn trigger describe コマンドは、トリガーについての情報を出力します。

手順

  • コマンドを入力します。

    $ kn trigger describe <trigger_name>

    出力例

    Name:         ping
    Namespace:    default
    Labels:       eventing.knative.dev/broker=default
    Annotations:  eventing.knative.dev/creator=kube:admin, eventing.knative.dev/lastModifier=kube:admin
    Age:          2m
    Broker:       default
    Filter:
      type:       dev.knative.event
    
    Sink:
      Name:       edisplay
      Namespace:  default
      Resource:   Service (serving.knative.dev/v1)
    
    Conditions:
      OK TYPE                  AGE REASON
      ++ Ready                  2m
      ++ BrokerReady            2m
      ++ DependencyReady        2m
      ++ Subscribed             2m
      ++ SubscriberResolved     2m

10.4.6. kn を使用したトリガーの削除

手順

  • トリガーを削除します。
$ kn trigger delete <trigger_name>

10.4.7. kn を使用したトリガーの更新

特定のフラグを指定して kn trigger update コマンドを使用して、トリガーの属性を更新できます。

  1. トリガーを、受信イベントに一致するイベント属性をフィルターするように更新できます (例: type=knative.dev.event)。

    $ kn trigger update <trigger_name> --filter type=knative.dev.event
  2. キー type でフィルター属性を削除します。

    $ kn trigger update mytrigger --filter type-
  3. トリガーのシンクを更新し、event-display という名前のサービスを使用できるようにします。

    $ kn trigger update <trigger_name> --sink svc:event-display

10.4.8. トリガーを使用したイベントのフィルター

以下のトリガーの例では、type: dev.knative.samples.helloworld 属性のあるイベントのみがイベントシンクに到達します。

$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink svc:<service_name>

複数の属性を使用してイベントをフィルターすることもできます。以下の例は、type、source、および extension 属性を使用してイベントをフィルターする方法を示しています。

$ kn trigger create <trigger_name> --broker <broker_name> --sink svc:<service_name> \
--filter type=dev.knative.samples.helloworld \
--filter source=dev.knative.samples/helloworldsource \
--filter myextension=my-extension-value