我正在使用两个配置服务器运行微服务:
- Spring Cloud Config(带有 git 后端)
- Spring Cloud Vault
我将 Vault token 存储在 Spring Cloud Config 服务器中。当启动微服务时,我希望它:
- 检索存储在 Spring Cloud Config 中的配置,包括 Vault token 。
- 使用 Vault token 连接到 Spring Cloud Vault,然后检索 Spring Cloud Vault 中存储的配置。
bootstrap.properties:
spring.application.name=my-app
spring.cloud.config.uri=http://localhost:8888
Spring Cloud 配置服务器:
spring.cloud.vault.token=19aefa97-cccc-bbbb-aaaa-225940e63d76
但是,我遇到了异常,说 spring.cloud.vault.token
必须存在。
Caused by: java.lang.IllegalArgumentException: Token (spring.cloud.vault.token) must not be empty
at org.springframework.util.Assert.hasText(Assert.java:181)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration.clientAuthentication(VaultBootstrapConfiguration.java:270)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$473cc7b3.CGLIB$clientAuthentication$7(<generated>)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$473cc7b3$$FastClassBySpringCGLIB$$5f991c47.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$473cc7b3.clientAuthentication(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
... 88 common frames omitted
问题:
在 Spring Cloud Config 中存储 Vault token 以便微服务稍后访问 Spring Cloud Vault 是一个有效的用例吗?
如果是,是否需要设置属性检索的顺序? IE。为 Spring Cloud Vault 设置 spring.cloud.vault.config.order 。 Spring Cloud Config 是否有等效的参数?
最佳答案
看起来这里的 Vault token 使用情况无效。 根据文档 Spring Cloud Config Client 应该为服务器提供一个 token 以从 Vault 检索值 - Spring Cloud Config - Vault 。 因此,在配置服务器中,您只需向 git 存储库和 Vault 服务器提供配置即可。 它不会像从 Git 存储库那样从 Vault 检索所有配置。它将根据配置客户端的请求检索敏感属性,该配置客户端将具有正确的 Vault token 。
是的,有 order 属性,
spring: profiles: active: vault, git cloud: config: server: vault: order: 1 git: order: 2 uri: https://some-git-repo.com/ username: user password: pass
我使用了 this StackOverflow question 中的配置,它对我有帮助并且工作正常。
关于spring - 在 Spring Cloud Config 中存储 Spring Cloud Vault token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47688262/