10.2. チャネルの使用
イベントソースから Knative Eventing チャネルにイベントをシンクすることができます。チャネルは、単一のイベント転送および永続レイヤーを定義するカスタムリソース (CR) です。イベントがチャネルに送信された後に、これらのイベントはサブスクリプションを使用して複数の Knative サービスに送信できます。
チャネルインスタンスのデフォルト設定は default-ch-webhook
ConfigMap で定義されます。ただし、開発者はサポートされているチャネルオブジェクトをインスタンス化することで、独自のチャネルを直接作成できます。
10.2.1. サポートされているチャネルタイプ
現時点で、OpenShift Serverless は Knative Eventing テクノロジープレビューの一部として InMemoryChannel タイプのチャネルの使用のみをサポートします。
10.2.2. デフォルトの InMemoryChannel 設定の使用
InMemoryChannel は開発での使用のみを目的としているため、実稼働環境では使用できません。
以下は、InMemoryChannel タイプのチャネルの制限です。
- イベントの永続性は利用できません。Pod がダウンすると、その Pod のイベントが失われます。
- InMemoryChannel タイプのチャネルはイベントの順序を実装しないため、チャネルで同時に受信される 2 つのイベントはいずれの順序でもサブスクライバーに配信できます。
-
サブスクライバーがイベントを拒否する場合、再配信は試行されません。代わりに、拒否されたイベントは、シンクが存在する場合は
deadLetterSink
に送信されます。これが存在しない場合にはドロップされます。イベント配信およびチャネルのdeadLetterSink
設定についての詳細は、「 サブスクリプションの使用によるチャネルからシンクへのイベント送信」を参照してください。
Knative Eventing のインストール時に、以下のカスタムリソース定義 (CRD) が自動的に作成されます。
apiVersion: v1 kind: ConfigMap metadata: namespace: knative-eventing name: config-br-default-channel data: channelTemplateSpec: | apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel
クラスターのデフォルト設定を使用したチャネルの作成
汎用 Channel カスタムオブジェクトを作成します。
apiVersion: messaging.knative.dev/v1 kind: Channel metadata: name: example-channel namespace: default
Channel オブジェクトが作成されると、変更用の受付 Webhook はデフォルトのチャネル実装に基づいて Channel オブジェクトの
spec.channelTemplate
プロパティーのセットを追加します。apiVersion: messaging.knative.dev/v1 kind: Channel metadata: name: example-channel namespace: default spec: channelTemplate: apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel
チャネルコントローラーは、その後に spec.channelTemplate
設定に基づいてサポートするチャネルインスタンスを作成します。spec.channelTemplate
プロパティーは作成後に変更できません。それらは、ユーザーではなくデフォルトのチャネルメカニズムで設定されるためです。
このメカニズムが使用される場合、汎用チャネル、および InMemoryChannel タイプのチャネルなど 2 つのオブジェクトが作成されます。
汎用チャネルは、サブスクリプションを InMemoryChannel にコピーするプロキシーとして機能し、サポートする InMemoryChannel タイプのチャネルのステータスを反映するようにそのステータスを設定します。
この例のチャネルはデフォルトの namespace で作成されるため、チャネルはクラスターのデフォルト (InMemoryChannel) を使用します。