Red Hat Camel K is no longer supported.
As of June 30, 2025, Red Hat build of Camel K has reached End of Life. The suggested replacements is Red Hat build of Apache Camel. For details about moving, see the Camel K to Camel Quarkus migration guide.6.3. Camel K 平台特征
6.3.1. builder Trait 复制链接链接已复制到粘贴板!
builder 特征用于在内部决定构建和配置 IntegrationKits 的最佳策略。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
builder 特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.1.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait builder.[key]=[value] --trait builder.[key2]=[value2] Integration.java
$ kamel run --trait builder.[key]=[value] --trait builder.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 在支持它的构建组件(如 OpenShift 构建 pod)上启用详细日志记录。不支持 Kaniko 和 Buildah。 |
|
|
| 为构建任务提供的属性列表 |
6.3.2. 容器 Trait 复制链接链接已复制到粘贴板!
容器特征可用于配置运行集成的容器的属性。
它还为与容器关联的服务提供配置。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
容器特征是一种 平台特征 :禁用它可能会破坏平台功能。
6.3.2.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait container.[key]=[value] --trait container.[key2]=[value2] Integration.java
$ kamel run --trait container.[key]=[value] --trait container.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| |
|
|
| 所需的最小 CPU 量。 |
|
|
| 所需的最小内存量。 |
|
|
| 所需 CPU 的最大数量。 |
|
|
| 需要的最大内存量。 |
|
|
| 用于通过 kubernetes Service 启用/禁用暴露。 |
|
|
|
要配置容器公开的不同端口(默认为 |
|
|
|
要为容器公开的端口(默认 |
|
|
|
要配置容器端口要公开的服务端口(默认为 80) |
|
|
|
要配置要在哪个服务端口名称下公开容器端口(默认 |
|
|
|
主容器名称。默认情况下,它是命名的 |
|
|
| 主容器镜像 |
|
|
|
容器上的 ProbesEnabled enable/disable 探测(默认为 |
6.3.3. Camel Trait 复制链接链接已复制到粘贴板!
Camel 特征可用于配置 Apache Camel K 运行时和相关库的版本,无法禁用它。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
camel trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.3.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait camel.[key]=[value] --trait camel.[key2]=[value2] Integration.java
$ kamel run --trait camel.[key]=[value] --trait camel.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
6.3.4. 依赖项 Trait 复制链接链接已复制到粘贴板!
Dependencies trait 在内部用于根据用户要运行的集成自动添加运行时依赖项。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
依赖项特征是一种 平台特征 :禁用它可能会破坏平台功能。
6.3.4.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait dependencies.[key]=[value] Integration.java
$ kamel run --trait dependencies.[key]=[value] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
6.3.5. deployer Trait 复制链接链接已复制到粘贴板!
deployer 特征可用于显式选择部署集成的高级别资源类型。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
deployer trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.5.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait deployer.[key]=[value] --trait deployer.[key2]=[value2] Integration.java
$ kamel run --trait deployer.[key]=[value] --trait deployer.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
|
在为运行的集成创建资源时,允许明确从 |
6.3.6. 部署 Trait 复制链接链接已复制到粘贴板!
Deployment 特征负责生成 Kubernetes 部署,以确保集成在集群中运行。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
部署特征是一种 平台特征 :禁用它可能会破坏平台功能。
6.3.6.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait deployment.[key]=[value] Integration.java
$ kamel run --trait deployment.[key]=[value] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
6.3.7. 环境垃圾 复制链接链接已复制到粘贴板!
环境特征用于在集成容器中注入标准环境变量,如 NAMESPACE、POD_NAME 等等。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
环境特征是一种 平台特征 :禁用它可能会破坏平台功能。
6.3.7.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait environment.[key]=[value] --trait environment.[key2]=[value2] Integration.java
$ kamel run --trait environment.[key]=[value] --trait environment.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
|
启用 |
6.3.8. 错误处理程序垃圾 复制链接链接已复制到粘贴板!
error-handler 是一个平台特征,用于将 Error Handler 源注入集成运行时。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
error-handler trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.8.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait error-handler.[key]=[value] --trait error-handler.[key2]=[value2] Integration.java
$ kamel run --trait error-handler.[key]=[value] --trait error-handler.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 在应用程序属性中提供或找到的错误 handler ref 名称 |
6.3.9. JVM Trait 复制链接链接已复制到粘贴板!
JVM 特征用于配置运行集成的 JVM。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
jvm trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.9.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait jvm.[key]=[value] --trait jvm.[key2]=[value2] Integration.java
$ kamel run --trait jvm.[key]=[value] --trait jvm.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 激活远程调试,以便调试器可以使用端口转发附加到 JVM,如 |
|
|
| 在载入主类前立即挂起目标 JVM |
|
|
|
打印在容器日志中使用 start JVM 的命令(默认为 |
|
|
|
要侦听新启动的 JVM 的传输地址(默认为 |
|
|
| JVM 选项列表 |
|
|
|
其他 JVM 类路径(使用 |
6.3.9.2. 例子 复制链接链接已复制到粘贴板!
包括一个到
集成的额外类路径:kamel run -t jvm.classpath=/path/to/my-dependency.jar:/path/to/another-dependency.jar ...
$ kamel run -t jvm.classpath=/path/to/my-dependency.jar:/path/to/another-dependency.jar ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.10. kamelets Trait 复制链接链接已复制到粘贴板!
kamelets trait 是一个平台特征,用于将 Kamelets 注入集成运行时。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
kamelets trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.10.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait kamelets.[key]=[value] --trait kamelets.[key2]=[value2] Integration.java
$ kamel run --trait kamelets.[key]=[value] --trait kamelets.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 自动注入所有引用的 Kamelets 及其默认配置(默认启用) |
|
|
| 以逗号分隔的 Kamelet 名称列表,以加载到当前集成 |
6.3.11. nodeAffinity Trait 复制链接链接已复制到粘贴板!
NodeAffinity 特征允许您通过以下路径限制集成 pod 有资格调度到的节点:
- 基于节点上的标签,或具有 pod 关联性和反关联性的标签。
- 基于已在节点上运行的 pod 上的标签。
这个特征默认为禁用。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
6.3.11.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait affinity.[key]=[value] --trait affinity.[key2]=[value2] Integration.java
$ kamel run --trait affinity.[key]=[value] --trait affinity.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 始终在同一节点上并置集成的多个副本(默认为 false)。 |
|
|
| 切勿将集成的多个副本在同一节点上并置(默认 false)。 |
|
|
| 根据节点上的标签,定义集成 pod 有资格调度到的节点集合。 |
|
|
| 定义一组 pod (即与标签选择器(相对于给定命名空间)匹配的 pod,该 pod 应该与集成 pod 共存。 |
|
|
| 定义一组 pod (即与标签选择器(相对于给定命名空间)匹配的 pod,该 pod 不应与集成 pod 共存。 |
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)" ...
$ kamel run -t affinity.node-affinity-labels="kubernetes.io/hostname in(node-66-50.hosted.k8s.tld)" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要每个节点调度单个集成 pod (使用
Exists运算符):kamel run -t affinity.pod-anti-affinity-labels="camel.apache.org/integration" ...
$ kamel run -t affinity.pod-anti-affinity-labels="camel.apache.org/integration" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将集成 pod 与其他集成 pod 共存:
kamel run -t affinity.pod-affinity-labels="camel.apache.org/integration in(it1, it2)" ...
$ kamel run -t affinity.pod-affinity-labels="camel.apache.org/integration in(it1, it2)" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
*-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" ...
$ kamel run -t affinity.pod-anti-affinity-labels="camel.apache.org/integration" -t affinity.pod-anti-affinity-labels="camel.apache.org/component=operator" ...
如需更多信息,请参阅有关将 Pod 分配给节点 的官方 Kubernetes 文档。
6.3.12. OpenAPI Trait 复制链接链接已复制到粘贴板!
OpenAPI DSL 特征在内部用于从 OpenAPI 规格创建集成。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
openapi trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.12.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait openapi.[key]=[value] Integration.java
$ kamel run --trait openapi.[key]=[value] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
6.3.13. 所有者 Trait 复制链接链接已复制到粘贴板!
Owner trait 确保所有创建的资源都属于正在创建的集成,并将集成上注解和标签传输到这些拥有的资源。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
owner trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.13.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait owner.[key]=[value] --trait owner.[key2]=[value2] Integration.java
$ kamel run --trait owner.[key]=[value] --trait owner.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 要传输的注解集合 |
|
|
| 要传输的标签集合 |
6.3.14. 平台垃圾 复制链接链接已复制到粘贴板!
平台特征是一种基本特征,用于为集成分配集成平台。
如果缺少平台,则特征可以创建默认平台。此功能在不需要为平台提供自定义配置时特别有用(例如,在 OpenShift 中是默认设置工作,因为存在嵌入式容器镜像 registry)。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
平台特征是一种 平台特征 :禁用它可能会破坏平台功能。
6.3.14.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait platform.[key]=[value] --trait platform.[key2]=[value2] Integration.java
$ kamel run --trait platform.[key]=[value] --trait platform.[key2]=[value2] Integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
| 当缺少平台时,要创建一个默认(空)平台。 |
|
|
| 表示在全局运算符(默认为 true)时是否应该全局创建平台。 |
|
|
| 如果可以创建默认平台(仅可在 OpenShift 上创建),以便自动检测环境。 |
6.3.15. Quarkus Trait 复制链接链接已复制到粘贴板!
Quarkus trait 激活 Quarkus 运行时。
它会被默认启用。
编译到原生可执行文件,即使用 package-type=native 时,仅支持 kamelets 和 YAML 集成。它还需要至少 4GiB 内存,因此运行原生构建的 Pod (根据 Operator Pod)或构建 Pod (取决于为平台配置的构建策略)必须具有足够的可用内存。
这个特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
quarkus trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.15.1. 配置 复制链接链接已复制到粘贴板!
在与 CLI 集成时,可以指定特征属性:
kamel run --trait quarkus.[key]=[value] --trait quarkus.[key2]=[value2] integration.java
$ kamel run --trait quarkus.[key]=[value] --trait quarkus.[key2]=[value2] integration.java
可用的配置选项如下:
| 属性 | 类型 | 描述 |
|---|---|---|
|
|
| 可用于启用或禁用特征。所有特征共享此 common 属性。 |
|
|
|
Quarkus 软件包类型,可以是 |
6.3.15.2. 支持的 Camel 组件 复制链接链接已复制到粘贴板!
Camel K 只支持作为 Camel Quarkus 扩展开箱即用的 Camel 组件。
6.3.15.3. 例子 复制链接链接已复制到粘贴板!
6.3.15.3.1. 自动 Rollout Deployment 到原生集成 复制链接链接已复制到粘贴板!
虽然对原生可执行文件的编译会生成集成,这些集成在运行时启动速度和消耗较少的内存,但构建过程会大量资源,且比打包到传统 Java 应用程序所需的时间要长。
为了组合两全其美,可以将 Quarkus 特征配置为在运行集成时并行运行传统和原生构建,例如:
kamel run -t quarkus.package-type=fast-jar -t quarkus.package-type=native ...
$ kamel run -t quarkus.package-type=fast-jar -t quarkus.package-type=native ...
当 fast-jar 构建完成后,集成 pod 就会运行,并在 原生 构建完成后触发对 原生 镜像的 rollout 部署,且不会中断服务。