6.2. Camel K 功能特征


6.2.1. Knative Trait

Knative trait 会自动发现 Knative 资源的地址,并将它们注入正在运行的集成中。

完整的 Knative 配置以 JSON 格式使用 CAMEL_KNATIVE_CONFIGURATION 注入。然后,Camel Knative 组件将使用完整配置来配置路由。

当 Knative 配置集处于活跃状态时,代表会被默认启用。

这个特征包括在以下配置集:Knative

6.2.1.1. 配置

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

$ kamel run --trait knative.[key]=[value] --trait knative.[key2]=[value2] integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

knative.enabled

bool

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

knative.configuration

字符串

可用于注入 JSON 格式的 Knative 完成配置。

knative.channel-sources

[]string

用作集成路由源的频道列表。可以包含简单的频道名称或完整的 Camel URI。

knative.channel-sinks

[]string

用作集成路由的目的地的频道列表。可以包含简单的频道名称或完整的 Camel URI。

knative.endpoint-sources

[]string

用作集成路由源的频道列表。

knative.endpoint-sinks

[]string

用作集成路由的目的地的端点列表。可以包含简单的端点名称或完整的 Camel URI。

knative.event-sources

[]string

集成将订阅的事件类型列表。可以包含简单的事件类型或完整的 Camel URI (使用不同于"默认"的特定代理)。

knative.event-sinks

[]string

集成将生成的事件类型列表。可以包含简单的事件类型或完整的 Camel URI (使用特定代理)。

knative.filter-source-channels

bool

启用根据标头 "ce-knativehistory" 对事件进行过滤。由于此标头在较新版本的 Knative 中被删除,所以默认禁用过滤。

knative.sink-binding

bool

允许通过 Knative SinkBinding 资源将集成绑定到 sink。当集成以单个 sink 为目标时,可以使用它。当集成以单个 sink 为目标时,它会被默认启用(集成归 Knative 源所有时除外)。

knative.auto

bool

启用自动发现所有特征属性。

6.2.2. Knative Service Trait

在将集成作为 Knative 服务而不是标准的 Kubernetes Deployment 运行时,Knative Service trait 允许配置选项。

作为 Knative 服务运行集成会添加自动扩展(和缩减到零)功能,但这些功能仅在路由使用 HTTP 端点消费者时才有意义。

这个特征包括在以下配置集:Knative

6.2.2.1. 配置

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

$ kamel run --trait knative-service.[key]=[value] --trait knative-service.[key2]=[value2] Integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

knative-service.enabled

bool

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

knative-service.autoscaling-class

字符串

配置 Knative 自动扩展类属性(例如,设置 hpa.autoscaling.knative.devkpa.autoscaling.knative.dev autoscaling)。

如需更多信息,请参阅 Knative 文档。

knative-service.autoscaling-metric

字符串

配置 Knative 自动扩展指标属性(例如,设置基于 并发cpu 的自动扩展)。

如需更多信息,请参阅 Knative 文档。

knative-service.autoscaling-target

int

为每个 Pod 设置允许的并发级别或 CPU 百分比(取决于自动扩展指标)。

如需更多信息,请参阅 Knative 文档。

knative-service.min-scale

int

应该随时运行集成的最小 Pod 数量。默认情况下,它 为零,这意味着在没有用于配置的时间时,集成会缩减为零。

如需更多信息,请参阅 Knative 文档。

knative-service.max-scale

int

可并行运行用于集成的 Pod 数的上限。Knative 都有自己的上限值,具体取决于安装。

如需更多信息,请参阅 Knative 文档。

knative-service.auto

bool

在所有条件都满足时自动将集成部署为 Knative 服务:

  • 集成使用 Knative 配置集
  • 所有路由都从基于 HTTP 的消费者或被动消费者(例如,直接 是一个被动消费者)开始。

6.2.3. Prometheus Trait

Prometheus trait 配置与 Prometheus 兼容的端点。它还会创建一个 PodMonitor 资源,以便在使用 Prometheus operator 时自动提取端点。

指标通过 MicroProfile 指标来公开。

警告

创建 PodMonitor 资源需要安装 Prometheus Operator 自定义资源定义。您可以将 Prometheus 特征的 pod-monitor 设置为 false,以便在没有 Prometheus Operator 的情况下工作。

Prometheus trait 默认禁用。

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

6.2.3.1. 配置

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

$ kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

prometheus.enabled

bool

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

prometheus.pod-monitor

bool

是否已创建 PodMonitor 资源(默认为 true)。

prometheus.pod-monitor-labels

[]string

PodMonitor 资源标签,适用于 pod-monitortrue

6.2.4. PDB Trait

PDB 特征允许为集成 pod 配置 PodDisruptionBudget 资源。

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

6.2.4.1. 配置

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

