4.3. ブローカーの作成
Knative は、デフォルトのチャネルベースのブローカー実装を提供します。このチャネルベースのブローカーは、開発およびテストの目的で使用できますが、実稼働環境での適切なイベント配信の保証は提供しません。
クラスター管理者がデフォルトのブローカータイプとして Apache Kafka を使用するように OpenShift サーバーレスデプロイメントを設定している場合は、デフォルト設定を使用してブローカーを作成すると、Apache Kafka の Knative ブローカーが作成されます。
OpenShift Serverless デプロイメントが Apache Kafka の Kafka ブローカーをデフォルトのブローカータイプとして使用するように設定されていない場合は、以下の手順でデフォルト設定を使用すると、チャネルベースのブローカーが作成されます。
4.3.1. Knative CLI を使用したブローカーの作成
ブローカーはトリガーと組み合わせて、イベントをイベントソースからイベントシンクに配信できます。ブローカーを作成するために Knative (kn
) CLI を使用すると、YAML ファイルを直接修正するよりも合理的で直感的なユーザーインターフェイスが得られます。kn broker create
コマンドを使用して、ブローカーを作成できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
Knative (
kn
) CLI がインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
ブローカーを作成します。
$ kn broker create <broker_name>
検証
kn
コマンドを使用して、既存のブローカーを一覧表示します。$ kn broker list
出力例
NAME URL AGE CONDITIONS READY REASON default http://broker-ingress.knative-eventing.svc.cluster.local/test/default 45s 5 OK / 5 True
オプション: OpenShift Container Platform Web コンソールを使用している場合は、Developer パースペクティブの Topology ビューに移動し、ブローカーが存在することを確認できます。
4.3.2. トリガーのアノテーションによるブローカーの作成
ブローカーはトリガーと組み合わせて、イベントをイベントソースからイベントシンクに配信できます。eventing.knative.dev/injection: enabled
アノテーションを Trigger
オブジェクトに追加してブローカーを作成できます。
knative-eventing-injection: enabled
アノテーションを使用してブローカーを作成する場合は、クラスター管理者パーミッションがなければこのブローカーを削除することができません。クラスター管理者が最初にこのアノテーションを削除せずにブローカーを削除すると、削除後にブローカーが再び作成されます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
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>
- 1
- トリガーがイベントを送信するイベントシンクまたは サブスクライバー の詳細を指定します。
Trigger
YAML ファイルを適用します。$ oc apply -f <filename>
検証
oc
CLI を使用してブローカーが正常に作成されていることを確認するか、または Web コンソールの Topology ビューでこれを確認できます。
以下の
oc
コマンドを入力してブローカーを取得します。$ oc -n <namespace> get broker default
出力例
NAME READY REASON URL AGE default True http://broker-ingress.knative-eventing.svc.cluster.local/test/default 3m56s
オプション: OpenShift Container Platform Web コンソールを使用している場合は、Developer パースペクティブの Topology ビューに移動し、ブローカーが存在することを確認できます。
4.3.3. namespace へのラベル付けによるブローカーの作成
ブローカーはトリガーと組み合わせて、イベントをイベントソースからイベントシンクに配信できます。所有しているか、または書き込みパーミッションのある namespace にラベルを付けて default
ブローカーを自動的に作成できます。
この方法を使用して作成されたブローカーは、ラベルを削除すると削除されません。これらは手動で削除する必要があります。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- Red Hat OpenShift Service on AWS または OpenShift Dedicated を使用している場合は、クラスターまたは Dedicated 管理者権限が割り当てられている。
手順
eventing.knative.dev/injection=enabled
で namespace にラベルを付ける。$ oc label namespace <namespace> eventing.knative.dev/injection=enabled
検証
oc
CLI を使用してブローカーが正常に作成されていることを確認するか、または Web コンソールの Topology ビューでこれを確認できます。
oc
コマンドを使用してブローカーを取得します。$ oc -n <namespace> get broker <broker_name>
コマンドの例
$ oc -n default get broker default
出力例
NAME READY REASON URL AGE default True http://broker-ingress.knative-eventing.svc.cluster.local/test/default 3m56s
オプション: OpenShift Container Platform Web コンソールを使用している場合は、Developer パースペクティブの Topology ビューに移動し、ブローカーが存在することを確認できます。
4.3.4. 挿入 (injection) によって作成されたブローカーの削除
挿入によりブローカーを作成し、後でそれを削除する必要がある場合は、手動で削除する必要があります。namespace ラベルまたはトリガーアノテーションを使用して作成されたブローカーは、ラベルまたはアノテーションを削除した場合に永続的に削除されません。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
eventing.knative.dev/injection=enabled
ラベルを namespace から削除します。$ oc label namespace <namespace> eventing.knative.dev/injection-
アノテーションを削除すると、Knative では削除後にブローカーを再作成できなくなります。
選択された namespace からブローカーを削除します。
$ oc -n <namespace> delete broker <broker_name>
検証
oc
コマンドを使用してブローカーを取得します。$ oc -n <namespace> get broker <broker_name>
コマンドの例
$ oc -n default get broker default
出力例
No resources found. Error from server (NotFound): brokers.eventing.knative.dev "default" not found
4.3.5. Web コンソールを使用してブローカーを作成する
Knative Eventing がクラスターにインストールされた後、Web コンソールを使用してブローカーを作成できます。OpenShift Container Platform Web コンソールを使用すると、ブローカーを作成するための合理的で直感的なユーザーインターフェイスが提供されます。
前提条件
- OpenShift Container Platform Web コンソールにログインしている。
- OpenShift Serverless Operator、Knative Serving、および Knative Eventing がクラスターにインストールされている。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
-
Developer パースペクティブで、+Add
Broker に移動します。Broker ページが表示されます。 -
オプション:ブローカーの Name を更新します。名前を更新しないと、生成されたブローカーの名前は
default
になります。 - Create をクリックします。
検証
トポロジー ページでブローカーコンポーネントを表示することにより、ブローカーが作成されたことを確認できます。
- Developer パースペクティブで、Topology に移動します。
mt-broker-ingress
、mt-broker-filter
、およびmt-broker-controller
コンポーネントを表示します。
4.3.6. Administrator パースペクティブを使用したブローカーの作成
ブローカーはトリガーと組み合わせて、イベントをイベントソースからイベントシンクに配信できます。イベントは、HTTP POST
リクエストとしてイベントソースからブローカーに送信されます。イベントがブローカーに送信された後に、それらはトリガーを使用して CloudEvent 属性 でフィルターされ、HTTP POST
リクエストとしてイベントシンクに送信できます。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
- Web コンソールにログインしており、Administrator パースペクティブを使用している。
- OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。
手順
-
OpenShift Container Platform Web コンソールの Administrator パースペクティブで、 Serverless
Eventing に移動します。 - Create 一覧で、Broker を選択します。Create Broker ページに移動します。
- オプション: ブローカーの YAML 設定を変更します。
- Create をクリックします。
4.3.7. 次のステップ
- イベントがイベントシンクに配信されなかった場合に適用されるイベント配信パラメーターを設定します。イベント配信パラメーターの設定例 を参照してください。