0

我有一个使用 Vault 来保密的 spring-boot 应用程序。与保险库的连接是通过带有 @VaultPropertySource 注释的专用类进行的。连接配置在 bootstrap.yaml 文件中。我只需要在应用程序启动时连接来读取所有机密,但我看到 spring 在整个应用程序生命周期中不断检查连接性,所以如果我关闭保险库,我的应用程序会因为连接丢失而崩溃。所以我的问题是,如何配置 spring 在应用程序启动后不保持连接。

注意:我知道快速失败配置,但这是非常通用的配置。我希望如果启动时没有连接来读取机密,我的应用程序将失败,但我不想在整个应用程序生命周期中都依赖保险库。

4

1 回答 1

0

这就是我们使用spring config server在设置中进行配置的方式:

在 pom.xml 中为客户端添加依赖信息

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-vault-config</artifactId>
     <version>1.1.0.RELEASE</version>
</dependency>

在 bootstrap.yml 中添加Vault 配置

spring:
  cloud:
    config:
      uri: ${CONFIG_SERVER_URI}
      username: ****
      password: ****
    vault:
      uri: ${VAULT_URI}
      authentication: token
      token: ${SPRING_CLOUD_VAULT_TOKEN}
  application:
    name: APP-NAME

在运行 jar 时提供所需的参数

exec java $JAVA_OPTS -jar -Drun.arguments=--spring.cloud.config.uri=${CONFIG_SERVER_URI} \
     -Drun.arguments=--spring.cloud.vault.uri=${VAULT_URI} \
     -Dspring.cloud.vault.token=${SPRING_CLOUD_VAULT_TOKEN} \
     APP-NAME.jar

希望这可以帮助。

于 2019-04-03T18:12:43.217 回答