我们有一个春靴应用程序,在这个应用程序中,我们使用尤里卡来发现弹簧云Config和检索配置。我们正在集成保险库来注入安全/敏感的信息,并且在参数的加载和解析方面遇到了问题。我们作为Vault客户端使用的项目是跳马-弹簧-启动-启动,只要我们不通过eureka与配置服务器一起使用它,它就能工作得很好。
具体而言,Eureka访问URL包含从Vault检索的参数/凭据。启用所有组件后,当DiscoveryClient试图访问参数尚未填充/替换的URL时,尤里卡请求将失败。
( Example: http://${user}:${pass}..... )
试图指定@Order和
@AutoConfigureBefore({EurekaClientAutoConfiguration.class, DiscoveryClientConfigServiceAutoConfiguration.class})
在跳马弹簧启动的VaultBootstrapConfiguration似乎没有任何影响。我认为这个问题与处理PropertySources的顺序有关,但我无法在尤里卡之前成功地注入Vault的PropertySource。我们如何指示自定义/Vault PropertySourceLocator逻辑在DiscoveryClient和配置服务器访问之前执行?
更新
我们使用的是春云版本的Angel.SR6.
我已经按照建议将@Order(Ordered.HIGHEST_PRECEDENCE)注释添加到VaultPropertySourceLocator中,但是参数解析仍然不起作用。在启用了Spring调试日志之后,我相信Vault PropertySource确实存在,但出于某种原因没有被使用。我已经修改了代码,以便VaultConfiguration实现SmartLifecycle并排序(使用order=0和phase=Integer.MIN_VALUE),这可能会影响事物。我将不得不做更多的调试,试图隔离正在发生的事情。
发布于 2016-04-11 16:13:51
我解决了我的问题。我尝试了几种不同的方法,包括Spring和LTW,它们没有试图过早地实例化这些方面,以便在尤里卡的VaultPropertySource调用之前就可以使用。
我的工作解决方案包括:
为了在Eureka bean之前实例化Vault bean,配置将开始实例化:
@Ordered或在VaultPropertySourceLocator中实现PriorityOrdered。我的VaultPropertySourceLocator还包括实现SmartLifecycle,因为我看到了不确定的输出,部分Eureka实例化有时发生在Vault bean之前。我的订单是Ordered.HIGHEST_PRECEDENCE,相位是Integer.MIN_VALUE。将VaultPropertySource注册为PropertySource,用于在发生尤里卡bean/配置连接时解析参数:
VaultPropertySource列表中的PropertySources,当Eureka在实例化和展开/解析EurekaClientConfigBean属性期间实例化和设置serviceUrl属性时,环境引用就在那里。https://stackoverflow.com/questions/36368085
复制相似问题