49.6. 例子


49.6.1. 使用 Hashicorp Vault 属性功能

要使用这个功能,您需要为 Hashicorp vault 提供凭证作为环境变量:

export $CAMEL_VAULT_HASHICORP_TOKEN=token
export $CAMEL_VAULT_HASHICORP_HOST=host
export $CAMEL_VAULT_HASHICORP_PORT=port
export $CAMEL_VAULT_HASHICORP_SCHEME=http/https
Copy to Clipboard Toggle word wrap

您还可以在 application.properties 文件中配置凭证,例如:

camel.vault.hashicorp.token = token
camel.vault.hashicorp.host = host
camel.vault.hashicorp.port = port
camel.vault.hashicorp.scheme = scheme
Copy to Clipboard Toggle word wrap
注意

camel.vault.hashicorp 配置只适用于 Hashicorp Vault 属性功能(解析属性时E.g)。当使用 operation 选项创建、获取、列出 secret 等时,您应该 提供主机端口方案 (如果需要) 和令牌 选项。

此时,您可以使用以下方法引用属性:

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{hashicorp:secret:route}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

其中 route 是存储在 Hashicorp Vault 实例中的机密的名称,存储在 'secret' 引擎中。

如果 secret 不在 Hashicorp Vault 实例中,您必须指定一个默认值:

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{hashicorp:secret:route:default}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

在这种情况下,如果 secret 不在 'secret' 引擎中,则属性将回退到"默认"作为值。

另外,如果您拥有一个名为 database 的 secret,则可以获取 secret 的特定字段:

{
  "username": "admin",
  "password": "password123",
  "engine": "postgres",
  "host": "127.0.0.1",
  "port": "3128",
  "dbname": "db"
}
Copy to Clipboard Toggle word wrap

您可以在路由中有一个 secret 值,在 'secret' 引擎中,例如:

<camelContext>
    <route>
        <from uri="direct:start"/>
        <log message="Username is {{hashicorp:secret:database/username}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

或重新使用属性作为端点的一部分。

如果 'secret' 引擎中的 Hashicorp Vault 实例中没有 secret 的特定字段,请指定默认值:

<camelContext>
    <route>
        <from uri="direct:start"/>
        <log message="Username is {{hashicorp:secret:database/username:admin}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

在这种情况下,如果 secret 不存在或者 secret 存在(在 'secret' 引擎中),但 username 字段不是 secret 的一部分,则属性将回退到 "admin" 作为值。

另外,还提供了为这两种方法获取 secret 的特定版本的语法,指定了字段/默认值,或仅使用 secret:

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{hashicorp:secret:route@2}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

此方法在 'secret' 引擎中返回带有版本 '2' 的 RAW 路由 secret。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{hashicorp:route:default@2}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

如果 secret 不存在或版本不存在,此方法将返回带有版本 '2' 或默认值的路由 secret 值(在 'secret' 引擎中)。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <log message="Username is {{hashicorp:secret:database/username:admin@2}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

如果 secret 不存在或者版本不存在,此方法将返回数据库 secret 的用户名字段,如果 secret 不存在,或者版本不存在(在 'secret' 引擎中)。

唯一的要求是将 camel-hashicorp-vault jar 添加到 Camel 应用程序。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部