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

可用的配置选项如下:

属性类型描述

builder.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

builder.verbose

bool

对支持它的构建组件(如 OpenShift 构建 pod)启用详细日志记录。不支持 Kaniko 和 Buildah。

builder.properties

[]string

要提供给构建任务的属性列表

6.3.2. 容器垃圾

容器特征可用于配置运行集成的容器的属性。

它还为与容器关联的服务提供配置。

此特征包括在以下配置集中: Kubernetes、Knative、OpenShift

警告

容器特征是一个 平台特征 :禁用它可能会破坏平台功能。

6.3.2.1. 配置

可在运行任何 CLI 集成时指定特征属性:

$ kamel run --trait container.[key]=[value] --trait container.[key2]=[value2] Integration.java

可用的配置选项如下:

属性类型描述

container.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

container.auto

bool

 

container.request-cpu

字符串

需要的最小 CPU 量。

container.request-memory

字符串

需要的最小内存量。

container.limit-cpu

字符串

需要的最大 CPU 量。

container.limit-memory

字符串

需要的最大内存量。

container.expose

bool

可以用来通过 kubernetes Service 启用/禁用暴露。

container.port

int

配置容器公开的不同端口(默认 8080)。

container.port-name

字符串

要为容器公开的端口配置不同的端口名称(默认值 http)。

container.service-port

int

要配置在哪些服务端口上公开容器端口(默认值 80)

container.service-port-name

字符串

要配置要公开的容器端口名称下的服务端口名称(默认值 http)。

container.name

字符串

主容器名称。默认情况下,它被命名为 集成

container.image

字符串

主容器镜像

container.probes-enabled

bool

ProbesEnabled 在容器中启用/禁用探测(默认值为 false

container.liveness-initial-delay

int32

在启动存活度探测前容器启动后的秒数。

container.liveness-timeout

int32

探测超时的秒数。适用于存活度探测。

container.liveness-period

int32

执行探测的频率。适用于存活度探测。

container.liveness-success-threshold

int32

在失败后,探测的连续成功才被视为成功。适用于存活度探测。

container.liveness-failure-threshold

int32

成功后探测被视为失败的最小连续失败。适用于存活度探测。

container.readiness-initial-delay

int32

在启动就绪度探测前容器启动后的秒数。

container.readiness-timeout

int32

探测超时的秒数。适用于就绪度探测。

container.readiness-period

int32

执行探测的频率。适用于就绪度探测。

container.readiness-success-threshold

int32

在失败后,探测的连续成功才被视为成功。适用于就绪度探测。

container.readiness-failure-threshold

int32

成功后探测被视为失败的最小连续失败。适用于就绪度探测。

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

可用的配置选项如下:

属性类型描述

camel.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

6.3.4. 依赖项垃圾

Dependencies trait 内部用于根据用户想要运行的集成自动添加运行时依赖项。

此特征包括在以下配置集中: Kubernetes、Knative、OpenShift

警告

依赖项特征是一个 平台特征 :禁用它可能会破坏平台功能。

6.3.4.1. 配置

可在运行任何 CLI 集成时指定特征属性:

$ kamel run --trait dependencies.[key]=[value] Integration.java

可用的配置选项如下:

属性类型描述

dependencies.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

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

可用的配置选项如下:

属性类型描述

deployer.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

deployer.kind

字符串

在为运行的集成创建资源时,允许明确从 deployment, cron-jobknative-service 中选择需要的部署类型。

6.3.6. 部署垃圾

Deployment trait 负责生成 Kubernetes 部署,以确保集成将在集群中运行。

此特征包括在以下配置集中: Kubernetes、Knative、OpenShift

警告

部署特征是一个 平台特征 :禁用它可能会破坏平台功能。

6.3.6.1. 配置

可在运行任何 CLI 集成时指定特征属性:

$ kamel run --trait deployment.[key]=[value] Integration.java

可用的配置选项如下:

属性类型描述

deployment.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

6.3.7. 环境垃圾

环境变量在内部用于注入集成容器中的标准环境变量,如 NAMESPACEPOD_NAME 等。

此特征包括在以下配置集中: Kubernetes、Knative、OpenShift

警告

环境特征是一个 平台特征 :禁用它可能会破坏平台功能。

6.3.7.1. 配置

可在运行任何 CLI 集成时指定特征属性:

$ kamel run --trait environment.[key]=[value] --trait environment.[key2]=[value2] Integration.java

可用的配置选项如下:

属性类型描述

environment.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

environment.container-meta

bool

启用 NAMESPACEPOD_NAME 环境变量注入(默认值 true

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

可用的配置选项如下:

属性类型描述

error-handler.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

error-handler.ref

字符串

错误处理程序 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.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

jvm.debug

bool

激活远程调试,以便使用端口转发将调试器附加到 JVM,例如:

jvm.debug-suspend

bool

在载入主类前立即挂起目标 JVM

jvm.print-command

bool

输出在容器日志中使用了启动 JVM 的命令(默认值为 true

jvm.debug-address

字符串

要侦听新启动的 JVM 的传输地址(默认为 *:5005

jvm.options

[]string

JVM 选项列表

jvm.classpath

字符串

其他 JVM 类路径(使用 Linux classpath 分隔符)

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.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

kamelets.auto

bool

自动注入所有引用的 Kamelets 及其默认配置(默认启用)

kamelets.list

字符串

加载到当前集成的 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

可用的配置选项如下:

属性类型描述

affinity.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

affinity.pod-affinity

bool

始终在同一节点上并置集成的多个副本(默认为 false)。

affinity.pod-anti-affinity

bool

不得在同一节点上并置集成的多个副本(默认为 false)。

affinity.node-affinity-labels

[]string

根据节点上的标签,定义集成 pod 有资格调度到的一组节点。

affinity.pod-affinity-labels

[]string

定义一组与标签选择器匹配的 pod (相对于给定命名空间)应该与集成 pod 共存。

affinity.pod-anti-affinity-labels

[]string

定义一组与标签选择器匹配的 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

可用的配置选项如下:

属性类型描述

openapi.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

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

可用的配置选项如下:

属性类型描述

owner.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

owner.target-annotations

[]string

要传输的注解集合

owner.target-labels

[]string

要传输的标签集合

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

可用的配置选项如下:

属性类型描述

platform.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

platform.create-default

bool

在缺少平台时创建默认(空)平台。

platform.global

bool

表示在全局运算符时是否应该全局创建平台(默认 true)。

platform.auto

bool

要在创建默认平台时从环境中自动检测(仅可在 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.enabled

bool

可用于启用或禁用特征。所有特征共享这个通用属性。

quarkus.package-type

[]github.com/apache/camel-k/pkg/trait.quarkusPackageType

Quarkus 软件包类型,可以是 fast-jarnative (默认 fast-jar)。如果同时指定了 fast-jarnative,则会创建两个 IntegrationKit 资源,原生 工具包优先于 fast-jar。顺序会影响集成的当前工具包的解析。在没有与集成匹配的现有工具包时,与第一个软件包类型对应的工具包将被分配给集成。

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 构建完成后立即运行,并在 原生 构建完成后触发对 原生 镜像的推出部署,而不会中断服务。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.