第10章 イベントワークフロー


10.1. ブローカーおよびトリガーを使用したイベント配信ワークフロー

ブローカーは トリガー と組み合わせて、イベントを イベントソース からイベントシンクに配信できます。

イベントは、HTTP POST リクエストとしてイベントソースからブローカーに送信されます。

イベントがブローカーに送信された後に、それらはトリガーを使用して CloudEvent 属性 でフィルターされ、HTTP POST リクエストとしてイベントシンクに送信できます。

10.1.1. ブローカーの作成

OpenShift Serverless は、Knative CLI を使用して作成できる default の Knative ブローカーを提供します。また、クラスター管理者の場合は eventing.knative.dev/injection=enabled ラベルを namespace に追加するか、または開発者の場合は eventing.knative.dev/injection: enabled アノテーションをトリガーに追加して、default ブローカーを作成することもできます。

重要

開発者およびクラスター管理者はどちらも挿入 (injection) によってブローカーを追加できますが、クラスター管理者のみがこの方法を使用して作成されたブローカーを永続的に削除できます。

10.1.1.1. Knative CLI を使用したブローカーの作成

前提条件

  • OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
  • kn CLI がインストールされている。

手順

  • default ブローカーを作成します。

    $ kn broker create default
    Copy to Clipboard Toggle word wrap

検証

  1. kn コマンドを使用して、既存のブローカーを一覧表示します。

    $ kn broker list
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      URL                                                                     AGE   CONDITIONS   READY   REASON
    default   http://broker-ingress.knative-eventing.svc.cluster.local/test/default   45s   5 OK / 5     True
    Copy to Clipboard Toggle word wrap

  2. オプション: OpenShift Container Platform Web コンソールを使用している場合、Developer パースペクティブの Topology ビューに移動し、ブローカーが存在することを確認できます。

10.1.1.2. トリガーのアノテーションによるブローカーの作成

eventing.knative.dev/injection: enabled アノテーションを Trigger オブジェクトに追加してブローカーを作成できます。

重要

knative-eventing-injection: enabled アノテーションを使用してブローカーを作成する場合、クラスター管理者パーミッションなしにこのブローカーを削除することはできません。クラスター管理者が最初にこのアノテーションを削除せずにブローカーを削除する場合、ブローカーは削除後に再び作成されます。

前提条件

  • OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。

手順

  1. Trigger オブジェクトを、eventing.knative.dev/injection: enabled アノテーションを持つ .yaml ファイルとして作成します。

    apiVersion: eventing.knative.dev/v1
    kind: Trigger
    metadata:
      annotations:
        eventing.knative.dev/injection: enabled
      name: <trigger-name>
    spec:
      broker: default
      subscriber: 
    1
    
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: <service-name>
    Copy to Clipboard Toggle word wrap
    1
    トリガーがイベントを送信するイベントシンクまたは サブスクライバー の詳細を指定します。
  2. .yaml ファイルを適用します。

    $ oc apply -f <filename>
    Copy to Clipboard Toggle word wrap

検証

oc CLI を使用してブローカーが正常に作成されていることを確認するか、または Web コンソールの Topology ビューでこれを確認できます。

  1. oc コマンドを使用してブローカーを取得します。

    $ oc -n <namespace> get broker default
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      READY     REASON    URL                                                                     AGE
    default   True                http://broker-ingress.knative-eventing.svc.cluster.local/test/default   3m56s
    Copy to Clipboard Toggle word wrap

  2. Web コンソールで Topology ビューに移動し、ブローカーが存在することを確認します。

10.1.1.3. namespace へのラベル付けによるブローカーの作成

クラスター管理者のパーミッションがある場合は、namespace にラベルを付けて default ブローカーを自動的に作成できます。

注記

この方法を使用して作成されたブローカーは、ラベルを削除すると削除されません。これらは手動で削除する必要があります。

前提条件

  • OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
  • OpenShift Container Platform のクラスター管理者パーミッションがある。

手順

  • eventing.knative.dev/injection=enabled で namespace にラベルを付ける。

    $ oc label namespace <namespace> eventing.knative.dev/injection=enabled
    Copy to Clipboard Toggle word wrap

検証

