【发布时间】:2016-07-21 22:54:01
【问题描述】:
我们有一个Spring-Boot 应用程序,我们在其中使用Eureka 来发现Spring Cloud Config 并检索配置。我们正在集成Vault 以注入安全/敏感信息,并且在加载和解析参数时遇到问题。我们用作 Vault 客户端的项目是 vault-spring-boot-starter,只要我们不通过 eureka 将它与 config-server 一起使用,它就可以很好地工作。
具体来说,Eureka 访问 URL 包含从 Vault 检索的参数/凭据。启用所有组件后,当 DiscoveryClient 尝试访问尚未填充/替换参数的 URL 时,Eureka 请求将失败。
( Example: http://${user}:${pass}..... )
试图指定@Order 和
@AutoConfigureBefore({EurekaClientAutoConfiguration.class, DiscoveryClientConfigServiceAutoConfiguration.class})
在 Vault-spring-boot-starter 的 VaultBootstrapConfiguration 似乎没有任何影响。我相信这个问题与处理 PropertySource 的顺序有关,但我无法在 Eureka 之前成功地注入 Vault 的 PropertySource。我们如何指示自定义/Vault PropertySourceLocator 逻辑在 DiscoveryClient 和配置服务器访问之前执行?
更新
我们使用的是spring-cloud版本的Angel.SR6。
我已按照建议将 @Order(Ordered.HIGHEST_PRECEDENCE) 注释添加到 VaultPropertySourceLocator,但参数解析仍然不起作用。启用 Spring 调试日志记录后,我相信 Vault PropertySource 确实存在,但由于某种原因没有被使用。我已经修改了代码,以便 VaultConfiguration 实现 SmartLifecycle 和 Ordered(order=0 和 phase=Integer.MIN_VALUE),这可能会影响事情。我将不得不进行更多调试以尝试隔离发生的情况。
【问题讨论】:
-
你用的是什么版本的spring cloud?
-
查看代码,您可能需要
@Order上的github.com/markramach/vault-spring-boot-starter/blob/master/src/… -
也就是说
PropertySourceLocators 支持弹簧排序机制。 -
啊,订购可能只有 Brixton,不是天使。
-
是否有针对 Angel.SR6 的订购解决方法?
标签: java spring-boot spring-cloud netflix-eureka