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.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}}
プロパティープレースホルダーが含まれています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... - from: uri: "timer:tick" steps: - set-body: constant: "{{my.message}}" - to: "log:info" ...
... - from: uri: "timer:tick" steps: - set-body: constant: "{{my.message}}" - to: "log:info" ...
以下の構文を使用してインテグレーションを実行し、実行時にプロパティー値を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --property <property>=<value> <integration>
kamel run --property <property>=<value> <integration>
または、(
--property
の代わりに)--p
短縮表記を使用することもできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --property <property>=<value> <integration>
kamel run --property <property>=<value> <integration>
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --property my.message="Hola Mundo" HelloCamelK.java --dev
kamel run --property my.message="Hola Mundo" HelloCamelK.java --dev
または
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --p my.message="Hola Mundo" HelloCamelK.java --dev
kamel run --p my.message="Hola Mundo" HelloCamelK.java --dev
以下は、結果の例になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... [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] ...
... [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
という名前のファイルからのものです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow my.key.1=hello my.key.2=world
my.key.1=hello my.key.2=world
プロパティーファイルに定義されたプロパティーを使用する Camel インテグレーションを開発します。以下の
Routing.java
統合例では{{my.key.1}}
および{{my.key.2=world}}
プロパティープレースホルダーを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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}}"); } }
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}}"); } }
以下の構文を使用してインテグレーションを実行し、プロパティーファイルを参照します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --property file:<my-file.properties> <integration>
kamel run --property file:<my-file.properties> <integration>
または、(
--property
の代わりに)--p
短縮表記を使用することもできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --p file:<my-file.properties> <integration>
kamel run --p file:<my-file.properties> <integration>
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run Routing.java --property:file=my.properties --dev
kamel run Routing.java --property:file=my.properties --dev
4.2.2. 設定値の指定
kamel run
コマンドの --config
オプションを使用して、Camel K Operator がランタイムプロパティーとして処理し、解析する設定値を指定できます。設定値は、ローカルのテキスト (UTF-8) ファイル、OpenShift ConfigMap、または OpenShift シークレットで指定できます。
インテグレーションの実行時に、Camel K Operator は提供されたファイルをマレリアル化し、これをクラスパスに追加します。これにより、正確な場所を指定しなくてもインテグレーションコードの設定値を参照できます。
4.2.2.1. テキストファイルの指定
設定値が含まれる UTF-8 テキストファイルがある場合は、--config file:/path/to/file
オプションを使用して、実行中のインテグレーションのクラスパスでファイルを (同じファイル名で) 利用可能にすることができます。
前提条件
- Camel K 開発環境の設定
設定値が含まれる 1 つ以上の (バイナリー以外の) テキストファイルがある。
たとえば、以下のテキスト行を含む
resources-data.txt
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow the file body
the file body
手順
設定値が含まれるテキストファイルを参照する Camel K インテグレーションを作成します。
たとえば、以下のインテグレーション (
ConfigFileRoute.java
) は、実行時にクラスパスでresources-data.txt
ファイルが利用可能でなければなりません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ConfigFileRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:config-file") .setBody() .simple("resource:classpath:resources-data.txt") .log("resource file content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ConfigFileRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:config-file") .setBody() .simple("resource:classpath:resources-data.txt") .log("resource file content is: ${body}"); } }
インテグレーションを実行し、実行中のインテグレーションで使用できるように、
--config
オプションを使用してテキストファイルを指定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --config file:resources-data.txt ConfigFileRoute.java --dev
kamel run --config file:resources-data.txt ConfigFileRoute.java --dev
必要に応じて、
--config
オプションを繰り返し追加して、複数のファイルを指定できます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --config file:resources-data1.txt --config file:resources-data2.txt ConfigFileRoute.java --dev
kamel run --config file:resources-data1.txt --config file:resources-data2.txt ConfigFileRoute.java --dev
4.2.2.2. ConfigMap の指定
設定値が含まれる OpenShift ConfigMap があり、Camel K インテグレーションで使用できるように ConfigMap をマテリアル化する必要がある場合には、--config configmap:<configmap-name> 構文を使用します。
前提条件
- Camel K 開発環境の設定
OpenShift クラスター上に 1 つ以上の ConfigMap ファイルがある。
たとえば、以下のコマンドを使用して ConfigMap を作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create configmap my-cm --from-literal=my-configmap-key="configmap content"
oc create configmap my-cm --from-literal=my-configmap-key="configmap content"
手順
ConfigMap を参照する Camel K インテグレーションを作成します。
たとえば、以下のインテグレーション (名前:
ConfigConfigmapRoute.java
) は、my-cm
という名前の ConfigMap のmy-configmap-key
という名前の設定値を参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ConfigConfigmapRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:configmap") .setBody() .simple("resource:classpath:my-configmap-key") .log("configmap content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ConfigConfigmapRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:configmap") .setBody() .simple("resource:classpath:my-configmap-key") .log("configmap content is: ${body}"); } }
インテグレーションを実行し、
--config
オプションを使用して ConfigMap ファイルをマテリアル化し、実行中のインテグレーションで使用できるようにします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --config configmap:my-cm ConfigConfigmapRoute.java --dev
kamel run --config configmap:my-cm ConfigConfigmapRoute.java --dev
インテグレーションが起動すると、Camel K Operator は ConfigMap の内容で OpenShift ボリュームをマウントします。
注記: クラスターでまだ利用できない ConfigMap を指定した場合、Integration は待機し ConfigMap が利用可能になって初めて起動します。
4.2.2.3. シークレットの指定
OpenShift シークレットを使用して、設定情報を安全に含めることができます。--config secret
構文を使用して、Camel K インテグレーションが利用できるようシークレットをマテリアル化することができます。
前提条件
- Camel K 開発環境の設定
OpenShift クラスター上に 1 つ以上のシークレットがある。
たとえば、以下のコマンドを使用してシークレットを作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic my-sec --from-literal=my-secret-key="very top secret"
oc create secret generic my-sec --from-literal=my-secret-key="very top secret"
手順
ConfigMap を参照する Camel K インテグレーションを作成します。
たとえば、以下のインテグレーション (名前:
ConfigSecretRoute.java
) は、my-sec
という名前のシークレットのmy-secret
プロパティーを参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ConfigSecretRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:secret") .setBody() .simple("resource:classpath:my-secret") .log("secret content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ConfigSecretRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:secret") .setBody() .simple("resource:classpath:my-secret") .log("secret content is: ${body}"); } }
インテグレーションを実行し、
--config
オプションを使用してシークレットをマテリアル化し、実行中のインテグレーションで使用できるようにします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --config secret:my-sec ConfigSecretRoute.java --dev
kamel run --config secret:my-sec ConfigSecretRoute.java --dev
インテグレーションが起動すると、Camel K Operator はシークレットの内容で OpenShift ボリュームをマウントします。
4.2.2.4. ConfigMap またはシークレットに含まれるプロパティーの参照
インテグレーションを実行し、--config
オプションで ConfigMap またはシークレットを指定する場合、Camel K Operator は ConfigMap またはシークレットをランタイムプロパティーファイルとして解析します。インテグレーション内で、他のランタイムプロパティーを参照する際にプロパティーを参照できます。
前提条件
手順
プロパティーが含まれるテキストファイルを作成します。
たとえば、以下のプロパティーを含む
my.properties
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow my.key.1=hello my.key.2=world
my.key.1=hello my.key.2=world
プロパティーファイルに基づいて ConfigMap またはシークレットを作成します。
たとえば、以下のコマンドを使用して my.properties ファイルからシークレットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic my-sec --from-file my.properties
oc create secret generic my-sec --from-file my.properties
インテグレーションで、シークレットに定義されたプロパティーを参照します。
たとえば、以下のインテグレーション (名前:
ConfigSecretRoute.java
) は、my.key.1
とmy.key.2
プロパティーを参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ConfigSecretPropertyRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:secret") .routeId("secret") .log("{{my.key.1}} {{my.key.2}}"); } }
import org.apache.camel.builder.RouteBuilder; public class ConfigSecretPropertyRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:secret") .routeId("secret") .log("{{my.key.1}} {{my.key.2}}"); } }
インテグレーションを実行し、
--config
オプションを使用して、my.key.1
およびmy.key.2
プロパティーが含まれるシークレットを指定します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --config secret:my-sec ConfigSecretPropertyRoute.java --dev
kamel run --config secret:my-sec ConfigSecretPropertyRoute.java --dev
4.2.2.5. ConfigMap またはシークレットから取得した設定値の絞り込み
ConfigMap およびシークレットは複数のソースを保持できます。たとえば、以下のコマンドは 2 つのソースからシークレット (my-sec-multi
) を作成します。
oc create secret generic my-sec-multi --from-literal=my-secret-key="very top secret" --from-literal=my-secret-key-2="even more secret"
oc create secret generic my-sec-multi --from-literal=my-secret-key="very top secret" --from-literal=my-secret-key-2="even more secret"
--config configmap
または --config secret
オプションの後に /key
表記を使用して、インテグレーションが取得する情報量を 1 つのソースに制限することができます。
前提条件
- Camel K 開発環境の設定
- 複数のソースを保持する ConfigMap またはシークレットがある。
手順
ConfigMap またはシークレットのいずれかのソースだけからの設定値を使用するインテグレーションを作成します。
たとえば、以下のインテグレーション (
ConfigSecretKeyRoute.java
) は、my-sec-multi
シークレット内のいずれかのソースだけからのプロパティーを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ConfigSecretKeyRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:secret") .setBody() .simple("resource:classpath:my-secret-key-2") .log("secret content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ConfigSecretKeyRoute extends RouteBuilder { @Override public void configure() throws Exception { from("timer:secret") .setBody() .simple("resource:classpath:my-secret-key-2") .log("secret content is: ${body}"); } }
--config secret
オプションと/key
表記を使用して、インテグレーションを実行します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --config secret:my-sec-multi/my-secret-key-2 ConfigSecretKeyRoute.java --dev
kamel run --config secret:my-sec-multi/my-secret-key-2 ConfigSecretKeyRoute.java --dev
インテグレーション Pod を確認し、指定されたソース (例:
my-secret-key-2
) のみがマウントされていることを確認します。たとえば、以下のコマンドを実行して Pod のすべてのボリュームを一覧表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc set volume pod/<pod-name> --all
oc set volume pod/<pod-name> --all
4.2.3. 実行中のインテグレーションへのリソースの提供
kamel run コマンドの --resource
オプションを使用すると、実行しているときに使用するインテグレーションのリソースを指定できます。ローカルのテキストファイル (1 MiB の最大ファイルサイズ)、ConfigMap (3 MB) またはシークレット (3 MB) を指定できます。オプションで、リソース用にマテリアル化したファイルの宛先を指定できます。たとえば、HTTPS 接続を設定する場合は、--resource オプションを使用します。これは、既知の場所にあると予想されるバイナリーファイルである SSL 証明書を提供する必要があるためです。
--resource
オプションを使用する場合、Camel K Operator はランタイムプロパティーを検索するリソースを解析せず、リソースをクラスパスに追加しません。(クラスパスにリソースを追加する場合は、JVM トレイト を使用できます。)
4.2.3.1. リソースとしてのテキストまたはバイナリーファイルの指定
設定値が含まれるテキストファイルまたはバイナリーファイルがある場合は、--resource file:/path/to/file
オプションを使用してファイルをマテリアル化できます。デフォルトでは、Camel K Operator はマテリアル化されたファイルを /etc/camel/resources/
ディレクトリーにコピーします。オプションで、リソースの宛先パスの指定 で説明されているように、別の宛先ディレクトリーを指定できます。
前提条件
- Camel K 開発環境の設定
- 設定プロパティーが含まれる 1 つ以上のテキストまたはバイナリーファイルがある。
手順
指定するファイルの内容を読み取る Camel K インテグレーションを作成します。
たとえば、以下の統合 (
ResourceFileBinaryRoute.java
) を展開してresources-data.zip
ファイルを読み込みます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ResourceFileBinaryRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/etc/camel/resources/?fileName=resources-data.zip&noop=true&idempotent=false") .unmarshal().zipFile() .log("resource file unzipped content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ResourceFileBinaryRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/etc/camel/resources/?fileName=resources-data.zip&noop=true&idempotent=false") .unmarshal().zipFile() .log("resource file unzipped content is: ${body}"); } }
インテグレーションを実行し、
--resource
オプションを使用してファイルをデフォルトの宛先ディレクトリー (/etc/camel/resources/
) にコピーします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --resource file:resources-data.zip ResourceFileBinaryRoute.java -d camel-zipfile --dev
kamel run --resource file:resources-data.zip ResourceFileBinaryRoute.java -d camel-zipfile --dev
注記: バイナリーファイルを指定すると、ファイルの内容のバイナリー表現が作成され、インテグレーションで透過的にデコードされます。
必要に応じて、
--resource
オプションを繰り返し追加して、複数のリソースを指定できます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --resource file:resources-data1.txt --resource file:resources-data2.txt ResourceFileBinaryRoute.java -d camel-zipfile --dev
kamel run --resource file:resources-data1.txt --resource file:resources-data2.txt ResourceFileBinaryRoute.java -d camel-zipfile --dev
4.2.3.2. リソースとしての ConfigMap の指定
設定値が含まれる OpenShift ConfigMap があり、ConfigMap をインテグレーションのリソースとしてマテリアル化する必要がある場合は、--resource <configmap-file>
オプションを使用します。
前提条件
- Camel K 開発環境の設定
OpenShift クラスター上に 1 つ以上の ConfigMap ファイルがある。たとえば、以下のコマンドを使用して ConfigMap を作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create configmap my-cm --from-literal=my-configmap-key="configmap content"
oc create configmap my-cm --from-literal=my-configmap-key="configmap content"
手順
OpenShift クラスターに保存されている ConfigMap を参照する Camel K インテグレーションを作成します。
たとえば、以下のインテグレーション (
Resource ConfigmapRoute.java
) はmy- configmap-key
が含まれるmy-cm
という名前の ConfigMap を参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ResourceConfigmapRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/etc/camel/resources/my-cm/?fileName=my-configmap-key&noop=true&idempotent=false") .log("resource file content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ResourceConfigmapRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/etc/camel/resources/my-cm/?fileName=my-configmap-key&noop=true&idempotent=false") .log("resource file content is: ${body}"); } }
インテグレーションを実行し、
--resource
オプションを使用してデフォルトの/etc/camel/resources/
ディレクトリーの ConfigMap ファイルをマテリアル化し、実行中のインテグレーションで使用できるようにします。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --resource configmap:my-cm ResourceConfigmapRoute.java --dev
kamel run --resource configmap:my-cm ResourceConfigmapRoute.java --dev
インテグレーションが起動すると、Camel K Operator は ConfigMap の内容でボリュームをマウントします (例:
my-configmap-key
)。
注記: クラスターでまだ利用できない ConfigMap を指定した場合、Integration は待機し ConfigMap が利用可能になって初めて起動します。
4.2.3.3. リソースとしてのシークレットの指定
設定情報が含まれる OpenShift シークレットがあり、1 つ以上のインテグレーションが利用できるリソースとしてマテリアル化する必要がある場合は、--resource <secret>
構文を使用します。
前提条件
- Camel K 開発環境の設定
OpenShift クラスター上に 1 つ以上のシークレットファイルがある。たとえば、以下のコマンドを使用してシークレットを作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic my-sec --from-literal=my-secret-key="very top secret"
oc create secret generic my-sec --from-literal=my-secret-key="very top secret"
手順
OpenShift クラスターに保存されているシークレットを参照する Camel K インテグレーションを作成します。
たとえば、以下のインテグレーション (名前:
ResourceSecretRoute.java
) はmy-sec
シークレットを参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ResourceSecretRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/etc/camel/resources/my-sec/?fileName=my-secret-key&noop=true&idempotent=false") .log("resource file content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ResourceSecretRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/etc/camel/resources/my-sec/?fileName=my-secret-key&noop=true&idempotent=false") .log("resource file content is: ${body}"); } }
インテグレーションを実行し、
--resource
オプションを使用してデフォルトの/etc/camel/resources/
ディレクトリーの Secret ファイルをマテリアル化し、実行中のインテグレーションで使用できるようにします。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --resource secret:my-sec ResourceSecretRoute.java --dev
kamel run --resource secret:my-sec ResourceSecretRoute.java --dev
インテグレーションが起動すると、Camel K Operator はシークレットの内容でボリュームをマウントします (例:
my-sec
)。
注記: クラスターでまだ利用できないシークレットを指定した場合、Integration は待機しシークレットが利用可能になって初めて起動します。
4.2.3.4. リソースの宛先パスの指定
/etc/camel/resources/
ディレクトリーは、--resource
オプションで指定するリソースをマウントするためのデフォルトの場所です。リソースをマウントする別のディレクトリーを指定する必要がある場合は、--resourece @path
構文を使用します。
前提条件
- Camel K 開発環境の設定
- 1 つ以上の設定プロパティーが含まれるファイル、ConfigMap、またはシークレットがある。
手順
設定プロパティーが含まれるファイル、ConfigMap、またはシークレットを参照する Camel K インテグレーションを作成します。たとえば、以下のインテグレーション (名前:
ResourceFileLocationRoute.java
) はmyprops
ファイルを参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ResourceFileLocationRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/tmp/?fileName=input.txt&noop=true&idempotent=false") .log("resource file content is: ${body}"); } }
import org.apache.camel.builder.RouteBuilder; public class ResourceFileLocationRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/tmp/?fileName=input.txt&noop=true&idempotent=false") .log("resource file content is: ${body}"); } }
インテグレーションを実行し、
@path
構文で--resource
オプションを使用して、リソースの内容 (ファイル、ConfigMap、または Secret のいずれか) をマウントする場所を指定します。たとえば、以下のコマンドは、
/tmp
ディレクトリーを使用してinput.txt
ファイルをマウントするように指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --resource file:resources-data.txt@/tmp/input.txt ResourceFileLocationRoute.java --dev
kamel run --resource file:resources-data.txt@/tmp/input.txt ResourceFileLocationRoute.java --dev
インテグレーションの Pod で、ファイル (例:
input.txt
) が正しい場所 (例:tmp
ディレクトリー内) にマウントされていることを確認します。たとえば、以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec <pod-name> -- cat /tmp/input.txt
oc exec <pod-name> -- cat /tmp/input.txt
4.2.3.5. ConfigMap またはシークレットデータの絞り込み
ConfigMap またはシークレットの作成時に、複数の情報ソースを指定できます。たとえば、以下のコマンドは、2 つのソースから ConfigMap (my-cm-multi
という名前) を作成します。
oc create configmap my-cm-multi --from-literal=my-configmap-key="configmap content" --from-literal=my-configmap-key-2="another content"
oc create configmap my-cm-multi --from-literal=my-configmap-key="configmap content" --from-literal=my-configmap-key-2="another content"
--resource
オプションでインテグレーションを実行すると、ConfigMap またはシークレットは複数のソースで作成され、デフォルトでは両方のソースがマテリアル化されます。
ConfigMap またはシークレットからリカバリーする情報量を制限する場合は、ConfigMap またはシークレット名の後に --resource
オプションの /key 表記を指定できます。例: --resource configmap:my-cm/my-key
または --resource secret:my-secret/my-key
--resource configmap
または --resource secret
オプションの後に /key 表記を使用して、インテグレーションが取得する情報量を 1 つのソースに制限することができます。
前提条件
- Camel K 開発環境の設定
- 複数のソースからの値を保持する ConfigMap またはシークレットがある。
手順
ConfigMap またはシークレットのいずれかのリソースだけからの設定値を使用するインテグレーションを作成します。たとえば、以下のインテグレーション (
ResourceConfigmapKeyLocationRoute.java
という名称) はmy-cm-multi
ConfigMap を参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow import org.apache.camel.builder.RouteBuilder; public class ResourceConfigmapKeyLocationRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/tmp/app/data/?fileName=my-configmap-key-2&noop=true&idempotent=false") .log("resource file content is: ${body} consumed from ${header.CamelFileName}"); } }
import org.apache.camel.builder.RouteBuilder; public class ResourceConfigmapKeyLocationRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:/tmp/app/data/?fileName=my-configmap-key-2&noop=true&idempotent=false") .log("resource file content is: ${body} consumed from ${header.CamelFileName}"); } }
インテグレーションを実行し、
@path
構文で--resource
オプションを使用して、ソースの内容 (ファイル、ConfigMap、または Secret のいずれか) をマウントする場所を指定します。たとえば、以下のコマンドは ConfigMap 内に含まれるソースのいずれか (
my-configmap-key-2@
) のみを使用し、/tmp/app/data
ディレクトリーを使用してマウントすることを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --resource configmap:my-cm-multi/my-configmap-key-2@/tmp/app/data ResourceConfigmapKeyLocationRoute.java --dev
kamel run --resource configmap:my-cm-multi/my-configmap-key-2@/tmp/app/data ResourceConfigmapKeyLocationRoute.java --dev
インテグレーションの Pod で、1 つのファイル (例:
my-configmap-key-2
) だけが正しい場所 (例:/tmp/app/data
) にマウントされていることを確認します。たとえば、以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec <pod-name> -- cat /tmp/app/data/my-configmap-key-2
oc exec <pod-name> -- cat /tmp/app/data/my-configmap-key-2