【问题标题】:Spring cloud not able to resolve vault secret into .ymlSpring Cloud 无法将 Vault 机密解析为 .yml
【发布时间】:2020-07-22 04:53:40
【问题描述】:

我正在使用微服务架构并拥有 spring 云配置服务和另一个微服务。

  profiles:
    active: vault
  cloud:
    # Configuration for a vault server running in dev mode
    vault:
      scheme: http
      host: 127.0.0.1
      port: 8200
      connection-timeout: 5000
      read-timeout: 15000
      authentication: TOKEN
      token: s.E4gdoIYAKxMvCE56MP5Etmvy
      kv:
        enabled: true
        backend: secret
        backend-version: 2
        profile-separator: /
      generic:
          enabled: false
      application-name: myapp

配置服务器依赖

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

这是 .yml 进入配置服务。然后进入我的微服务的 .yml ,我有 db.username 属性,我想从 Vault 中解析它,但我不能。你有什么想法吗?

username: db.username
password: secret/apm-transaction-service/dev/db.user

@Value("${db.username}")

这个值被解析为 java 代码而不是 .yml

现在,对于我拥有的每个微服务,我想从配置服务中解析秘密,而不对微服务进行任何更改。目前正在从配置服务中读取本机 .ymls 并希望再添加一个源 :)

ApplicationStartupRunner 运行方法 Started !!root

【问题讨论】:

  • 你的配置服务器配置是什么?
  • 什么意思?
  • 你在运行spring cloud config server吗?
  • 是 -> 春天云配置服务器
  • 请显示您的配置服务器的配置

标签: spring spring-boot spring-cloud hashicorp-vault spring-vault


【解决方案1】:

如果您使用的是 spring-boot,要解析 .yml 文件中的值,它必须是一个变量。您必须在 yaml 文件中使用 ${db.username}

【讨论】:

  • ${db.username} 如果保险库配置进入微服务,将解析此占位符,但我希望微服务没有任何保险库配置并且所有配置都进入配置服务。那么 ${db.username} 不能解析为 microservice.yml 文件
  • spring cloud config server提供了rest端点来获取属性。如果您使用 spring cloud config 客户端,则属性会像提供给 propertyplaceholder 一样被解析
猜你喜欢
  • 2018-10-02
  • 1970-01-01
  • 2023-01-20
  • 2020-11-04
  • 2017-05-01
  • 2021-11-22
  • 2018-12-25
  • 2013-11-14
  • 2020-10-29
相关资源
最近更新 更多