1.2. ソースおよびシンクの接続
2 つ以上のコンポーネント (外部アプリケーションまたはサービス) を接続する場合は Kamelets を使用します。各 Kamelet は基本的に設定プロパティーを持つルートテンプレートです。データの取得元となるコンポーネント (ソース) およびデータの送信先となるコンポーネント (シンク) を知っている必要があります。図 1.1 で説明されているように、ソースおよびシンクコンポーネントを接続するには、Kamelet Binding に Kamelets を追加します。
図 1.1: ソースからシンクへの Kamelet Binding
以下は、Kamelet Binding で Kamelets を使用する手順の概要です。
- Camel K Operator をインストールします。これには、OpenShift プロジェクトのリソースとしての Kamelets のカタログが含まれます。
- Kamelet Binding を作成します。Kamelet Binding 内で接続するサービスまたはアプリケーションを決定します。
- Kamelet Catalog を表示して、使用するソースおよびシンクコンポーネントの Kamelets を検索します。
- Kamelet Binding に追加する各 Kamelet について、設定が必要な設定プロパティーを決定します。
- Kamelet Binding コードで、各 Kamelet への参照を追加し、必要なプロパティーを設定します。
- Kamelet Binding を OpenShift プロジェクトのリソースとして適用します。
Camel K Operator は Kamelet Binding を使用してインテグレーションを生成し、実行します。
1.2.1. Camel K のインストール
OperatorHub から OpenShift クラスターで Red Hat Integration - Camel K Operator をインストールできます。OperatorHub は OpenShift Container Platform Web コンソールから使用でき、クラスター管理者が Operator を検出およびインストールするためのインターフェイスを提供します。
Camel K Operator のインストール後に、コマンドラインですべての Camel K 機能にアクセスする Camel K CLI ツールをインストールできます。
前提条件
適切なアクセスレベルで OpenShift 4.6 (またはそれ以降の) クラスターにアクセスできること。この場合、プロジェクトの作成および Operator のインストールができること。また、CLI ツールをローカルシステムにインストールできること。
注記OpenShift OperatorHub から Camel K をインストールする場合は、プルシークレットを作成する必要はありません。Camel K Operator は OpenShift クラスターレベルの認証を自動的に再利用して、
registry.redhat.io
から Camel K イメージをプルします。-
コマンドラインで OpenShift クラスターと対話できるように OpenShift CLI ツール (
oc
) をインストールしていること。OpenShift CLI のインストール方法の詳細は、Installing the OpenShift CLI を参照してください。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
新しい OpenShift プロジェクトを作成します。
- 左側のナビゲーションメニューで、Home > Project > Create Project とクリックします。
-
プロジェクト名 (例:
my-camel-k-project
) を入力し、Create をクリックします。
- 左側のナビゲーションメニューで、Operators > OperatorHub とクリックします。
-
Filter by keyword テキストボックスに
Camel K
を入力し、Red Hat Integration - Camel K Operator カードをクリックします。 - Operator に関する情報を確認し、続いて Install をクリックします。Operator インストールページが開きます。
以下のサブスクリプション設定を選択します。
- Update Channel > latest
- Installation Mode > A specific namespace on the cluster > my-camel-k-project
Approval Strategy > Automatic
注記ご使用の環境で必要な場合は Installation mode > All namespaces on the cluster および Approval Strategy > Manual 設定も使用できます。
- Install をクリックし、その後 Camel K Operator が使用できるようになるまでしばらく待ちます。
Camel K CLI ツールをダウンロードし、インストールします。
- OpenShift Web コンソールの上部にある Help メニュー (?) から、Command line tools を選択します。
- kamel - Red Hat Integration - Camel K - Command Line Interface セクションまでスクロールダウンします。
- ローカルのオペレーティングシステム (Linux、Mac、Windows) のバイナリーをダウンロードするためのリンクをクリックします。
- CLI をデプロイメントしてシステムパスにインストールします。
Kamel K CLI にアクセスできることを確認するには、コマンドウィンドウを開き、以下のコマンドを入力します。
kamel --help
このコマンドは、Camel K CLI コマンドに関する情報を表示します。
次のステップ
(オプション) Camel K リソース制限の指定
1.2.2. Kamelet カタログの表示
Camel K Operator をインストールする場合、Camel K インテグレーションで使用できる Kamelets のカタログが含まれます。
前提条件
Camel K のインストール で説明されているように、作業用 namespace またはクラスター全体に Camel K Operator がインストールされている。
手順
Camel K Operator でインストールされた Kamelets のリストを表示するには、以下を実行します。
- ターミナルウィンドウで、OpenShift クラスターにログインします。
利用可能な Kamelets のリストを表示する方法は、Camel K Operator のインストール方法 (特定の namespace またはクラスターモード) によって異なります。
Camel K Operator がクラスターモードでインストールされている場合は、以下のコマンドを使用して、利用可能な Kamelets を表示します。
oc get kamelet -n openshift-operators
Camel K Operator が特定の namespace にインストールされている場合は、以下を行います。
Camel K Operator がインストールされているプロジェクトを開きます。
oc project <camelk-project>
たとえば、Camel K Operator が
my-camel-k-project
プロジェクトにインストールされている場合は、以下のようになります。oc project my-camel-k-project
以下のコマンドを実行します。
oc get kamelets
Red Hat がサポートする Kamelets のリストは、Red Hat Integration Release Notes を参照してください。
1.2.2.1. カスタム Kamelet の Kamelet Catalog への追加
要件に適した Kamelet がカタログに表示されない場合は、Camel DSL の開発者は Apache Camel Kamelets Developers Guide (コミュニティードキュメント) の説明どおりにカスタム Kamelet を作成できます。Kamelet は YAML
形式でコード化され、規則により .kamelet.yaml
ファイル拡張子を持ちます。
前提条件
- Camel DSL 開発者がカスタムの Kamelet ファイルを提供している。
- Kamelet 名は、Camel K Operator がインストールされている OpenShift namespace で一意である必要があります。
手順
カスタム Kamelet を OpenShift namespace のリソースとして利用可能にするには、以下を実行します。
-
Kamelet
YAML
ファイル (custom-sink.kamelet.yaml
など) をローカルフォルダーにダウンロードします。 - OpenShift クラスターにログインします。
ターミナルウィンドウで、Camel K Operator がインストールされているプロジェクトを開きます (例:
my-camel-k-project
)。oc project my-camel-k-project
oc apply
コマンドを実行して、カスタム Kamelet をリソースとして namespace に追加します。oc apply -f <custom-kamelet-filename>
たとえば、以下のコマンドを使用して、現在のディレクトリーにある
custom-sink.kamelet.yaml
ファイルを追加します。oc apply -f custom-sink.kamelet.yaml
Kamelet がリソースとして利用できることを確認するには、以下のコマンドを使用して現在の namespace のすべての Kamelets のアルファベット順のリストを表示してから、カスタム Kamelet を検索します。
oc get kamelets
1.2.2.2. Kamelet の設定パラメーターの決定
Kamelet Binding で Kamelet への参照を追加する場合、Kamelet の名前を指定し、Kamelet のパラメーターを設定します。
前提条件
- 作業用 namespace またはクラスター全体に Camel K Operator がインストールされている。
手順
Kamelet の名前およびパラメーターを決定するには、以下を実行します。
- ターミナルウィンドウで、OpenShift クラスターにログインします。
Kamelet の YAML ファイルを開きます。
oc describe kamelets/<kamelet-name>
たとえば、
ftp-source
Kamelet のコードを表示するには、Camel K Operator が現在の namespace にインストールされている場合は、以下のコマンドを使用します。oc describe kamelets/ftp-source
Camel K Operator が cluster-mode でインストールされている場合は、以下のコマンドを使用します。
oc describe -n openshift-operators kamelets/ftp-source
YAML ファイルで、
spec.definition
セクション (JSON-schema 形式で記述される) まで下方向にスクロールし、Kamelet のプロパティーのリストを表示します。セクションの最後の必須フィールドには、Kamelet を参照する際に設定する必要のあるプロパティーがリスト表示されます。たとえば、以下のコードは
ftp-source
Kamelet のspec.definition
セクションからの抜粋です。このセクションは、Kamelet のすべての設定プロパティーの詳細を提供します。この Kamelet に必要なプロパティーは、connectionHost
、connectionPort
、username
、password
、およびdirectoryName
です。spec: definition: title: "FTP Source" description: |- Receive data from an FTP Server. required: - connectionHost - connectionPort - username - password - directoryName type: object properties: connectionHost: title: Connection Host description: Hostname of the FTP server type: string connectionPort: title: Connection Port description: Port of the FTP server type: string default: 21 username: title: Username description: The username to access the FTP server type: string password: title: Password description: The password to access the FTP server type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password directoryName: title: Directory Name description: The starting directory type: string passiveMode: title: Passive Mode description: Sets passive mode connection type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' recursive: title: Recursive description: If a directory, will look for files in all the sub-directories as well. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' idempotent: title: Idempotency description: Skip already processed files. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
1.2.3. Kamelet Binding でのソースおよびシンクコンポーネントの接続
Kamelet Binding 内で、ソースおよびシンクコンポーネントを接続します。
この手順の例では、図 1.2 で示されているように、以下の Kamelets を使用しています。
-
ソース Kamelet の例 は
coffee-source
という名前です。この簡単な Kamelet は、Web サイトカタログからコーヒーのタイプについて無作為に生成されたデータを取得します。コーヒーのデータを取得する頻度 (秒単位) を決定する 1 つのパラメーター (period
:integer
値) があります。デフォルト値 (1000 秒) があるため、このパラメーターは必須ではありません。 -
シンク Kamelet のサンプルの名前は
log-sink
です。これはデータを取得し、それをログファイルに出力します。log-sink
Kamelet は Kamelet Catalog で提供されます。
図 1.2: Kamelet Binding の例
前提条件
- Camel K インテグレーションの作成および編集方法を把握している。
- Camel K のインストール で説明されているように、Red Hat Integration - Camel K Operator が OpenShift namespace またはクラスターにインストールされ、Red Hat Integration Camel K CLI ツールをダウンロードしている。
- Camel K インテグレーションに追加する Kamelets と必要なインスタンスパラメーターを知っている必要があります。
使用する Kamelets は Kamelet Catalog で利用できます。
この例では、
log-sink
Kamelet は Kamelet Catalog で提供されます。この例のソース Kamelet を使用する場合は、coffee-source
code をcoffee-source.kamelet.yaml
という名前のローカルファイルにコピーして保存し、以下のコマンドを実行して Kamelet Catalog に追加します。oc apply -f coffee-source.kamelet.yaml
手順
- OpenShift クラスターにログインします。
Camel K Operator がインストールされている作業プロジェクトを開きます。Camel K Operator を cluster-mode でインストールした場合、クラスター上の任意のプロジェクトで利用できます。
たとえば、
my-camel-k-project
という名前の既存のプロジェクトを開くには、以下のコマンドを実行します。oc project my-camel-k-project
以下のオプションのいずれかを使用して、新しい Kamelet Binding を作成します。
-
kamel bind
コマンドを使用して Kamelet Binding を作成し、実行します (このオプションは、コマンドライン定義の助けとなる単純な Kamelet Binding に役に立ちます) YAML ファイルを作成して Kamelet Binding を定義し、
oc apply
コマンドを使用して実行します (このオプションは Kamelet Binding 設定が複雑である場合に便利です)。kamel bind コマンドを使用した新しい Kamelet Binding の作成
以下の
kamel bind
構文を使用して、ソースおよびシンク Kamelets および設定パラメーターを指定します。kamel bind <kamelet-source> -p “<property>=<property-value>” <kamelet-sink> -p “<property>=<property-value>”
以下に例を示します。
kamel bind coffee-source -p “source.period=5000” log-sink -p "sink.showStreams=true"
Camel K Operator は
KameletBinding
リソースを生成し、対応する Camel K インテグレーションを実行します。YAML ファイルを使用した新しい Kamelet Binding の作成
任意のエディターで、以下の構造で YAML ファイルを作成します。
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: spec: source: sink:
Kamelet Binding の名前を追加します。
この例では、バインディングが
coffee-source
Kamelet をlog-sink
Kamelet に接続するため、名前はcoffee-to-log
になります。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: coffee-to-log spec: source: sink:
ソース Kamelet (例:
coffee-source
) を指定し、Kamelet のパラメーターを設定します。注記:この例では、パラメーターは Kamelet Binding の YAML ファイル内に定義されます。または、Configuring Kamelet instance parameters で説明されているように、プロパティーファイル、ConfigMap、または Secret に Kamelet のパラメーターを設定できます。
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: coffee-to-log spec: source: ref kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: coffee-source properties: period: 5000 sink:
シング Kamelet (例:
log-sink
) を指定し、Kamelet のパラメーターを設定します。log-sink
Kamelet にオプションのshowStreams
パラメーターを使用してメッセージのボディーを表示します。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: coffee-to-log spec: source: ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: coffee-source properties: period: 5000 sink: ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: log-sink properties: showStreams: true
-
YAML ファイルを保存します (例:
coffee-to-log.yaml
)。 KameletBinding をリソースとして OpenShift namespace に追加します (
KameletBinding
)。oc apply -f <kamelet-binding>.yaml
以下に例を示します。
oc apply -f coffee-to-log.yaml
Camel K Operator は、
KameletBinding
リソースを使用して Camel K インテグレーションを生成し、実行します。
-
Kamelet Binding のステータスを表示するには、以下を実行します。
oc get kameletbindings
-
対応するインテグレーションの状態を表示するには、
oc get integrations
出力を表示するには、以下を実行します。
コマンドラインからのログを表示するには、ターミナルのウィンドウを開き、以下のコマンドを入力します。
kamel log <integration-name>
たとえば、インテグレーション名が
coffee-to-log
の場合は、以下のコマンドを使用します。kamel log coffee-to-log
OpenShift Web コンソールからのログを表示するには、以下を実行します。
- Workloads > Pods を選択します。
Camel K インテグレーションの Pod の名前をクリックし、Logs をクリックします。
以下の例のようなコーヒーイベントのリストが表示されるはずです。
INFO [log-sink-E80C5C904418150-0000000000000001] (Camel (camel-1) thread #0 - timer://tick) {"id":7259,"uid":"a4ecb7c2-05b8-4a49-b0d2-d1e8db5bc5e2","blend_name":"Postmodern Symphony","origin":"Huila, Colombia","variety":"Kona","notes":"delicate, chewy, black currant, red apple, star fruit","intensifier":"balanced"}
インテグレーションを停止するには、Kamelet Binding を削除します。
oc delete kameletbindings/<kameletbinding-name>
以下に例を示します。
oc delete kameletbindings/coffee-to-log
次のステップ
任意で以下を行います。
- Adding an operation to a Kamelet Binding で説明されているように、アクション Kamelets を中間ステップとして追加します。
- Adding an error handler policy to a Kamelet Binding で説明されているように、Kamelet Binding にエラー処理を追加します。
1.2.4. Kamelet インスタンスのパラメーターの設定
Kamelet を参照する場合は、Kamelet のインスタンスパラメーターを定義する以下のオプションを使用できます。
Kamelet URI を指定する Kamelet Binding に直接以下の例では、Telegram BotFather が提供するボット承認トークンは
123456
です。from("kamelet:telegram-source?authorizationToken=123456")
以下の形式を使用して、Kamelet プロパティーをグローバルに設定します (したがって、URI の値を指定する必要はありません)。
"camel.kamelet.<kamelet-name>.<property-name>=<value>”
Camel K を使用したインテグレーションの開発および管理 の Camel K インテグレーションの設定 の章で説明されているように、以下の方法で Kamelet パラメーターを設定できます。
- プロパティーとしての定義
- プロパティーファイルでの定義
- OpenShift ConfigMap またはシークレットでの定義
関連項目
1.2.5. イベントのチャネルへの接続
Kamelets の最も一般的なユースケースは、Kamelet Binding を使用して、Kafka トピックまたは Knative 宛先 (チャネルまたはブローカー) のイベントチャネルに接続することです。これを実行する利点は、データソースとシンクが独立しており、お互いに認識しないということです。このように切り離することで、ビジネスシナリオのコンポーネントを個別に開発し、管理できます。ビジネスシナリオの一部として複数のデータシンクおよびソースがある場合、さまざまなコンポーネントを分離することがより重要です。たとえば、イベントシンクをシャットダウンする必要がある場合、イベントソースは影響を受けません。さらに、他のシンクが同じソースを使用する場合、それらは影響を受けません。
図 1.3 は、ソースおよびシンク Kamelets をイベントチャネルに接続するフローを示しています。
図 1.3: ソースおよびシンク Kamelets のイベントチャネルへの接続
Apache Kafka の stream-processing フレームワークを使用している場合、Kafka トピックへの接続方法に関する詳細は、Kamelets を使用した Kafka への接続 を参照してください。
Knative サーバーレスフレームワークを使用する場合、Knative 宛先 (チャネルまたはブローカー) への接続方法に関する詳細は、Kamelets を使用した Knative への接続 を参照してください。
1.2.6. 明示的な Camel URI への接続
Kamelet が明示的な Camel URI との間でイベントを送受信する Kamelet Binding を作成できます。通常、ソース Kamelet をイベントを受信できる URI にバインドします (つまり、URI を Kamelet Binding のシンクとして指定します)。イベントを受信する Camel URI の例は HTTP または HTTPS エンドポイントです。
また、Mamelet Binding のソースとして URI を指定することも可能ですが、一般的ではありません。イベントを送信する Camel URI の例は、タイマー、メール、または FTP エンドポイントです。
Kamelet を Camel URI に接続するには、Kamelet Binding でのソースおよびシンクコンポーネントの接続 の手順に従い、Kamelet ではなく sink.uri
フィールドで明示的な Camel URI を指定します。
以下の例では、シンクの URI は架空の URI (https://mycompany.com/event-service) です。
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
name: coffee-to-event-service
spec:
source:
ref:
kind: Kamelet
apiVersion: camel.apache.org/v1alpha1
name: coffee-source
properties:
period: 5000
sink:
uri: https://mycompany.com/event-service