$ kamel run --trait pdb.[key]=[value] --trait pdb.[key2]=[value2] Integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

pdb.enabled

bool

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

pdb.min-available

字符串

驱除后必须仍然可用的集成的 pod 数量。它可以是绝对数字或一个百分比。只能指定 min-availablemax-unavailable 中的一个。

pdb.max-unavailable

字符串

驱除后可以不可用的集成的 pod 数量。它可以是一个绝对数字或一个百分比(如果 min-available 也未设置,则默认为 1)。只能指定 max-unavailablemin-available 中的一个。

6.2.5. Pull Secret Trait

Pull Secret 特征在 pod 上设置 pull secret,以允许 Kubernetes 从外部 registry 检索容器镜像。

可以手动指定 pull secret,或者您已为 集成 平台上的外部容器 registry 配置身份验证,则使用相同的 secret 来拉取镜像。

每当为外部容器 registry 配置身份验证时,它会被默认启用,因此它假定外部 registry 是私有的。

如果您的 registry 不需要身份验证来拉取镜像,您可以禁用此特征。

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

6.2.5.1. 配置

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

$ kamel run --trait pull-secret.[key]=[value] --trait pull-secret.[key2]=[value2] Integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

pull-secret.enabled

bool

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

pull-secret.secret-name

字符串

在 Pod 上设置的 pull secret 名称。如果留空,则会自动从 IntegrationPlatform registry 配置中获取。

pull-secret.image-puller-delegation

bool

将全局操作器与共享平台搭配使用时,这会将 operator 命名空间中的 system:image-puller 集群角色委派给集成服务帐户。

pull-secret.auto

bool

如果是 kubernetes.io/dockerconfigjson 类型,则自动配置 pod 上的平台 registry secret。

6.2.6. 路由垃圾

Route trait 可用于为集成配置 OpenShift 路由。

证书和密钥内容可以从本地文件系统或 Openshift secret 对象中提供。用户可以使用以 - secret 结尾的参数(例如: tls-certificate-secret)来引用存储在机密中的证书。以 -secret 结尾的参数具有更高的优先级,如果设置了相同的路由参数,例如: tls-key-secrettls-key,则使用 tls-key-secret。设置密钥和证书的建议方法是使用 secret 来存储其内容,并使用以下参数引用它们: tls-certificate-secrettls-key-secrettls-ca-certificate-secrettls-destination-ca-certificate-secret 查看此页面末尾的示例部分,以查看设置选项。

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

6.2.6.1. 配置

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

$ kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

route.enabled

bool

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

route.host

字符串

配置路由公开的主机:

route.tls-termination

字符串

TLS 终止类型,如 edgepassthroughreencrypt

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-certificate

字符串

TLS 证书内容。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-certificate-secret

字符串

对 TLS 证书的 secret 名称和密钥引用。格式为 "secret-name[/key-name]",如果 secret 中只有一个键,则该值代表 secret 名称,否则您可以设置以"/"分隔的键名称。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-key

字符串

TLS 证书密钥内容。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-key-secret

字符串

对 TLS 证书密钥的 secret 名称和密钥引用。格式为 "secret-name[/key-name]",如果 secret 中只有一个键,则该值代表 secret 名称,否则您可以设置以"/"分隔的键名称。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-ca-certificate

字符串

TLS CA 证书内容。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-ca-certificate-secret

字符串

secret 名称和密钥引用 TLS CA 证书。格式为 "secret-name[/key-name]",如果 secret 中只有一个键,则该值代表 secret 名称,否则您可以设置以"/"分隔的键名称。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-destination-ca-certificate

字符串

目标 CA 证书提供最终目的地的 ca 证书的内容。使用重新加密终止时,应提供此文件,以便让路由器将它用于安全连接上的健康检查。如果没有指定此字段,路由器可能会提供自己的目标 CA,并使用短服务名称(service.namespace.svc)执行主机名验证,它允许基础架构生成的证书自动验证。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-destination-ca-certificate-secret

字符串

secret 名称和密钥引用目标 CA 证书。格式为 "secret-name[/key-name]",如果 secret 中只有一个键,则该值代表 secret 名称,否则您可以设置以"/"分隔的键名称。

如需更多信息,请参阅 OpenShift 路由文档。

route.tls-insecure-edge-termination-policy

字符串

要配置如何处理不安全的流量,例如 允许禁用 或重定向流量。

如需更多信息,请参阅 OpenShift 路由文档。

6.2.6.2. 例子

这些示例使用 secret 来存储集成中引用的证书和密钥。有关路由的详细信息,请参阅 Openshift 路由文档。PlatformHttpServer.java 是集成示例。

作为运行这些示例的要求,您应该有一个带有密钥和证书的 secret

