4.2. ランタイム設定オプションの指定
稼働時に使用する Camel K インテグレーションの以下のランタイム設定情報を指定できます。
- コマンドラインまたは .properties ファイルで指定するランタイムプロパティー
- インテグレーションの開始時に Camel K Operator が処理し、ランタイムプロパティーとして解析する設定値。設定値は、ローカルのテキストファイル、OpenShift ConfigMap、または OpenShift シークレットで指定できます。
- インテグレーションの起動時にプロパティーファイルとして解析されないリソース情報。ローカルのテキストファイル、バイナリーファイル、OpenShift ConfigMap、または OpenShift シークレットでリソース情報を指定できます。
以下の kamel run
オプションを使用します。
--property
--property
オプションを使用して、コマンドラインでランタイムプロパティーを直接指定するか、Java*.properties
ファイルを参照します。Camel K Operator は、稼働中のインテグレーションのuser.properties
ファイルにプロパティーファイルの内容を追加します。--config
--config
オプションを使用して、インテグレーションの開始時に Camel K Operator が処理し、ランタイムプロパティーとして解析する設定値を指定します。ローカルのテキストファイル (1 MiB の最大ファイルサイズ)、ConfigMap (3 MB) またはシークレット (3 MB) を指定できます。このファイルは、ÙTF-8 リソースである必要があります。マテリアル化されたファイル (提供するファイルからインテグレーションを起動する時に生成される) は、クラスパスレベルで利用可能になります。これにより、正確な場所を指定しなくてもインテグレーションコードで参照できるようになります。
注記: 非 UTF-8 リソース (バイナリーファイルなど) を提供する必要がある場合は、
--resource
オプションを使用します。--resource
--resource
オプションを使用して、インテグレーションの稼働時にアクセスするリソースを提供します。ローカルのテキストファイルまたはバイナリーファイル (1 MiB の最大ファイルサイズ)、ConfigMap (最大 3 MB) またはシークレット (最大 3 MB) を指定できます。オプションで、リソース用にマテリアル化したファイルの宛先を指定できます。たとえば、HTTPS 接続を設定する場合は、--resource
オプションを使用して、指定した場所にあると予想される SSL 証明書 (バイナリーファイル) を指定します。Camel K Operator はプロパティーのリソースを解析したり、リソースをクラスパスに追加したりしません。(クラスパスにリソースを追加する場合は、インテグレーションで JVM トレイト を使用できます)。
4.2.1. ランタイムプロパティーの指定
kamel run コマンドで --property
オプションを使用して、コマンドラインで直接または Java *.properties
ファイルを参照してランタイムプロパティーを指定できます。
--property
オプションを使用してインテグレーションを実行する場合、Camel K Operator は稼働中のインテグレーションの user.properties
ファイルにプロパティーを追加します。
4.2.1.1. コマンドラインでのランタイムプロパティーの指定
実行時にコマンドラインで Camel K インテグレーションのプロパティーを設定できます。プロパティーのプレースホルダーを使用してインテグレーションのプロパティーを定義する場合 (例: {{my.message}}
)、--property my.message=Hello
のようにコマンドラインでプロパティー値を指定できます。1 つのコマンドで複数のプロパティーを指定できます。
手順
プロパティーを使用する Camel インテグレーションを開発します。以下の簡単な例には、
{{my.message}}
プロパティープレースホルダーが含まれています。... - from: uri: "timer:tick" steps: - set-body: constant: "{{my.message}}" - to: "log:info" ...
以下の構文を使用してインテグレーションを実行し、実行時にプロパティー値を設定します。
kamel run --property <property>=<value> <integration>
または、(
--property
の代わりに)--p
短縮表記を使用することもできます。kamel run --property <property>=<value> <integration>
以下に例を示します。
kamel run --property my.message="Hola Mundo" HelloCamelK.java --dev
または
kamel run --p my.message="Hola Mundo" HelloCamelK.java --dev
以下は、結果の例になります。
... [1] 2020-04-13 15:39:59.213 INFO [main] ApplicationRuntime - Listener org.apache.camel.k.listener.RoutesDumper@6e0dec4a executed in phase Started [1] 2020-04-13 15:40:00.237 INFO [Camel (camel-k) thread #1 - timer://java] info - Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hola Mundo from java] ...
その他の参考資料
4.2.1.2. プロパティーファイルでのランタイムプロパティーの指定
実行時にコマンドラインでプロパティーファイル (*.properties
) を指定すると、Camel K インテグレーションに複数のプロパティーを設定できます。たとえば、{{my.items}}
プロパティープレースホルダーを使用してインテグレーションでプロパティーを定義する場合、--p file my-integration.properties
のようにプロパティーファイルを使用してコマンドラインでプロパティー値を指定できます。
手順
インテグレーションのプロパティーファイルを作成します。以下は、
my.properties
という名前のファイルの例です。my.key.1=hello my.key.2=world
プロパティーファイルに定義されたプロパティーを使用する Camel インテグレーションを開発します。以下の
Routing.java
サンプルインテグレーションでは、{{my.key.1}}
および{{my.key.2=world}}
プロパティープレースホルダーが使用されます。import org.apache.camel.builder.RouteBuilder; public class Routing extends RouteBuilder { @Override public void configure() throws Exception { from("timer:property-file") .routeId("property-file") .log("property file content is: {{my.key.1}} {{my.key.2}}"); } }
以下の構文を使用してインテグレーションを実行し、プロパティーファイルを参照します。
kamel run --property file:<my-file.properties> <integration>
または、(
--property
の代わりに)--p
短縮表記を使用することもできます。kamel run --p file:<my-file.properties> <integration>
以下に例を示します。
kamel run Routing.java --property:file=my.properties --dev
以下は、結果の例になります。
... [1] 2020-04-13 15:20:30.424 INFO [main] ApplicationRuntime - Listener org.apache.camel.k.listener.RoutesDumper@6e0dec4a executed in phase Started [1] 2020-04-13 15:20:31.461 INFO [Camel (camel-k) thread #1 - timer://java] priority - !!Priority item: engine [1] 2020-04-13 15:20:37.426 INFO [Camel (camel-k) thread #1 - timer://java] standard - Standard item: window [1] 2020-04-13 15:20:43.429 INFO [Camel (camel-k) thread #1 - timer://java] priority - !!Priority item: door ...