我有一个使用Vault保守秘密的spring-boot应用程序。 与保管库的连接是通过带有@VaultPropertySource批注的专用类进行的。连接配置位于bootstrap.yaml文件中。 我仅在应用程序启动时才需要连接以读取所有机密,但我发现spring会在应用程序的整个生命周期中不断检查连接性,因此,如果我关闭Vault,我的应用程序将因为连接丢失而崩溃。 所以我的问题是,在应用程序启动后,如何配置spring使其不保持连接性。
注意:我知道快速失败配置,但这是非常常规的配置。我希望如果启动时没有连接来读取机密,我的应用程序将失败,但是我不想在整个应用程序生命周期中都依赖保管库。
答案 0 :(得分:0)
这是我们在设置中使用 spring config服务器进行配置的方式:
在pom.xml中为客户端添加依赖性信息
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
在bootstrap.yml中添加库配置
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
希望这会有所帮助。