5.14. トリガー
ブローカーはトリガーと組み合わせて、イベントをイベントソースからイベントシンクに配信できます。イベントは、HTTP POST
リクエストとしてイベントソースからブローカーに送信されます。イベントがブローカーに送信された後に、それらはトリガーを使用して CloudEvent 属性 でフィルターされ、HTTP POST
リクエストとしてイベントシンクに送信できます。
Kafka ブローカーを使用している場合は、トリガーからイベントシンクへのイベントの配信順序を設定できます。トリガーのイベント配信順序の設定 を参照してください。
5.14.1. Web コンソールを使用したトリガーの作成
OpenShift Container Platform Web コンソールを使用すると、トリガーを作成するための合理的で直感的なユーザーインターフェイスが提供されます。Knative Eventing がクラスターにインストールされ、ブローカーが作成されると、Web コンソールを使用してトリガーを作成できます。
前提条件
- OpenShift Serverless Operator、Knative Serving、および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
- Web コンソールにログインしている。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- トリガーに接続するために、ブローカーおよび Knative サービスまたは他のイベントシンクを作成している。
手順
- Developer パースペクティブで、Topology ページに移動します。
- トリガーを作成するブローカーにカーソルを合わせ、矢印をドラッグします。Add Trigger オプションが表示されます。
- Add Trigger を クリックします。
- Subscriber 一覧でシンクを選択します。
- Add をクリックします。
検証
- サブスクリプションの作成後に、これを Topology ページで表示できます。ここでは、ブローカーをイベントシンクに接続する線として表されます。
トリガーの削除
- Developer パースペクティブで、Topology ページに移動します。
- 削除するトリガーをクリックします。
- Actions コンテキストメニューで、Delete Trigger を選択します。
5.14.2. Knative CLI を使用したトリガーの作成
トリガーを作成するために Knative (kn
) CLI を使用すると、YAML ファイルを直接修正するよりも合理的で直感的なユーザーインターフェイスが得られます。kn trigger create
コマンドを使用して、トリガーを作成できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
トリガーを作成します。
$ 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_name>
デフォルトで、トリガーはブローカーに送信されたすべてのイベントを、そのブローカーにサブスクライブされるシンクに転送します。トリガーの
--filter
属性を使用すると、ブローカーからイベントをフィルターできるため、サブスクライバーは定義された基準に基づくイベントのサブセットのみを受け取ることができます。
5.14.3. Knative CLI の使用によるトリガーの一覧表示
Knative (kn
) CLI を使用してトリガーを一覧表示すると、合理的で直感的なユーザーインターフェイスが提供されます。kn trigger list
コマンドを使用して、クラスター内の既存トリガーを一覧表示できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。
手順
利用可能なトリガーの一覧を出力します。
$ kn trigger list
出力例
NAME BROKER SINK AGE CONDITIONS READY REASON email default ksvc:edisplay 4s 5 OK / 5 True ping default ksvc:edisplay 32s 5 OK / 5 True
オプション: JSON 形式でトリガーの一覧を出力します。
$ kn trigger list -o json
5.14.4. Knative CLI を使用したトリガーの記述
Knative (kn
) CLI を使用してトリガーを記述すると、合理的で直感的なユーザーインターフェイスが提供されます。kn trigger describe
コマンドを使用し、Knative CLI を使用してクラスター内の既存トリガーに関する情報を出力できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。 - トリガーを作成している。
手順
コマンドを入力します。
$ 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
5.14.5. Knative CLI を使用したトリガーでのイベントのフィルター
Knative (kn
) CLI を使用してイベントをフィルターリングすると、合理的で直感的なユーザーインターフェイスが提供されます。kn trigger create
コマンドを適切なフラグとともに使用し、トリガーを使用してイベントをフィルターリングできます。
以下のトリガーの例では、type: dev.knative.samples.helloworld
属性のイベントのみがイベントシンクに送付されます。
$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
複数の属性を使用してイベントをフィルターすることもできます。以下の例は、type、source、および extension 属性を使用してイベントをフィルターする方法を示しています。
$ kn trigger create <trigger_name> --broker <broker_name> --sink ksvc:<service_name> \ --filter type=dev.knative.samples.helloworld \ --filter source=dev.knative.samples/helloworldsource \ --filter myextension=my-extension-value
5.14.6. Knative CLI を使用したトリガーの更新
Knative (kn
) CLI を使用してトリガーを更新すると、合理的で直感的なユーザーインターフェイスが提供されます。特定のフラグを指定して kn trigger update
コマンドを使用して、トリガーの属性を更新できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
トリガーを更新します。
$ kn trigger update <trigger_name> --filter <key=value> --sink <sink_name> [flags]
トリガーを、受信イベントに一致するイベント属性をフィルターするように更新できます。たとえば、
type
属性を使用します。$ kn trigger update <trigger_name> --filter type=knative.dev.event
トリガーからフィルター属性を削除できます。たとえば、キー
type
を使用してフィルター属性を削除できます。$ kn trigger update <trigger_name> --filter type-
--sink
パラメーターを使用して、トリガーのイベントシンクを変更できます。$ kn trigger update <trigger_name> --sink ksvc:my-event-sink
5.14.7. Knative CLI を使用したトリガーの削除
Knative (kn
) CLI を使用してトリガーを削除すると、合理的で直感的なユーザーインターフェイスが提供されます。kn trigger delete
コマンドを使用してトリガーを削除できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
トリガーを削除します。
$ kn trigger delete <trigger_name>
検証
既存のトリガーを一覧表示します。
$ kn trigger list
トリガーが存在しないことを確認します。
出力例
No triggers found.
5.14.8. トリガーのイベント配信順序の設定
Kafka ブローカーを使用している場合は、トリガーからイベントシンクへのイベントの配信順序を設定できます。
前提条件
- OpenShift Serverless Operator、Knative Eventing、および Knative Kafka が OpenShift Container Platform クラスターにインストールされている。
- Kafka ブローカーがクラスターで使用可能であり、Kafka ブローカーが作成されている。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
-
OpenShift (
oc
) CLI がインストールされている。
手順
Trigger
オブジェクトを作成または変更し、kafka.eventing.knative.dev/delivery.order
アノテーションを設定します。apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: <trigger_name> annotations: kafka.eventing.knative.dev/delivery.order: ordered ...
サポートされているコンシューマー配信保証は次のとおりです。
unordered
- 順序付けられていないコンシューマーは、適切なオフセット管理を維持しながら、メッセージを順序付けずに配信するノンブロッキングコンシューマーです。
ordered
順序付きコンシューマーは、CloudEvent サブスクライバーからの正常な応答を待ってから、パーティションの次のメッセージを配信する、パーティションごとのブロックコンシューマーです。
デフォルトの順序保証は
unordered
です。
Trigger
オブジェクトを適用します。$ oc apply -f <filename>
5.14.9. 次のステップ
- イベントがイベントシンクに配信されなかった場合に適用されるイベント配信パラメーターを設定します。イベント配信パラメーターの設定例 を参照してください。