6.2.6.2.1. 生成自签名证书并创建 secret
openssl genrsa -out tls.key
openssl req -new -key tls.key -out csr.csr -subj "/CN=my-server.com"
openssl x509 -req -in csr.csr -signkey tls.key -out tls.crt
oc create secret tls my-combined-certs --key=tls.key  --cert=tls.crt
Copy to Clipboard Toggle word wrap
6.2.6.2.2. 向路由发出 HTTP 请求

对于所有示例,您可以使用以下 curl 命令发出 HTTP 请求。如果使用不支持这些内联脚本的 shell,它会使用内联脚本来检索 openshift 命名空间和集群基域,您应该将内联脚本替换为实际命名空间和基域的值。

curl -k https://platform-http-server-`oc config view --minify -o 'jsonpath={..namespace}'`.`oc get dnses/cluster -ojsonpath='{.spec.baseDomain}'`/hello?name=Camel-K
Copy to Clipboard Toggle word wrap
  • 要使用 secret 添加 边缘路由,请使用以 -secret 结尾的参数来设置包含证书的 secret 名称。此路由示例特征引用名为 my-combined-certs 的 secret,其包含两个名为 tls.keytls.crt 的键。

    kamel run --dev PlatformHttpServer.java -t route.tls-termination=edge -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key
    Copy to Clipboard Toggle word wrap
  • 要使用 secret 添加 passthrough 路由,TLS 在集成 pod 中设置,密钥和证书应该在运行的 pod 中看到,以达到此目的,使用 --resource kamel 参数在集成 pod 中挂载 secret,然后使用一些 camel quarkus 参数在运行的 pod 中引用这些证书文件,它们以 -p quarkus.http.ssl.certificate 开始。此路由示例特征引用名为 my-combined-certs 的 secret,其包含两个名为 tls.keytls.crt 的键。

    kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=passthrough -t container.port=8443
    Copy to Clipboard Toggle word wrap
  • 要使用 secret 添加 重新加密路由,TLS 在集成 pod 中设置,在运行的 pod 中应该看到密钥和证书,以达到此目的,使用 --resource kamel 参数在集成 pod 中挂载 secret,然后使用一些 camel quarkus 参数在运行的 pod 中引用这些证书文件,它们以 -p quarkus.http.ssl.certificate 开始。此路由示例特征引用名为 my-combined-certs 的 secret,其包含两个名为 tls.keytls.crt 的键。

    kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs  -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=reencrypt -t route.tls-destination-ca-certificate-secret=my-combined-certs/tls.crt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
    Copy to Clipboard Toggle word wrap
  • 要使用来自路由和 Openshift 服务证书的 secret 的特定证书 来添加 重新加密路由。这样,Openshift 服务证书仅在集成 pod 中设置。密钥和证书应该在正在运行的集成 pod 中可见,为了达到此目的,我们使用 --resource kamel 参数在集成 pod 中挂载 secret,然后使用一些 camel quarkus 参数来引用正在运行的 pod 中的这些证书文件,它们以 -p quarkus.http.ssl.certificate 开始。此路由示例特征引用名为 my-combined-certs 的 secret,其包含两个名为 tls.keytls.crt 的键。

    kamel run --dev PlatformHttpServer.java --resource secret:cert-from-openshift@/etc/ssl/cert-from-openshift  -p quarkus.http.ssl.certificate.file=/etc/ssl/cert-from-openshift/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/cert-from-openshift/tls.key -t route.tls-termination=reencrypt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
    Copy to Clipboard Toggle word wrap

    然后,您应该注解集成服务来注入 Openshift 服务证书

    oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
    Copy to Clipboard Toggle word wrap
  • 使用本地文件系统提供的证书和私钥添加 边缘路由。本例使用内联脚本读取证书和私钥文件内容,然后删除所有新行字符(这需要将证书设置为参数的值),因此这些值位于一行中。

    kamel run PlatformHttpServer.java --dev -t route.tls-termination=edge -t route.tls-certificate="$(cat tls.crt|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')" -t route.tls-key="$(cat tls.key|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')"
    Copy to Clipboard Toggle word wrap

6.2.7. 服务 Trait

Service trait 会公开与 Service 资源的集成,以便它可以被同一命名空间中的其他应用程序(或集成)访问。

如果集成依赖于可以公开 HTTP 端点的 Camel 组件,则默认启用它。

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

6.2.7.1. 配置

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

$ kamel run --trait service.[key]=[value] --trait service.[key2]=[value2] Integration.java
Copy to Clipboard Toggle word wrap

可用的配置选项如下:

Expand
属性类型描述

service.enabled

bool

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

service.auto

bool

如果需要创建服务,可以从代码中自动检测。

service.node-port

bool

启用 Service 作为 NodePort 公开(默认为 false)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat