res*_*asy 5 java spring-boot spring-cloud netflix-eureka
我们有一个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中似乎没有任何影响.我认为这个问题与处理PropertySources的顺序有关,但是我无法在Eureka之前成功注入Vault的PropertySource.在DiscoveryClient和配置服务器访问之前,我们如何指示自定义/ Vault PropertySourceLocator逻辑执行?
更新
我们使用的是spring-cloud版本Angel.SR6.
我按照建议将@Order(Ordered.HIGHEST_PRECEDENCE)注释添加到VaultPropertySourceLocator,但参数解析仍然不起作用.启用Spring调试日志记录后,我认为Vault PropertySource实际上存在,但由于某种原因未被使用.我修改了代码,以便VaultConfiguration实现SmartLifecycle和Ordered(order = 0和phase = Integer.MIN_VALUE),这可能会影响事情.我将不得不做更多的调试,试图找出正在发生的事情.
我能够解决我的问题。我尝试了几种不同的方法,包括 Spring AOP 和 LTW,它们不起作用,因为过早地尝试实例化各个方面 - 为了使 VaultPropertySource 在 Eureka 的 DiscoveryClient 进行调用之前可用。
我的工作解决方案包括:
为了早于 Eureka bean 实例化 Vault bean,并且配置开始实例化:
@Ordered
或实施PriorityOrdered
在VaultPropertySourceLocator
. 我的VaultPropertySourceLocator
还包括实现,SmartLifecycle
因为我看到不确定的输出,部分 Eureka bean 实例化有时发生在 Vault bean 之前。我的订单是Ordered.HIGHEST_PRECEDENCE
,阶段是Integer.MIN_VALUE
。用于注册VaultPropertySource
为 PropertySource,用于在 Eureka beans/配置连接发生时解析参数:
VaultPropertySource
在环境的 PropertySources 列表中自行注册,并且在 Eureka beans 实例化并serviceUrl
在实例化和解包/解析EurekaClientConfigBean
属性期间设置属性时存在。 归档时间: |
|
查看次数: |
985 次 |
最近记录: |