6.3. Camel K プラットフォームトレイト

6.3.1. Builder トレイト

Builder トレイトは、IntegrationKits を構築および設定するために最適なストラテジーを決定するために内部で使用されます。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Builder トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.1.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait builder.[key]=[value] --trait builder.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

builder.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

builder.verbose

bool

サポートするビルドコンポーネント (OpenShift ビルド Pod など) で詳細なロギングを有効にします。Kaniko および Buildah はサポートされません。

builder.properties

[]string

ビルドタスクに提供されるプロパティー一覧

6.3.2. Container トレイト

Container トレイトを使用すると、インテグレーションが実行されるコンテナーのプロパティーを設定できます。

また、コンテナーに関連付けられたサービスの設定も提供します。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Container トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.2.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait container.[key]=[value] --trait container.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

container.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

container.auto

bool

 

container.request-cpu

文字列

必要な CPU の最小量。

container.request-memory

文字列

必要なメモリーの最小容量。

container.limit-cpu

文字列

必要な CPU の最大量。

container.limit-memory

文字列

必要なメモリーの最大容量。

container.expose

bool

kubernetes サービス経由の公開を有効または無効にするために使用できます。

container.port

int

コンテナーによって公開される別のポートを設定します (デフォルトは 8080)。

container.port-name

文字列

コンテナーによって公開されるポートに異なるポート名を設定します (デフォルトは http)。

container.service-port

int

コンテナーポートを公開するサービスポートを設定します (デフォルト 80)。

container.service-port-name

文字列

コンテナーポートを公開するサービスポート名を設定します (デフォルト http)。

container.name

文字列

メインのコンテナー名。デフォルトでは、名前付き integration になります。

container.image

文字列

主なコンテナーイメージ

container.probes-enabled

bool

コンテナーのプローブで ProbesEnabled を有効/無効にします (デフォルトは false)。

container.liveness-initial-delay

int32

コンテナーが起動してから liveness プローブが開始されるまでの秒数。

container.liveness-timeout

int32

プローブがタイムアウトするまでの秒数。liveness プローブに適用されます。

container.liveness-period

int32

プローブを実行する頻度。liveness プローブに適用されます。

container.liveness-success-threshold

int32

失敗後に、プローブが正常とみなされるための最小の連続成功回数。liveness プローブに適用されます。

container.liveness-failure-threshold

int32

正常に実行された後に失敗とみなされるプローブの連続失敗回数の最小値。liveness プローブに適用されます。

container.readiness-initial-delay

int32

コンテナーが起動してから readiness プローブが開始されるまでの秒数。

container.readiness-timeout

int32

プローブがタイムアウトするまでの秒数。readiness プローブに適用されます。

container.readiness-period

int32

プローブを実行する頻度。readiness プローブに適用されます。

container.readiness-success-threshold

int32

失敗後に、プローブが正常とみなされるための最小の連続成功回数。readiness プローブに適用されます。

container.readiness-failure-threshold

int32

正常に実行された後に失敗とみなされるプローブの連続失敗回数の最小値。readiness プローブに適用されます。

6.3.3. Camel トレイト

Camel トレイトを使用すると Apache Camel K ランタイムおよび関連ライブラリーのバージョンを設定できますが、無効にすることはできません。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Camel トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.3.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait camel.[key]=[value] --trait camel.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

camel.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

6.3.4. Dependencies トレイト

Dependencies トレイトは、ユーザーが実行するインテグレーションに基づいてランタイムの依存関係を自動的に追加するために内部で使用されます。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Dependencies トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.4.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait dependencies.[key]=[value] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

dependencies.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

6.3.5. Deployer トレイト

Deployer トレイトを使用すると、インテグレーションをデプロイする高レベルのリソースの種類を明示的に選択できます。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Deployer トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.5.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait deployer.[key]=[value] --trait deployer.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

deployer.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

deployer.kind

文字列

インテグレーションを実行するリソースを作成する際に、deploymentcron-job、または knative-service との間で必要なデプロイメントの種類を明示的に選択できます。

6.3.6. Deployment トレイト

Deployment トレイトは、インテグレーションがクラスターで実行されるようにする Kubernetes デプロイメントを生成します。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Deployment トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.6.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait deployment.[key]=[value] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

deployment.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

6.3.7. Environment トレイト

Environment トレイトは、NAMESPACEPOD_NAME などのインテグレーションコンテナーに標準の環境変数を注入するために内部で使用されます。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Environment トレイトはプラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.7.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait environment.[key]=[value] --trait environment.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

environment.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

environment.container-meta

bool