oc CLI を使用してブローカーが正常に作成されていることを確認するか、または Web コンソールの Topology ビューでこれを確認できます。

  1. oc コマンドを使用してブローカーを取得します。

    $ oc -n <namespace> get broker <broker_name>
    Copy to Clipboard Toggle word wrap

    コマンドの例

    $ oc -n default get broker default
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      READY     REASON    URL                                                                     AGE
    default   True                http://broker-ingress.knative-eventing.svc.cluster.local/test/default   3m56s
    Copy to Clipboard Toggle word wrap

  2. Web コンソールで Topology ビューに移動し、ブローカーが存在することを確認します。

10.1.2. ブローカーの管理

kn CLI は、ブローカーの一覧表示、説明、更新、および削除に使用できるコマンドを提供します。クラスター管理者は、挿入 (injection) を使用して作成されたブローカーを永続的に削除することもできます。

10.1.2.1. Knative CLI を使用した既存ブローカーの一覧表示

前提条件

  • OpenShift Serverless Operator、Knative Serving、および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
  • kn CLI がインストールされている。

手順

  • 既存ブローカーの一覧を表示します。

    $ kn broker list
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      URL                                                                     AGE   CONDITIONS   READY   REASON
    default   http://broker-ingress.knative-eventing.svc.cluster.local/test/default   45s   5 OK / 5     True
    Copy to Clipboard Toggle word wrap

10.1.2.2. Knative CLI を使用した既存ブローカーの記述

前提条件

  • OpenShift Serverless Operator、Knative Serving、および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
  • kn CLI がインストールされている。

手順

  • 既存ブローカーを記述します。

    $ kn broker describe <broker_name>
    Copy to Clipboard Toggle word wrap

    デフォルトブローカーを使用したコマンドの例

    $ kn broker describe default
    Copy to Clipboard Toggle word wrap

    出力例

    Name:         default
    Namespace:    default
    Annotations:  eventing.knative.dev/broker.class=MTChannelBasedBroker, eventing.knative.dev/creato ...
    Age:          22s
    
    Address:
      URL:    http://broker-ingress.knative-eventing.svc.cluster.local/default/default
    
    Conditions:
      OK TYPE                   AGE REASON
      ++ Ready                  22s
      ++ Addressable            22s
      ++ FilterReady            22s
      ++ IngressReady           22s
      ++ TriggerChannelReady    22s
    Copy to Clipboard Toggle word wrap

10.1.2.3. 挿入 (injection) によって作成されたブローカーの削除

namespace ラベルまたはトリガーアノテーションを使用して、挿入 (injection) によって作成されたブローカーは、開発者がラベルまたはアノテーションを削除した場合に永続的に削除されません。クラスター管理者のパーミッションを持つユーザーは、これらのブローカーを手動で削除する必要があります。

手順

  1. eventing.knative.dev/injection=enabled ラベルを namespace から削除します。

    $ oc label namespace <namespace> eventing.knative.dev/injection-
    Copy to Clipboard Toggle word wrap

    アノテーションを削除すると、Knative では削除後にブローカーを再作成できなくなります。

  2. 選択された namespace からブローカーを削除します。

    $ oc -n <namespace> delete broker <broker_name>
    Copy to Clipboard Toggle word wrap

検証

  • oc コマンドを使用してブローカーを取得します。

    $ oc -n <namespace> get broker <broker_name>
    Copy to Clipboard Toggle word wrap

    コマンドの例

    $ oc -n default get broker default
    Copy to Clipboard Toggle word wrap

    出力例

    No resources found.
    Error from server (NotFound): brokers.eventing.knative.dev "default" not found
    Copy to Clipboard Toggle word wrap

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

トリガーを使用すると、イベントシンクに配信するためにブローカーからイベントをフィルターできます。

前提条件

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

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

    default ブローカーは、Knative Eventing でのブローカーの使用 の説明に従うか、またはトリガーの作成時に --inject-broker フラグを使用して作成できます。このフラグの使用については、本セクションで説明します。

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

10.1.3.1. Developer パースペクティブを使用したトリガーの作成

ブローカーの作成後は、Web コンソールの Developer パースペクティブでトリガーを作成できます。

