3.4. Kamelet Binding での Knative 宛先のデータシンクへの接続
Knative 宛先をデータシンクに接続するには、図 3.3 にあるように Kamelet Binding を作成します。
図 3.3 Knative 宛先のデータシンクへの接続
Knative 宛先は Knative チャネルまたは Knative ブローカーになります。
データをチャネルから送信する場合、チャネルには 1 つのイベントタイプのみがあります。Kamelet Binding でチャネルのプロパティー値を指定する必要はありません。
データをブローカーから送信する場合、ブローカーが複数のイベントタイプを処理できるため、Kamelet Binding でブローカーを参照する場合は、タイププロパティーの値を指定する必要があります。
前提条件
イベントの受信元となる Knative チャネルのタイプまたはブローカーの名前を知っている必要があります。ブローカーでは、受信するイベントのタイプも知っている必要があります。
この手順の例では、mychannel という名前の InMemoryChannel チャネルまたは mybroker という名前のブローカーおよびコーヒーイベント (type プロパティー) を使用します。これらは、Kamelet Binding でのデータソースの Knative チャネルへの接続 でコーヒーソースからイベントを受信するのに使用した宛先の例と同じです。
Camel インテグレーションに追加する Kamelet と必要なインスタンスパラメーターを把握している。
この手順の Kamelet の例は、Kamelet Catalog で提供される
log-sink
Kamelet であり、これはテストおよびデバッグに役立ちます。データのメッセージボディーを表示するために指定されたshowStreams
パラメーター。
手順
Knative チャネルをデータシンクに接続するには、Kamelet Binding を作成します。
任意のエディターで、以下の基本構造で YAML ファイルを作成します。
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: spec: source: sink:
Kamelet Binding の名前を追加します。この例では、バインディングが Knative 宛先を
log-sink
Kamelet に接続するため、名前はknative-to-log
になります。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: sink:
Kamelet Binding のソースでは、Knative チャネルまたはブローカーおよび必要なパラメーターを指定します。
以下の例では、Knative チャネルをソースとして指定します。
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: ref: apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel name: mychannel sink:
この例では、Knative ブローカーをソースとして指定します。
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: ref: kind: Broker apiVersion: eventing.knative.dev/v1 name: default properties: type: coffee sink:
Kamelet Binding のシンクでは、データコンシューマー Kamelet (例:
log-sink
Kamelet) を指定し、Kamelet のパラメーターを設定します。以下に例を示します。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: ref: apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel name: mychannel sink: ref: apiVersion: camel.apache.org/v1alpha1 kind: Kamelet name: log-sink properties: showStreams: true
-
YAML ファイルを保存します (例:
knative-to-log.yaml
)。 - OpenShift プロジェクトにログインします。
Kamelet Binding をリソースとして OpenShift namespace に追加します (
oc apply -f <kamelet binding filename>
)。以下に例を示します。
oc apply -f knative-to-log.yaml
Camel K Operator は、
KameletBinding
リソースを使用して Camel K インテグレーションを生成し、実行します。ビルドに数分かかる場合があります。KameletBinding
のステータスを表示するには、以下を実行します。oc get kameletbindings
インテグレーションの状態を表示するには、以下を実行します。
oc get integrations
インテグレーションのログを表示するには、以下を実行します。
kamel logs <integration> -n <project>
以下に例を示します。
kamel logs knative-to-log -n my-camel-knative
この出力では、以下の例のようにコーヒーイベントが表示されるはずです。
[1] INFO [sink] (vert.x-worker-thread-1) {"id":254,"uid":"8e180ef7-8924-4fc7-ab81-d6058618cc42","blend_name":"Good-morning Star","origin":"Santander, Colombia","variety":"Kaffa","notes":"delicate, creamy, lemongrass, granola, soil","intensifier":"sharp"} [1] INFO [sink] (vert.x-worker-thread-2) {"id":8169,"uid":"3733c3a5-4ad9-43a3-9acc-d4cd43de6f3d","blend_name":"Caf? Java","origin":"Nayarit, Mexico","variety":"Red Bourbon","notes":"unbalanced, full, granola, bittersweet chocolate, nougat","intensifier":"delicate"}
実行中のインテグレーションを停止するには、関連付けられた Kamelet Binding リソースを削除します。
oc delete kameletbindings/<kameletbinding-name>
以下に例を示します。
oc delete kameletbindings/knative-to-log