NAMESPACE および POD_NAME 環境変数の挿入を有効にします (デフォルトは true)。

6.3.8. Error Handler トレイト

error-handler は、Error Handler ソースをインテグレーションランタイムに注入するのに使用されるプラットフォームトレイトです。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

error-handler トレイトは プラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.8.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait error-handler.[key]=[value] --trait error-handler.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

error-handler.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

error-handler.ref

文字列

指定された、またはアプリケーションプロパティーで見つかったエラーハンドラー参照名

6.3.9. JVM トレイト

JVM トレイトは、インテグレーションを実行する JVM の設定に使用されます。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

JVM トレイトは プラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.9.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait jvm.[key]=[value] --trait jvm.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

jvm.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

jvm.debug

bool

リモートデバッグをアクティベートし、たとえばポート転送を使用して、デバッガーを JVM に接続できるようにします。

jvm.debug-suspend

bool

メインクラスがロードされる直前にターゲット JVM を一時停止します。

jvm.print-command

bool

コンテナーログに JVM の開始に使用されるコマンドを出力します (デフォルトは true)。

jvm.debug-address

文字列

新たに起動された JVM をリッスンするトランスポートアドレス (デフォルトは *:5005)

jvm.options

[]string

JVM オプションの一覧

jvm.classpath

文字列

追加の JVM クラスパス (Linux クラスパスセパレーターを使用)

6.3.9.2. 例

  • Integration に追加のクラスパスを含めます。

    $ kamel run -t jvm.classpath=/path/to/my-dependency.jar:/path/to/another-dependency.jar ...

6.3.10. Kamelets トレイト

kamelets トレイトは、Kamelets をインテグレーションランタイムに注入するのに使用されるプラットフォームトレイトです。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

kamelets トレイトは プラットフォームトレイト です。無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.10.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait kamelets.[key]=[value] --trait kamelets.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

kamelets.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

kamelets.auto

bool

参照される Kamelets とそのデフォルト設定を自動的に注入します (デフォルトで有効です)。

kamelets.list

文字列

現在のインテグレーションにロードする Kamelet 名のコンマ区切りリスト

6.3.11. NodeAffinity トレイト

NodeAffinity トレイトを使用すると、次の経路を通じて、統合 Pod がスケジュールできるノードを制限できます。

  • ノードのラベル、または Pod 間のアフィニティーおよび非アフィニティーに基づく
  • ノードですでに実行されている Pod のラベルに基づく

このトレイトは、デフォルトで無効になっています。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

6.3.11.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait affinity.[key]=[value] --trait affinity.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

affinity.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

affinity.pod-affinity

bool

常にインテグレーションの複数のレプリカを同じノードに配置します (デフォルトは false)。

affinity.pod-anti-affinity

bool

常にインテグレーションの複数のレプリカを同じノードに配置しません (デフォルトは false)。

affinity.node-affinity-labels

[]string

ノードのラベルに基づいて、インテグレーション Pod がスケジュール可能なノードのセットを定義します。

affinity.pod-affinity-labels

[]string

インテグレーション Pod と共に同じ場所に配置する Pod のセット (指定の namespace に対してラベルセレクターが一致するもの) を定義します。

affinity.pod-anti-affinity-labels

[]string

インテグレーション Pod と共に同じ場所に配置しない Pod のセット (指定の namespace に対してラベルセレクターが一致するもの) を定義します。

6.3.11.2. 例

  • 組み込みノードラベルkubernetes.io/hostname を使用して、特定のノードで統合 Pod をスケジュールするには:

    $ kamel run -t affinity.node-affinity-labels="kubernetes.io/hostname in(node-66-50.hosted.k8s.tld)" ...
  • ノードごとに 1 つの統合 Pod をスケジュールするには (Exists オペレーターを使用):

    $ kamel run -t affinity.pod-anti-affinity-labels="camel.apache.org/integration" ...
  • インテグレーション Pod を他のインテグレーション Pod と同じ場所に配置するには、以下を実行します。

    $ kamel run -t affinity.pod-affinity-labels="camel.apache.org/integration in(it1, it2)" ...

*-labels オプションは、ラベルセレクター の要件に従います。これらには複数の値を指定でき、要件リストは AND (指定のすべての条件を適用) として解釈されます。たとえば、ノードごとに単一のインテグレーション Pod をスケジュールし、かつ Camel K operator Pod と同じ場所に配置しない場合は、以下を実行します。

$ kamel run -t affinity.pod-anti-affinity-labels="camel.apache.org/integration" -t affinity.pod-anti-affinity-labels="camel.apache.org/component=operator" ...

