第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 宛先に接続するフローを示します。
![Data flow with kamelets and a Knative channel](https://access.redhat.com/webassets/avalon/d/Red_Hat_Integration-2021.Q3-Integrating_Applications_with_Kamelets-ja-JP/images/7108c0cc98341e900732732864e32b6f/knativeflow-generic.png)
図 3.1: kamelets と Knative チャネルによるデータフロー
以下は、kamelets および kamelet バインディングを使用してアプリケーションやサービスを Knative チャネルに接続するための基本的な手順の概要です。
Knative を設定します。
- Camel K および OpenShift Serverless Operator をインストールして、OpenShift クラスターを準備します。
- 必要な Knative Serving および Eventing コンポーネントをインストールします。
- Knative チャネルまたはブローカーを作成します。
- Knative チャネルまたはブローカーに接続するサービスまたはアプリケーションを決定します。
- Kamelet Catalog を表示し、インテグレーションに追加するソースおよびシンクコンポーネントの kamelets を見つけます。使用する各 kamelet に必要な設定パラメーターも決定します。
kamelet バインディングを作成します。
- ソース kamelet を Knative チャネル (またはブローカー) に接続する kamelet バインディングを作成します。
- Knative チャネル (またはブローカー) をシンク kamelet に接続する kamelet バインディングを作成します。
- オプションとして、kamelet バインディング内の中間ステップとして 1 つまたは複数のアクション kamelets を追加して、Knative チャネル (またはブローカー) およびデータソース/シンク間で渡されるデータを操作します。
- 必要に応じて、kamelet バインディング内でエラーを処理する方法を定義します。
- kamelet バインディングをリソースとしてプロジェクトに適用します。
Camel K Operator は、kamelet バインディングごとに個別の Camel インテグレーションを生成します。
kamelet バインディングを Knative チャネルまたはブローカーをイベントのソースとして使用するように設定する場合、Camel K Operator は対応するインテグレーションを Knative Serving サービスとして実現し、Knative が提供する自動スケーリング機能を活用します。