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
10.4.3. kn
を使用したトリガーの一覧表示
kn trigger list
コマンドは利用可能なトリガーの一覧を出力します。
手順
利用可能なトリガーの一覧を出力します。
$ 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
を使用したトリガーの一覧表示
手順
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
コマンドを使用して、トリガーの属性を更新できます。
例
トリガーを、受信イベントに一致するイベント属性をフィルターするように更新できます (例:
type=knative.dev.event
)。$ kn trigger update <trigger_name> --filter type=knative.dev.event
キー
type
でフィルター属性を削除します。$ kn trigger update mytrigger --filter type-
トリガーのシンクを更新し、
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