詳細は、Kubernetes 公式ドキュメントの Assigning Pods to Nodes を参照してください。

6.3.12. Openapi トレイト

OpenAPI DSL トレイトは、OpenAPI 仕様からインテグレーションを作成できるように内部で使用されます。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

openapi トレイトは プラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.12.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait openapi.[key]=[value] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

openapi.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

6.3.13. Owner トレイト

Owner トレイトは、作成されたすべてのリソースが作成されたインテグレーションに属すようにし、インテグレーションのアノテーションおよびラベルをこれらの所有されたリソースに転送します。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

Owner トレイトは プラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.13.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait owner.[key]=[value] --trait owner.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

owner.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

owner.target-annotations

[]string

転送するアノテーションのセット

owner.target-labels

[]string

転送するラベルのセット

6.3.14. プラットフォームトレイト

プラットフォームトレイトは、インテグレーションプラットフォームをインテグレーションに割り当てるために使用されるベーストレイトです。

プラットフォームが見つからない場合、トレイトはデフォルトのプラットフォームを作成できます。この機能は、プラットフォームにカスタム設定が必要ない場合に便利です (例: 組み込みのコンテナーイメージレジストリーがあるため OpenShift ではデフォルトの設定が動作します)。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

プラットフォームトレイト を無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.14.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait platform.[key]=[value] --trait platform.[key2]=[value2] Integration.java

以下の設定オプションが利用できます。

プロパティー説明

platform.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

platform.create-default

bool

プラットフォームがない場合にデフォルトのプラットフォーム (空のプラットフォーム) を作成します。

platform.global

bool

グローバル Operator の場合、プラットフォームがグローバルに作成されるかどうかを示します (デフォルトは true です)。

platform.auto

bool

デフォルトのプラットフォームを作成できる場合に環境から自動検出します (OpenShift のみで作成)。

6.3.15. Quarkus トレイト

Quarkus トレイトにより、Quarkus ランタイムがアクティベートされます。

これはデフォルトで有効になっています。

注記

ネイティブ実行可能ファイルへのコンパイル (つまり package-type=native を使用する場合) は、kamelets と YAML 統合でのみサポートされます。また、少なくとも 4GiB のメモリーが必要であるため、ネイティブビルドを実行する Pod、つまり Operator Pod またはビルド Pod (プラットフォーム用に設定されたビルド戦略に依存) には十分なメモリーが必要です。

このトレイトは Kubernetes、Knative、および OpenShift プロファイルで利用できます。

警告

quarkus トレイトは プラットフォームトレイト です。よって、これを無効にすると、プラットフォームの機能性が低下する可能性があります。

6.3.15.1. 設定

CLI でインテグレーションを実行する際にトレイトプロパティーを指定できます。

$ kamel run --trait quarkus.[key]=[value] --trait quarkus.[key2]=[value2] integration.java

以下の設定オプションが利用できます。

プロパティー説明

quarkus.enabled

bool

トレイトを有効または無効にするのに使用できます。すべてのトレイトがこの共通プロパティーを共有します。

quarkus.package-type

[]github.com/apache/camel-k/pkg/trait.quarkusPackageType

fast-jar または native (デフォルトは fast-jar) のいずれかの Quarkus パッケージタイプ。fast-jarnative の両方が指定されている場合、2 つの IntegrationKit リソースが作成され、準備完了後は native キットが fast-jar よりも優先されます。この順番は、現在のキットの統合のための解像度に影響します。統合に一致する既存のキットが存在しない場合、最初のパッケージタイプに対応するキットが統合に割り当てられます。

6.3.15.2. サポートされる Camel コンポーネント

Camel K は、すぐに使用できる Camel Quarkus エクステンションとして利用可能な Camel コンポーネントのみをサポートします。

6.3.15.3. 例

6.3.15.3.1. ネイティブインテグレーションへの自動ロールアウトデプロイメント

ネイティブ実行可能ファイルへのコンパイルは、実行時のメモリー消費量を抑えて高速に開始するインテグレーションを生成しますが、ビルドプロセスはリソースを大量に消費し、従来の Java アプリケーションへのパッケージ化よりも長い時間がかかります。

両方の長所を組み合わせるために、インテグレーションを実行するときに、従来のビルドとネイティブビルドの両方を並行して実行するように Quarkus トレイトを設定することができます。

$ kamel run -t quarkus.package-type=fast-jar -t quarkus.package-type=native ...

インテグレーション Pod は fast-jar ビルドが完了するとすぐに実行され、native ビルドが完了するとすぐに native イメージへのロールアウトデプロイがトリガーされ、サービスが中断されることはありません。