背景:
一、环境搭建
官网指导步骤:Tutorials | Vault | HashiCorp Developer
1. 下载vault安装文件
2. dev环境启动 ./vault server -dev, 然后localhost:8200,这种方式token每次启动都会变化
3.token不变的方式,首先:在vault目录下创建vault-dev.hcl文件
/*
* Sample configuration file for tests
*/
// Enable UI
ui = true
// Filesystem storage
storage "file" {
path = "./vault-data"
}
// TCP Listener using a self-signed certificate
listener "tcp" {
address = "127.0.0.1:8200"
"tls_disable" = "true"
}
4. cd到vault目录下,执行下面命令启动vault serve
./vault server -config vault-dev.hcl
5. 另起一个命令窗口,配置环境变量:
export VAULT_ADDR=http://localhost:8200vault operator init
6. 保存好上面init命令后产生的5个key和一个token,另起一个命令窗口 执行(需要3个key凑齐才能用)
./vault operator unseal 第一个key
./vault operator unseal 第二个key
./vault operator unseal 第三个key
7. 然后执行localhost:8200, 打开管理平台,添加一个密码引擎,类型为KV,路径为secret/, 然后创建与springboot项目中spring.application.name配置一致的名称
二、spring boot 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
</dependency>
三、新增yaml配置
spring:
cloud:
vault:
enabled: false //启用时需要配置为true
token: 00000000-0000-0000-0000-000000000000 // 如果配置错误会报 403错误
scheme: http
discovery.enabled: false // 启用后无需配置host
以上配置可以直接在环境变量中引入。
四、核心源码
VaultBootstrapPropertySourceConfiguration#vaultPropertySourceLocator //配置加载
VaultPropertySourceLocatorSupport#locate //配置对象创建