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) を指定できます。ファイルは UTF-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 インテグレーションに複数のプロパティーを設定できます。たとえば、--p file my-integration.properties プロパティープレースホルダーを使用してインテグレーションでプロパティーを定義する場合、{{my.items}} のようにプロパティーファイルを使用してコマンドラインでプロパティー値を指定できます。
手順
インテグレーションのプロパティーファイルを作成します。以下の例は、
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