83.8. 在 Kubernetes 中使用 secret 属性功能


camel-kubernetes 组件包括以下与 secret 相关的功能:

  • secret - 从 Kubernetes Secret 中查找字符串属性的功能。
  • secret-binary - 从 Kubernetes Secret 中查找二进制属性的功能。

Camel 从 Kubernetes API 服务器读取 Secret。在集群中启用 RBAC 时,用于运行应用程序的 ServiceAccount 需要具有针对此类访问的正确权限。

在 Kubernetes 属性占位符功能之前,需要使用它们配置(或两者)

  • path - 必须挂载到正在运行的 pod 的挂载路径,以便从本地磁盘加载 configmap 或 secret。
  • Kubernetes 客户端 - 自动线.用于连接到 Kubernetes API 服务器的 io.fabric8.kubernetes.client.KubernetesClient 实例。

Camel 首先使用要查找的挂载路径(如果已配置),然后回退到使用 KubernetesClient

例如,名为 mydb 的 secret 可以包含用于连接数据库的用户名和密码,例如:

myhost = killroy
myport = 5555
myuser = scott
mypass = tiger

这在 Camel 中使用,如示例 Postrgres Sink Kamelet 所示:

<camelContext>
  <route>
    <from uri="direct:rome"/>
    <setBody>
      <constant>{ "username":"oscerd", "city":"Rome"}</constant>
    </setBody>
    <to uri="kamelet:postgresql-sink?serverName={{secret:mydb/myhost}}
             &amp;serverPort={{secret:mydb/myport}}
             &amp;username={{secret:mydb/myuser}}
             &amp;password={{secret:mydb/mypass}}
             &amp;databaseName=cities
             &amp;query=INSERT INTO accounts (username,city) VALUES (:#username,:#city)"/>
  </route>
</camelContext>

postgres-sink Kamelet 也可以在 application.properties 中配置,这可减少上述路由中的配置:

camel.component.kamelet.postgresql-sink.databaseName={{secret:mydb/myhost}}
camel.component.kamelet.postgresql-sink.serverPort={{secret:mydb/myport}}
camel.component.kamelet.postgresql-sink.username={{secret:mydb/myuser}}
camel.component.kamelet.postgresql-sink.password={{secret:mydb/mypass}}

这减少了到以下的路由:

<camelContext>
  <route>
    <from uri="direct:rome"/>
    <setBody>
      <constant>{ "username":"oscerd", "city":"Rome"}</constant>
    </setBody>
    <to uri="kamelet:postgresql-sink?databaseName=cities
             &amp;query=INSERT INTO accounts (username,city) VALUES (:#username,:#city)"/>
  </route>
</camelContext>
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部