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
您还可以在 application.properties 文件中配置凭证,例如:
camel.vault.hashicorp.token = token
camel.vault.hashicorp.host = host
camel.vault.hashicorp.port = port
camel.vault.hashicorp.scheme = scheme
camel.vault.hashicorp 配置只适用于 Hashicorp Vault 属性功能(解析属性时E.g)。当使用 operation 选项创建、获取、列出 secret 等时,您应该 提供主机、端口、方案 (如果需要) 和令牌 选项。
此时,您可以使用以下方法引用属性:
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:secret:route}}"/>
</route>
</camelContext>
其中 route 是存储在 Hashicorp Vault 实例中的机密的名称,存储在 'secret' 引擎中。
如果 secret 不在 Hashicorp Vault 实例中,您必须指定一个默认值:
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:secret:route:default}}"/>
</route>
</camelContext>
在这种情况下,如果 secret 不在 'secret' 引擎中,则属性将回退到"默认"作为值。
另外,如果您拥有一个名为 database 的 secret,则可以获取 secret 的特定字段:
{
"username": "admin",
"password": "password123",
"engine": "postgres",
"host": "127.0.0.1",
"port": "3128",
"dbname": "db"
}
您可以在路由中有一个 secret 值,在 'secret' 引擎中,例如:
<camelContext>
<route>
<from uri="direct:start"/>
<log message="Username is {{hashicorp:secret:database/username}}"/>
</route>
</camelContext>
或重新使用属性作为端点的一部分。
如果 'secret' 引擎中的 Hashicorp Vault 实例中没有 secret 的特定字段,请指定默认值:
<camelContext>
<route>
<from uri="direct:start"/>
<log message="Username is {{hashicorp:secret:database/username:admin}}"/>
</route>
</camelContext>
在这种情况下,如果 secret 不存在或者 secret 存在(在 'secret' 引擎中),但 username 字段不是 secret 的一部分,则属性将回退到 "admin" 作为值。
另外,还提供了为这两种方法获取 secret 的特定版本的语法,指定了字段/默认值,或仅使用 secret:
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:secret:route@2}}"/>
</route>
</camelContext>
此方法在 'secret' 引擎中返回带有版本 '2' 的 RAW 路由 secret。
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:route:default@2}}"/>
</route>
</camelContext>
如果 secret 不存在或版本不存在,此方法将返回带有版本 '2' 或默认值的路由 secret 值(在 'secret' 引擎中)。
<camelContext>
<route>
<from uri="direct:start"/>
<log message="Username is {{hashicorp:secret:database/username:admin@2}}"/>
</route>
</camelContext>
如果 secret 不存在或者版本不存在,此方法将返回数据库 secret 的用户名字段,如果 secret 不存在,或者版本不存在(在 'secret' 引擎中)。
唯一的要求是将 camel-hashicorp-vault jar 添加到 Camel 应用程序。