我们这里的几乎所有应用程序都在 Kubernetes 生态系统中使用 SpringCloud,现在,出于安全原因,我们也决定使用 Hashicorp Vault。所有的事情似乎都在工作,但是当我们使用 Atlas 时,我们有一个间歇性的数据库连接。我们不确定为什么,但可以看到应用程序在正确启动之前重启了很多次。查找 spring 云日志,我们可以看到 spring 正在调用 Vault 并且 Vault 正在为我们创建一个动态用户,几秒钟后,spring 请求删除该用户,因为它似乎不起作用。你们中有人已经遇到过这样的事情吗?
在我们的 pom.xml 中,我们有以下依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-config-databases</artifactId>
</dependency>
</dependencies>
还有 bootstrap.yaml 的例子:
spring:
application:
name: application-name
version: @project.version@
profiles: dev,sit,uat,prod
cloud:
vault:
enabled: true
application-name: application-name
authentication: APPROLE
read-timeout: 15000
app-role:
role-id: XXXXXXX
secret-id: XXXXX
role: XXXXXX
fail-fast: true
scheme: http
host: 10.121.0.11
connection-timeout: 30000
config:
lifecycle:
enabled: true
min-renewal: 15m
expiry-threshold: 30m
generic:
enabled: false
database:
enabled: true
role: YYYYYY
backend: database
username-property: db.username
password-property: db.password
data:
mongodb:
uri: mongodb+srv://${db.username}:${db.password}@europe-dev-shard-pri.bro0z.azure.mongodb.net/?retryWrites=true&w=majority}
database: ${MONGODB_DATABASE:application-database}
完整的日志可以在这里看到:https ://github.com/spring-cloud/spring-cloud-vault/files/6166864/log.txt