5.2. トリガーの作成
Knative Eventing のトリガーにより、要件に基づいてイベントをブローカーから特定のサブスクライバーにルーティングできます。Trigger を定義することで、イベントプロデューサーを動的にコンシューマーに接続し、イベントが正しい宛先に配信されるようにできます。このセクションでは、トリガーを作成し、そのフィルターを設定し、その機能を検証する手順を説明します。単純なルーティングのニーズまたは複雑なイベント駆動型ワークフローのいずれを使用している場合か。
以下の例は、Triggers の一般的な設定を示しています。これは、イベントを Knative サービスまたはカスタムエンドポイントにルーティングする方法を示しています。
イベントを Knative Serving サービスにルーティングする例
以下の Trigger は、すべてのイベントを default ブローカーから my-service
という名前の Knative Serving サービスにルーティングします。
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: default filter: attributes: type: dev.knative.foo.bar subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: my-service
デバッグの目的では、filter
属性なしですべてのイベントをルーティングすることを推奨します。これにより、すべての受信イベントを監視および分析し、問題を特定したり、特定のフィルターを適用する前にブローカーを介してイベントのフローを検証したりできます。フィルタリングの詳細は、高度なトリガーフィルター を参照してください。
このトリガーを適用するには、設定をファイル(例: trigger.yaml
)に保存して、以下のコマンドを実行します。
$ oc apply -f trigger.yaml
イベントをカスタムパスにルーティングする例
このトリガーは、すべてのイベントを default ブローカーから my-service
という名前のサービスのカスタムパス /my-custom-path
にルーティングします。
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: default subscriber: ref: apiVersion: v1 kind: Service name: my-service uri: /my-custom-path
設定を custom-path-trigger.yaml
などのファイルに保存し、以下のコマンドを実行します。
$ oc apply -f custom-path-trigger.yaml
5.2.1. Administrator パースペクティブを使用したトリガーの作成
OpenShift Container Platform Web コンソールを使用すると、トリガーを作成するための合理的で直感的なユーザーインターフェイスが提供されます。Knative Eventing がクラスターにインストールされ、ブローカーが作成されると、Web コンソールを使用してトリガーを作成できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
- Web コンソールにログインしており、Administrator パースペクティブを使用している。
- OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。
- Knative ブローカーを作成している。
- サブスクライバーとして使用する Knative サービスを作成している。
手順
-
OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Serverless
Eventing に移動します。 -
Broker タブで、トリガーを追加するブローカーの Options メニュー
を選択します。
- リストで Add Trigger をクリックします。
- Add Trigger のダイアログボックスで、Trigger の Subscriber を選択します。サブスクライバーは、ブローカーからイベントを受信する Knative サービスです。
- Add をクリックします。
5.2.2. 開発者パースペクティブを使用したトリガーの作成
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.2.3. Knative CLI を使用したトリガーの作成
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
属性を使用すると、ブローカーからイベントをフィルターできるため、サブスクライバーは定義された基準に基づくイベントのサブセットのみを受け取ることができます。