第3章 Kamelets を使用した Knative への接続

Kamelets を Knative 宛先 (チャネルまたはブローカー) に接続することができます。Red Hat OpenShift Serverless はオープンソースの Knative プロジェクト をベースとし、エンタープライズレベルのサーバーレスプラットフォームを有効にすることで、ハイブリッドおよびマルチクラウド環境における移植性と一貫性をもたらします。OpenShift Serverless には、Knative Eventing および Knative Serving コンポーネントのサポートが含まれます。

Red Hat OpenShift Serverless、Knative Eventing、および Knative Serving では、サーバーレスアプリケーションと共に イベント駆動型のアーキテクチャー を使用し、パブリッシュサブスクライブまたはイベントストリーミングモデルを使用してイベントプロデューサーとコンシューマー間の関係を切り離すことができます。Knative Eventing は、標準の HTTP POST リクエストを使用してイベントプロデューサーとコンシューマー間でイベントを送受信します。これらのイベントは CloudEvents 仕様 に準拠しており、すべてのプログラミング言語でのイベントの作成、解析、および送受信を可能にします。

Kamelets を使用して CloudEvents を Knative に送信し、Knative からイベントコンシューマーに送信できます。Kamelets はメッセージを CloudEvents に変換し、それらを使用して CloudEvents 内のデータの事前処理および後処理を適用できます。

3.1. Kamelets を使用した Knative への接続の概要

Knative stream-processing フレームワークを使用する場合は、Kamelets を使用してサービスおよびアプリケーションを Knative 宛先 (チャネルまたはブローカー) に接続することができます。

図 3.1 は、ソースとシンク Kamelets を Knative 宛先に接続するフローを示します。

Kamelets と Knative デスティネーションによるデータフロー

図 3.1: Kamelets と Knative チャネルによるデータフロー

以下は、Kamelets および Kamelet Bindingsを使用してアプリケーションやサービスを Knative 宛先に接続するための基本的な手順の概要です。

  1. Knative を設定します。

    1. Camel K および OpenShift Serverless Operator をインストールして、OpenShift クラスターを準備します。
    2. 必要な Knative Serving および Eventing コンポーネントをインストールします。
    3. Knative チャネルまたはブローカーを作成します。
  2. Knative チャネルまたはブローカーに接続するサービスまたはアプリケーションを決定します。
  3. Kamelet Catalog を表示して、インテグレーションに追加するソースおよびシンクコンポーネントの Kamelets を検索します。また、使用する各 Kamelet に必要な設定パラメーターを決定します。
  4. Kamelet Bindingを作成します。

    • ソース Kamelet を Knative チャネル (またはブローカー) に接続する Kamelet Bindingを作成します。
    • Knative チャネル (またはブローカー) をシンク Kamelet に接続する Kamelet Bindingを作成します。
  5. オプションとして、Kamelet Binding内の中間ステップとして 1 つまたは複数のアクション Kamelets を追加して、Knative チャネル (またはブローカー) およびデータソース/シンク間で渡されるデータを操作します。
  6. 必要に応じて、Kamelet Binding内でエラーを処理する方法を定義します。
  7. Kamelet Bindingをリソースとしてプロジェクトに適用します。

Camel K Operator は、Kamelet Bindingごとに個別の Camel インテグレーションを生成します。

Kamelet Bindingを Knative チャネルまたはブローカーをイベントのソースとして使用するように設定する場合、Camel K Operator は対応するインテグレーションを Knative Serving サービスとして実現し、Knative が提供する自動スケーリング機能を活用します。