Red Hat Camel K is deprecated
Red Hat Camel K is deprecated and the End of Life date for this product is June 30, 2025. For help migrating to the current go-to solution, Red Hat build of Apache Camel, see the Migration Guide.6.2. Camel K 機能トレイト
6.2.1. Knative トレイト
Knative トレイトは Knative リソースのアドレスを自動検出し、実行中のインテグレーションに注入します。
完全な Knative 設定は、JSON 形式の CAMEL_KNATIVE_CONFIGURATION に注入されます。その後、Camel Knative コンポーネントは完全な設定を使用してルートを設定します。
このトレイトは、Knative プロファイルがアクティブであるとデフォルトで有効になります。
このトレイトは、Knative プロファイルで利用できます。
6.2.1.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait knative.[key]=[value] --trait knative.[key2]=[value2] integration.java
$ kamel run --trait knative.[key]=[value] --trait knative.[key2]=[value2] integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
| Knative の完全な設定を JSON 形式で注入するために使用されます。 |
|
| インテグレーションルートのソースとして使用されるチャネルの一覧。簡単なチャネル名または完全な Camel URI を含めることができます。 |
|
| インテグレーションルートの宛先として使用されるチャネルの一覧。簡単なチャネル名または完全な Camel URI を含めることができます。 |
|
| インテグレーションルートのソースとして使用されるチャネルの一覧。 |
|
| インテグレーションルートの宛先として使用されるエンドポイントの一覧。簡単なエンドポイント名または完全な Camel URI を含めることができます。 |
|
| インテグレーションがサブスクライブされるイベントタイプのリスト。簡単なイベントタイプまたは完全な Camel URI を含めることができます (デフォルト以外の特定のブローカーを使用するため)。 |
|
| インテグレーションが生成するイベントタイプのリスト。簡単なイベントタイプまたは完全な Camel URI を含めることができます (特定のブローカーを使用するため)。 |
|
| ヘッダー ce-knativehistory を基にしてイベントのフィルターを有効にします。このヘッダーは新しいバージョンの Knative で削除されたため、フィルターはデフォルトで無効になっています。 |
|
| Knative SinkBinding リソース経由のインテグレーションからシンクへのバインドを許可します。これは、インテグレーションが単一のシンクをターゲットにする場合に使用できます。インテグレーションが単一のシンクをターゲットにする場合、デフォルトで有効になります (インテグレーションが Knative ソースによって所有されている場合を除く)。 |
|
| すべてのトレイトプロパティーの自動検出を有効にします。 |
6.2.2. Knative Service トレイト
Knative Service トレイトは、標準の Kubernetes デプロイメントではなく、Knative サービスとしてインテグレーションを実行する場合に、オプションの設定を可能にします。
Knative Services としてインテグレーションを実行すると、自動スケーリング (およびゼロへのスケーリング) 機能が追加されますが、この機能はルートが HTTP エンドポイントコンシューマーを使用する場合にのみ有用です。
このトレイトは、Knative プロファイルで利用できます。
6.2.2.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait knative-service.[key]=[value] --trait knative-service.[key2]=[value2] Integration.java
$ kamel run --trait knative-service.[key]=[value] --trait knative-service.[key2]=[value2] Integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
|
Knative 自動スケーリングクラスプロパティーを設定します ( 詳細は、Knative ドキュメントを参照してください。 |
|
|
Knative 自動スケーリングメトリクスプロパティーを設定します (例: 詳細は、Knative ドキュメントを参照してください。 |
|
| 各 Pod に許可される同時実行レベルまたは CPU の割合 (自動スケーリングメトリクスによる) を設定します。 詳細は、Knative ドキュメントを参照してください。 |
|
| インテグレーションに対して稼働している必要がある Pod の最小数。デフォルトは ゼロ であるため、設定された期間に使用されなければインテグレーションはゼロにスケールダウンされます。 詳細は、Knative ドキュメントを参照してください。 |
|
| インテグレーションで並行して実行できる Pod 数の上限。Knative には、インストールによって異なる独自の上限値があります。 詳細は、Knative ドキュメントを参照してください。 |
|
| 以下のすべての条件が保持されると、インテグレーションを Knative サービスとして自動的にデプロイします。
|
6.2.3. Prometheus トレイト
Prometheus トレイトは、Prometheus と互換性のあるエンドポイントを設定します。Prometheus Operator の使用時にエンドポイントを自動的にスクレイプできるように、PodMonitor
リソースも作成します。
メトリクスは MicroProfile Metrics を使用して公開されます。
PodMonitor
リソースを作成するには、Prometheus Operator のカスタムリソース定義をインストールする必要があります。Prometheus トレイトが Prometheus Operator なしで機能するように、pod-monitor
を false
に設定できます。
Prometheus トレイトはデフォルトで無効になっています。
このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。
6.2.3.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java
$ kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
|
|
|
|
|
6.2.4. Pdb トレイト
PDB トレイトを使用すると、インテグレーション Pod の PodDisruptionBudget リソースを設定することができます。
このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。
6.2.4.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait pdb.[key]=[value] --trait pdb.[key2]=[value2] Integration.java
$ kamel run --trait pdb.[key]=[value] --trait pdb.[key2]=[value2] Integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
|
エビクション後も引き続き利用可能である必要があるインテグレーションの Pod 数。絶対数またはパーセンテージのいずれかで指定できます。 |
|
|
エビクション後に、利用不可能であっても許容されるインテグレーションの Pod 数。絶対数またはパーセンテージのいずれかで指定できます ( |
6.2.5. Pull Secret トレイト
Pull Secret トレイトは Pod にプルシークレットを設定し、Kubernetes が外部レジストリーからコンテナーイメージを取得できるようにします。
プルシークレットは手動で指定するか、IntegrationPlatform
で外部コンテナーレジストリーに対する認証を設定している場合には、イメージをプルするのに同じシークレットを使用します。
デフォルトでは、外部コンテナーレジストリーの認証を設定する際に常に有効になっているので、外部レジストリーがプライベートであることを前提としています。
イメージをプルするためにレジストリーで認証が必要ない場合は、この特性を無効にすることができます。
このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。
6.2.5.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait pull-secret.[key]=[value] --trait pull-secret.[key2]=[value2] Integration.java
$ kamel run --trait pull-secret.[key]=[value] --trait pull-secret.[key2]=[value2] Integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
|
Pod に設定されるプルシークレット名。空のままにすると、自動的に |
|
|
共有プラットフォームでグローバル Operator を使用する場合は、Operator namespace 上の |
|
|
タイプが |
6.2.6. Route トレイト
Route トレイトを使用すると、インテグレーションの OpenShift ルートの作成を設定できます。
証明書とキーの内容は、ローカルファイルシステムまたは Openshift secret
オブジェクトのいずれかから取得できます。ユーザーは、-secret
で終わるパラメーター (例: tls-certificate-secret
) を使用して、secret
に格納されている証明書を参照できます。-secret
で終わるパラメーターの優先順位は高く、同じルートパラメーターが設定されている場合 (例: tls-key-secret
と tls-key
)、tls-key-secret
が使用されます。キーと証明書を設定するための推奨されるアプローチは、secrets
を使用してコンテンツを格納し、tls-certificate-secret
、tls-key-secret
、tls-ca-certificate-secret
、tls-destination- ca-certificate-secret
パラメーターを使用してそれらを参照することです。設定オプションについては、このページの最後にある例のセクションを参照してください。
このトレイトは、OpenShift のプロファイルで利用できます。
6.2.6.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.java
$ kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
| ルートによって公開されるホストを設定します。 |
|
|
追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| TLS 証明書の内容。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| TLS 証明書へのシークレット名とキー参照。形式は secret-name[/key-name] です。値はシークレット名を表します。シークレットにキーが 1 つしかない場合は読み取られます。それ以外の場合は、/ で区切ってキー名を設定できます。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| TLS 証明書キーの内容。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| TLS 証明書キーへのシークレット名とキー参照。形式は secret-name[/key-name] です。値はシークレット名を表します。シークレットにキーが 1 つしかない場合は読み取られます。それ以外の場合は、/ で区切ってキー名を設定できます。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| TLS CA 証明書の内容。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| TLS CA 証明書へのシークレット名とキー参照。形式は secret-name[/key-name] です。値はシークレット名を表します。シークレットにキーが 1 つしかない場合は読み取られます。それ以外の場合は、/ で区切ってキー名を設定できます。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| 宛先 CA 証明書は、最終宛先の CA 証明書の内容を提供します。reencrypt の停止を使用する場合、ルーターがセキュアな接続のヘルスチェックに使用するためにこのファイルを提供する必要があります。このフィールドが指定されていない場合、ルーターは独自の宛先 CA を提供し、短いサービス名 (service.namespace.svc) を使用してホスト名の検証を実行する可能性があります。これにより、インフラストラクチャーが生成した証明書を自動的に検証できます。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
| 宛先 CA 証明書へのシークレット名とキー参照。形式は secret-name[/key-name] です。値はシークレット名を表します。シークレットにキーが 1 つしかない場合は読み取られます。それ以外の場合は、/ で区切ってキー名を設定できます。 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
|
|
セキュアでないトラフィック ( 追加情報については、OpenShift ルートのドキュメントを参照してください。 |
6.2.6.2. 例
これらの例では、secrets を使用して、統合で参照される証明書とキーを格納します。ルートの詳細については、Openshift ルートのドキュメントをお読みください。PlatformHttpServer.java は統合の例です。
これらの例を実行するための要件として、キーと証明書を含む secret
が必要です。
6.2.6.2.1. 自己署名証明書を生成し、シークレットを作成します
openssl genrsa -out tls.key openssl req -new -key tls.key -out csr.csr -subj "/CN=my-server.com" openssl x509 -req -in csr.csr -signkey tls.key -out tls.crt oc create secret tls my-combined-certs --key=tls.key --cert=tls.crt
openssl genrsa -out tls.key
openssl req -new -key tls.key -out csr.csr -subj "/CN=my-server.com"
openssl x509 -req -in csr.csr -signkey tls.key -out tls.crt
oc create secret tls my-combined-certs --key=tls.key --cert=tls.crt
6.2.6.2.2. ルートへの HTTP リクエストの作成
すべての例で、次の curl コマンドを使用して HTTP リクエストを作成できます。インラインスクリプトを使用して、openshift 名前空間とクラスターベースドメインを取得します。これらのインラインスクリプトをサポートしないシェルを使用している場合は、インラインスクリプトを実際の名前空間とベースドメインの値に置き換える必要があります。
curl -k https://platform-http-server-`oc config view --minify -o 'jsonpath={..namespace}'`.`oc get dnses/cluster -ojsonpath='{.spec.baseDomain}'`/hello?name=Camel-K
curl -k https://platform-http-server-`oc config view --minify -o 'jsonpath={..namespace}'`.`oc get dnses/cluster -ojsonpath='{.spec.baseDomain}'`/hello?name=Camel-K
シークレットを使用してエッジルートを追加するには、
-secret
で終わるパラメーターを使用して、証明書を含むシークレット名を設定します。このルート例の特性は、tls.key
とtls.crt
という名前の 2 つのキーを含むmy-combined-certs
という名前のシークレットを参照しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java -t route.tls-termination=edge -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key
kamel run --dev PlatformHttpServer.java -t route.tls-termination=edge -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key
シークレットを使用してパススルールートを追加するには、統合 Pod で TLS を設定し、実行中の統合 Pod でキーと証明書を表示する必要があります。これを実現するには、
--resource
kamel パラメーターを使用して統合 Pod にシークレットをマウントします。次に、いくつかの camel quarkus パラメーターを使用して、実行中の Pod でこれらの証明書ファイルを参照します。これらのファイルは、-p quarkus.http.ssl.certificate
で始まります。このルート例の特性は、tls.key
とtls.crt
という名前の 2 つのキーを含むmy-combined-certs
という名前のシークレットを参照しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=passthrough -t container.port=8443
kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=passthrough -t container.port=8443
シークレットを使用して再暗号化ルートを追加するには、統合 Pod で TLS を設定し、実行中の統合 Pod でキーと証明書を表示する必要があります。これを実現するには、
--resource
kamel パラメーターを使用して統合 Pod にシークレットをマウントします。次に、いくつかの camel quarkus パラメーターを使用して、実行中の Pod でこれらの証明書ファイルを参照します。これらのファイルは、-p quarkus.http.ssl.certificate
で始まります。このルート例の特性は、tls.key
とtls.crt
という名前の 2 つのキーを含むmy-combined-certs
という名前のシークレットを参照しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=reencrypt -t route.tls-destination-ca-certificate-secret=my-combined-certs/tls.crt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=reencrypt -t route.tls-destination-ca-certificate-secret=my-combined-certs/tls.crt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
ルートのシークレットからの特定の証明書と統合エンドポイントの 証明書を提供する Openshift サービス を使用して、再暗号化ルートを追加します。このように、証明書を提供する Openshift サービスは統合 Pod でのみセットアップされます。キーと証明書は実行中の統合 Pod に表示される必要があります。これを実現するには、
--resource
kamel パラメーターを使用して統合 Pod にシークレットをマウントし、次にいくつかの camel quarkus パラメーターを使用して実行中の Pod でこれらの証明書ファイルを参照します。-p quarkus.http.ssl.certificate
で始まります。このルート例の特性は、tls.key
とtls.crt
という名前の 2 つのキーを含むmy-combined-certs
という名前のシークレットを参照しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java --resource secret:cert-from-openshift@/etc/ssl/cert-from-openshift -p quarkus.http.ssl.certificate.file=/etc/ssl/cert-from-openshift/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/cert-from-openshift/tls.key -t route.tls-termination=reencrypt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
kamel run --dev PlatformHttpServer.java --resource secret:cert-from-openshift@/etc/ssl/cert-from-openshift -p quarkus.http.ssl.certificate.file=/etc/ssl/cert-from-openshift/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/cert-from-openshift/tls.key -t route.tls-termination=reencrypt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
次に、統合サービスにアノテーションを付けて、証明書を提供する Openshift サービスを注入する必要があります
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
ローカルファイルシステムから提供された証明書と秘密鍵を使用してエッジルートを追加します。この例では、インラインスクリプトを使用して証明書と秘密鍵ファイルの内容を読み取り、すべての改行文字を削除します (これは、証明書をパラメーターの値として設定するために必要です)。したがって、値は 1 行になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run PlatformHttpServer.java --dev -t route.tls-termination=edge -t route.tls-certificate="$(cat tls.crt|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')" -t route.tls-key="$(cat tls.key|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')"
kamel run PlatformHttpServer.java --dev -t route.tls-termination=edge -t route.tls-certificate="$(cat tls.crt|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')" -t route.tls-key="$(cat tls.key|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')"
6.2.7. Service トレイト
サービストレイトは、Service リソースとのインテグレーションを公開し、同じ namespace の他のアプリケーション (またはインテグレーション) からアクセスできるようにします。
インテグレーションが HTTP エンドポイントを公開できる Camel コンポーネントに依存する場合は、デフォルトで有効になっています。
このトレイトは Kubernetes および OpenShift プロファイルで利用できます。
6.2.7.1. 設定
CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。
kamel run --trait service.[key]=[value] --trait service.[key2]=[value2] Integration.java
$ kamel run --trait service.[key]=[value] --trait service.[key2]=[value2] Integration.java
以下の設定オプションが利用できます。
プロパティー | 型 | 説明 |
---|---|---|
|
| トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。 |
|
| サービスを作成する必要がある場合にコードから自動検出されます。 |
|
|
Service を NodePort として公開できるようにします (デフォルトは |