前提条件

  • OpenShift Serverless Operator、Knative Serving、および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
  • Web コンソールにログインしている。
  • Developer パースペクティブを使用している。
  • OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
  • トリガーに接続するために、ブローカーおよび Knative サービスまたは他のイベントシンクを作成している。

手順

  1. Developer パースペクティブで、Topology ページに移動します。
  2. トリガーを作成するブローカーにカーソルを合わせ、矢印をドラッグします。Add Trigger オプションが表示されます。

  3. Add Trigger を クリックします。
  4. ドロップダウンリストから、シンクを Subscriber として選択します。
  5. Add をクリックします。

検証

  • サブスクリプションの作成後に、これを Topology ビューでブローカーをサービスに接続する行として表示できます。

10.1.3.2. Developer パースペクティブを使用したトリガーの削除

Web コンソールの Developer パースペクティブでトリガーを削除できます。

前提条件

  • Developer パースペクティブを使用してトリガーを削除するには、Web コンソールにログインしている必要があります。

手順

  1. Developer パースペクティブで、Topology ページに移動します。
  2. 削除するトリガーをクリックします。
  3. Actions コンテキストメニューで、Delete Trigger を選択します。

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

kn trigger create コマンドを使用してトリガーを作成できます。

手順

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

    $ kn trigger create <trigger_name> --broker <broker_name> --filter <key=value> --sink <sink_name>
    Copy to Clipboard Toggle word wrap

    または、トリガーを作成し、ブローカー挿入を使用して default ブローカーを同時に作成できます。

    $ kn trigger create <trigger_name> --inject-broker --filter <key=value> --sink <sink_name>
    Copy to Clipboard Toggle word wrap

    デフォルトで、トリガーはブローカーに送信されたすべてのイベントを、そのブローカーにサブスクライブされるシンクに転送します。トリガーの --filter 属性を使用すると、ブローカーからイベントをフィルターできるため、サブスクライバーは定義された基準に基づくイベントのサブセットのみを受け取ることができます。

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

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

手順

  1. 利用可能なトリガーの一覧を出力するには、以下のコマンドを入力します。

    $ kn trigger list
    Copy to Clipboard Toggle word wrap

    出力例:

    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
    Copy to Clipboard Toggle word wrap

  2. オプション: JSON 形式でトリガーの一覧を出力します。

    $ kn trigger list -o json
    Copy to Clipboard Toggle word wrap
10.1.3.4.1. kn を使用したトリガーの記述

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

手順

  • トリガーについての情報を出力するには、以下のコマンドを入力します。

    $ kn trigger describe <trigger_name>
    Copy to Clipboard Toggle word wrap

    出力例

    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
    Copy to Clipboard Toggle word wrap

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

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

$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
Copy to Clipboard Toggle word wrap

複数の属性を使用してイベントをフィルターすることもできます。以下の例は、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
Copy to Clipboard Toggle word wrap
10.1.3.4.3. kn を使用したトリガーの更新

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

手順

  • トリガーを更新します。

    $ kn trigger update <trigger_name> --filter <key=value> --sink <sink_name> [flags]
    Copy to Clipboard Toggle word wrap
    • トリガーを、受信イベントに一致するイベント属性をフィルターするように更新できます。たとえば、type 属性を使用します。

      $ kn trigger update mytrigger --filter type=knative.dev.event
      Copy to Clipboard Toggle word wrap
    • トリガーからフィルター属性を削除できます。たとえば、キー type を使用してフィルター属性を削除できます。

      $ kn trigger update mytrigger --filter type-
      Copy to Clipboard Toggle word wrap
    • --sink パラメーターを使用して、トリガーのイベントシンクを変更できます。

      $ kn trigger update <trigger_name> --sink ksvc:my-event-sink
      Copy to Clipboard Toggle word wrap
10.1.3.4.4. kn を使用したトリガーの削除

手順

  • トリガーを削除します。

    $ kn trigger delete <trigger_name>
    Copy to Clipboard Toggle word wrap

検証

  1. 既存のトリガーを一覧表示します。

    $ kn trigger list
    Copy to Clipboard Toggle word wrap
  2. トリガーが存在しないことを確認します。

    出力例

    No triggers found.
    Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat