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 操作器处理并作为运行时属性解析的配置值。您可以在本地文本文件、OpenShift ConfigMap 或 OpenShift secret 中提供配置值。
- 集成启动时没有作为属性文件解析的资源信息。您可以在本地文本文件、二进制文件、OpenShift ConfigMap 或 OpenShift secret 中提供资源信息。
使用以下 kamel run
选项:
--property
使用
--property
选项直接在命令行中指定运行时属性,或者引用 Java Ifproperties
文件。Camel K operator 将属性文件的内容附加到正在运行的集成的user.properties
文件中。--config
使用
--config
选项提供您希望 Camel K 操作器在集成启动时处理并作为运行时属性的配置值。您可以提供一个本地文本文件(1 MiB 最大文件大小)、ConfigMap (3MB)或 Secret (3MB)。该文件必须是 UTF-8 资源。材料化文件(在您从您提供的文件集成启动时生成的)在类路径级别上提供,以便您可在集成代码中引用它,而无需提供精确的位置。
注: 如果您需要提供非 UTF-8 资源(例如,二进制文件),请使用
--resource
选项。--resource
使用
--resource
选项为集成提供在运行时访问的资源。您可以提供本地文本或二进制文件(1 MiB 最大文件大小)、ConfigMap (最大 3MB)或 Secret (最大 3MB)。另外,您可以指定为资源分类的文件目的地。例如,如果要设置 HTTPS 连接,请使用--resource
选项提供指定位置中预期的 SSL 证书(二进制文件)。Camel K 操作器不会解析属性的资源,且不会将资源添加到 classpath 中。(如果您想要将资源添加到 classpath 中,您可以在集成中使用 JVM 特征 )。
4.2.1. 提供运行时属性
您可以在命令行中直接指定运行时属性,或使用 kamel run
命令的 --property
选项直接指定 Java If properties
文件。
当您运行与 --property
选项集成时,Camel K operator 会将属性附加到正在运行的集成的 user.properties
文件中。
4.2.1.1. 在命令行中提供运行时属性
您可以在运行时在命令行中配置 Camel K 集成的属性。当您使用属性占位符在集成中定义属性时,例如 {{my.message}}
,您可以在命令行中指定属性值,例如 --property my.message=Hello
。您可以在单个命令中指定多个属性。
先决条件
流程
开发使用属性的 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>
另外,您可以使用
--p
简写表示法(代替--property
):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 集成配置多个属性。当您使用属性占位符在集成中定义属性时,例如 {{my.items}}
,您可以使用属性文件在命令行中指定属性值,如 --p 文件 my-integration.properties
。
前提条件
流程
创建集成属性文件。以下示例来自名为
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>
另外,您可以使用
--p
简写表示法(代替--property
):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 操作器处理并解析为运行时属性的配置值。您可以在本地文本(UTF-8)文件、OpenShift ConfigMap 或 OpenShift secret 中提供配置值。
运行集成时,Camel K operator 会对提供的文件进行分类,并将其添加到 classpath 中,以便您可以引用集成代码中的配置值,而无需提供准确的位置。
4.2.2.1. 指定文本文件
如果您有包含配置值的 UTF-8 文本文件,您可以使用 --config file:/path/to/file
选项使文件在运行的集成类路径上可用(具有相同文件名)。
先决条件
- 设置 Camel K 开发环境
您有一个或者多个(非二进制)文本文件,其中包含配置值。
例如,创建一个名为
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,且您需要对 ConfigMap 进行组织,以便 Camel K 集成可用,请使用 --config configmap:<configmap-name> 语法。
先决条件
- 设置 Camel K 开发环境
您已在 OpenShift 集群中存储了一个或多个 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. 指定 Secret
您可以使用 OpenShift Secret 来安全地包含配置信息。要对 secret 进行资料化,使其可用于 Camel K 集成,您可以使用 --config secret
语法。
先决条件
- 设置 Camel K 开发环境
您已在 OpenShift 集群中存储了一个或多个 Secret。
例如,您可以使用以下命令创建 Secret:
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
的 Secret 中的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
选项来定位 Secret,使其可用于正在运行的集成。例如: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 会使用 Secret 的内容挂载 OpenShift 卷。
4.2.2.4. 引用 ConfigMap 或 Secret 中包含的属性
当您运行集成并使用 --config
选项指定 ConfigMap 或 Secret 时,Camel K operator 会解析 ConfigMap 或 Secret 作为运行时属性文件。在集成中,您可以在引用任何其他运行时属性时引用属性。
前提条件
流程
创建包含属性的文本文件。
例如,创建一个名为
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 或 Secret。
例如,使用以下命令从 my.properties 文件创建 secret:
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
在集成中,请参阅 Secret 中定义的属性。
例如,以下集成(名为
ConfigSecretPropertyRoute.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
属性的 Secret。例如:
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 或 Secret 获取的配置值
ConfigMap 和 Secret 可以保存多个源。例如,以下命令从两个源创建一个 secret (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
标记来限制集成检索的信息数量。
先决条件
- 设置 Camel K 开发环境
- 您有一个 ConfigMap 或包含多个源的 Secret。
流程
创建一个集成,它只使用来自 ConfigMap 或 Secret 中的一个源的配置值。
例如,以下集成(
ConfigSecretKeyRoute.java
)仅使用来自my-sec-multi
secret 中的一个源的属性。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 (3MB)或 Secret (3MB)。您可以选择指定资源分类的文件目的地。例如,如果要设置 HTTPS 连接,您可以使用 --resource 选项,因为您必须提供一个 SSL 证书,它是已知位置中预期的二进制文件。
当您使用 --resource
选项时,Camel K operator 不会解析查找运行时属性的资源,且不会将资源添加到 classpath 中。(如果您想要将资源添加到 classpath 中,您可以使用 JVM 特征。
4.2.3.1. 将文本或二进制文件指定为资源
如果您有包含配置值的文本或二进制文件,您可以使用 --resource file:/path/to/file
选项来定位该文件。默认情况下,Camel K 操作器将材料化文件复制到 /etc/camel/resources/
目录中。另外,您可以指定不同的目标目录,如 为资源指定目标路径 中所述。
先决条件
- 设置 Camel K 开发环境
- 您有一个或者多个包含配置属性的文本或二进制文件。
流程
创建一个 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 集群中存储了一个或多个 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"
流程
创建一个 Camel K 集成来引用存储在 OpenShift 集群上的 ConfigMap。
例如,以下集成(名为
ResourceConfigmapRoute.java
)引用名为my-cm
的 ConfigMap,其中包含my-configmap-key
。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
选项将 ConfigMap 文件整理到默认的/etc/camel/resources/
目录中,以便其可用于正在运行的集成。例如:
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 操作器使用 ConfigMap 的内容挂载卷(如
my-configmap-key
)。
注: 如果您指定了集群中还没有可用的 ConfigMap,则 Integration 只会在 ConfigMap 可用后等待并启动。
4.2.3.3. 将 Secret 指定为资源
如果您有包含配置信息的 OpenShift Secret,并且您需要将它作为可用于一个或多个集成的资源进行定位,请使用 --resource <secret>
; 语法。
先决条件
- 设置 Camel K 开发环境
在 OpenShift 集群中存储了一个或多个 Secret 文件。例如,您可以使用以下命令创建 Secret:
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"
流程
创建一个 Camel K 集成来引用存储在 OpenShift 集群中的 Secret。
例如,以下集成(名为
ResourceSecretRoute.java
)引用了my-sec
Secret: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
选项将 Secret 整理到默认的/etc/camel/resources/
目录中,使其可用于正在运行的集成。例如:
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 会挂载带有 Secret 内容的卷(如
my-sec
)。
注: 如果您指定了集群中还没有可用的 Secret,则 Integration 只会在 Secret 可用时等待并启动。
4.2.3.4. 为资源指定目标路径
/etc/camel/resources/
目录是挂载您使用 --resource
选项指定的资源的默认位置。如果您需要指定挂载资源的不同目录,请使用 --resource @path
语法。
先决条件
- 设置 Camel K 开发环境
- 您有一个包含一个或多个配置属性的文件、ConfigMap 或 Secret。
流程
创建一个引用包含配置属性的文件、ConfigMap 或 Secret 的 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 或 Secret 数据
在创建 ConfigMap 或 Secret 时,您可以指定多个信息源。例如,以下命令从两个源创建一个 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 或 Secret,默认是两个源。
如果要限制从 ConfigMap 或 Secret 恢复的信息数量,您可以在 ConfigMap 或 Secret 名称后指定 --resource
选项的 /key 标记。例如,-- resource configmap:my-cm/my-key
或 --resource secret:my-secret/my-key
。
您可以在 --resource configmap
或 --resource secret
选项后使用 /key 标记来限制集成检索的信息数量。
先决条件
- 设置 Camel K 开发环境
- 您有一个 ConfigMap 或 Secret,其中包含来自多个源的值。
流程
创建一个集成,它使用来自 ConfigMap 或 Secret 中的其中一个资源的配置值。例如,以下集成(名为
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,以验证是否仅将一个文件(如
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