6.3. Camel K 平台特征
6.3.1. 构建器 Trait
builder 特征用于决定构建和配置 IntegrationKits 的最佳策略。
此特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
builder 特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.1.1. 配置
可在运行任何 CLI 集成时指定特征属性:
$ kamel run --trait builder.[key]=[value] --trait builder.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 对支持它的构建组件(如 OpenShift 构建 pod)启用详细日志记录。不支持 Kaniko 和 Buildah。 |
|
| 要提供给构建任务的属性列表 |
6.3.2. 容器垃圾
容器特征可用于配置运行集成的容器的属性。
它还为与容器关联的服务提供配置。
此特征包括在以下配置集中: 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. 依赖项垃圾
Dependencies 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。
部署器特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.5.1. 配置
可在运行任何 CLI 集成时指定特征属性:
$ kamel run --trait deployer.[key]=[value] --trait deployer.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
|
在为运行的集成创建资源时,允许明确从 |
6.3.6. 部署垃圾
Deployment trait 负责生成 Kubernetes 部署,以确保集成将在集群中运行。
此特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
部署特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.6.1. 配置
可在运行任何 CLI 集成时指定特征属性:
$ kamel run --trait deployment.[key]=[value] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
|
启用 |
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
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 错误处理程序 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. 例子
包括一个到
集成
的额外类路径:$ 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. 所有者垃圾箱
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. 平台垃圾
平台特征是一个基本特征,用于为集成分配集成平台。
如果缺少平台,则允许特征创建默认平台。此功能在不需要为平台提供自定义配置的情况下特别有用(例如,在 OpenShift 中,默认设置可以正常工作,因为有一个嵌入式容器镜像 registry)。
此特征包括在以下配置集中: Kubernetes、Knative、OpenShift。
平台特征是一个 平台特征 :禁用它可能会破坏平台功能。
6.3.14.1. 配置
可在运行任何 CLI 集成时指定特征属性:
$ kamel run --trait platform.[key]=[value] --trait platform.[key2]=[value2] Integration.java
可用的配置选项如下:
属性 | 类型 | 描述 |
---|---|---|
|
| 可用于启用或禁用特征。所有特征共享这个通用属性。 |
|
| 在缺少平台时创建默认(空)平台。 |
|
| 表示在全局运算符时是否应该全局创建平台(默认 true)。 |
|
| 要在创建默认平台时从环境中自动检测(仅可在 OpenShift 上创建)。 |
6.3.15. Quarkus Trait
Quarkus 特征激活 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
构建完成后立即运行,并在 原生
构建完成后触发对 原生
镜像的推出部署,而不会中断服务。