6.3. Camel K 平台特征
6.3.1. builder Trait
builder trait 在内部用于决定构建和配置 IntegrationKit 的最佳策略。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
builder trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.1.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait builder.[key]=[value] --trait builder.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 对支持它的构建组件(如 OpenShift 构建 Pod)启用详细日志记录。不支持 Kaniko 和 Buildah。 |
|
| 要提供给构建任务的属性列表 |
6.3.2. 容器 Trait
Container trait 可用于配置运行集成的容器的属性。
它还为与容器关联的服务提供配置。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
容器特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.2.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait container.[key]=[value] --trait container.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| |
|
| 需要的最小 CPU 量。 |
|
| 需要的最小内存量。 |
|
| 需要的最大 CPU 量。 |
|
| 需要的最大内存量。 |
|
| 用于通过 kubernetes Service 启用/禁用风险。 |
|
|
配置容器公开的不同端口(默认为 |
|
|
为容器公开的端口配置不同的端口名称(默认 |
|
|
要配置要在哪个服务端口下公开容器端口(默认为 |
|
|
要配置要在哪个服务端口名称下公开容器端口(默认 |
|
|
主容器名称。默认名为 |
|
| 主容器镜像 |
|
|
容器中的 ProbesEnabled 启用/禁用探测(默认为 |
|
| 容器启动后的秒数,然后再启动存活度探测。 |
|
| 探测超时的秒数。适用于存活度探测。 |
|
| 执行探测的频率。适用于存活度探测。 |
|
| 在失败后,探测被视为成功的最低连续成功。适用于存活度探测。 |
|
| 在成功后,探测被视为失败的连续最小失败。适用于存活度探测。 |
|
| 容器启动后的秒数,然后再启动就绪度探测。 |
|
| 探测超时的秒数。适用于就绪度探测。 |
|
| 执行探测的频率。适用于就绪度探测。 |
|
| 在失败后,探测被视为成功的最低连续成功。适用于就绪度探测。 |
|
| 在成功后,探测被视为失败的连续最小失败。适用于就绪度探测。 |
6.3.3. Camel Trait
Camel trait 可用于配置 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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
6.3.4. 依赖项 Trait
依赖项特征在内部用于根据用户希望运行的集成自动添加运行时依赖项。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
依赖项特征是 一个平台特征 :禁用它可能会破坏平台功能。
6.3.4.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait dependencies.[key]=[value] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
6.3.5. deployer Trait
deployer trait 可用于显式选择要部署集成的高级别资源。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
deployer trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.5.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait deployer.[key]=[value] --trait deployer.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
|
在为运行的集成创建资源时,允许明确从 |
6.3.6. Deployment Trait
Deployment 特征负责生成 Kubernetes 部署,以确保集成在集群中运行。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
部署特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.6.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait deployment.[key]=[value] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
6.3.7. 环境 Trait
环境特征在内部用于注入集成容器中的标准环境变量,如 NAMESPACE
、POD_NAME
等等。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
environment trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.7.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait environment.[key]=[value] --trait environment.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
|
启用 |
6.3.8. 错误处理程序 Trait
error-handler 是一个平台特征,用于将 Error Handler 源注入集成运行时。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
error-handler trait 是一个 platform trait :禁用它可能会破坏平台功能。
6.3.8.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait error-handler.[key]=[value] --trait error-handler.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 在应用程序属性中提供或找到的错误处理器 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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 激活远程调试,以便调试器可以附加到 JVM,例如,使用端口转发 |
|
| 在加载主类前立即挂起目标 JVM |
|
|
打印命令在容器日志中使用了启动 JVM (默认为 |
|
|
要侦听新启动的 JVM 的传输地址(默认为 |
|
| JVM 选项列表 |
|
|
其他 JVM 类路径(使用 |
6.3.9.2. 例子
包括一个到
Integration
的额外类路径:$ kamel run -t jvm.classpath=/path/to/my-dependency.jar:/path/to/another-dependency.jar ...
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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 自动注入所有引用的 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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 始终在同一节点上并置集成的多个副本(默认为 false)。 |
|
| 不得在同一节点上并置集成的多个副本(默认为 false)。 |
|
| 根据节点上的标签,定义集成 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)" ...
要调度每个节点的单一集成 pod (使用
Exists
运算符):$ kamel run -t affinity.pod-anti-affinity-labels="camel.apache.org/integration" ...
将集成 pod 与其他集成 pod 并置:
$ kamel run -t affinity.pod-affinity-labels="camel.apache.org/integration in(it1, it2)" ...
*-labels
选项遵循 标签选择器 中的 要求。它们可以是多评估,然后要求列表是 AND,例如,调度每个节点的一个集成 pod,而与 Camel K 操作器 pod 不共存:
$ 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 specs 创建集成。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
openapi trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.12.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait openapi.[key]=[value] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 要传输的注解集合 |
|
| 要传输的标签集合 |
6.3.14. 平台 Trait
platform trait 是一个基础特征,用于为集成分配集成平台。
如果缺少平台,则允许特征创建默认平台。此功能在不需要为平台提供自定义配置的情况下特别有用(例如,在 OpenShift 中,默认设置可以正常工作,因为嵌入的容器镜像 registry)。
此特征位于以下配置集: Kubernetes、Knative、OpenShift。
platform trait 是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.14.1. 配置
运行与 CLI 的任何集成时可以指定特征属性:
$ kamel run --trait platform.[key]=[value] --trait platform.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 在缺少平台时创建默认(空)平台。 |
|
| 指明在全局 operator (默认值 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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
|
Quarkus 软件包类型,可以是 |
6.3.15.2. 支持的 Camel 组件
Camel K 只支持作为 Camel Quarkus 扩展开箱即用的 Camel 组件。
6.3.15.3. 例子
6.3.15.3.1. 自动推出到原生集成的部署
虽然编译到原生可执行文件会生成集成,这些集成在运行时启动速度并消耗较少的内存,但构建过程会消耗大量时间,而打包到传统 Java 应用程序的时间要长。
为了组合两个领域的最佳选择,可以将 Quarkus 特征配置为在运行集成时并行运行传统和原生构建,例如:
$ kamel run -t quarkus.package-type=fast-jar -t quarkus.package-type=native ...
集成 Pod 将在 fast-jar
构建完成后立即运行,并在 原生
构建完成后立即触发对 原生
镜像的推出部署部署,而不会中断服务。