【发布时间】:2017-06-23 23:21:21
【问题描述】:
我正在尝试设置由 Spring Cloud Vault 秘密管理支持的 Spring Cloud Config Server。我对 Spring 比较陌生,但我在这里尝试了以下说明和示例:-
http://cloud.spring.io/spring-cloud-vault-config/
只要您按照默认设置(如 Vault 端点的 http、localhost 和 8200)以及 tls_disable = 1 来关闭 SSL,一切都会正常工作。但是,对于任何真实环境,这些设置都不是实用的设置,并且几乎没有任何示例可以对此有所帮助。任何人都可以提供一个工作示例吗?
我已成功设置启用 TLS 的保管库。我已经成功设置了一个使用自签名证书连接的配置服务器。我什至可以将一个秘密值注入配置服务器并通过@Value 和@PostConstruct 公开它。
所有这些都有效。但是,当我尝试利用 Spring Conig 端点访问保险库时,我得到以下信息:-
{
"timestamp": 1486413850574,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.web.client.ResourceAccessException",
"message": "I/O error on GET request for \"http://127.0.0.1:8200/v1/secret/myapp\": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect",
"path": "/myapp/default"
}
即使我在bootstrap.yml 中设置了覆盖,配置服务器仍在使用默认值。:-
server:
port: 8888
spring:
profiles:
active: vault
spring.cloud.vault:
host: myhost.mydomain.com
port: 8200
scheme: https
authentication: TOKEN
token: 0f1887c3-d8a8-befd-a5a2-01e4e066c50
ssl:
trust-store: configTrustStore.jks
trust-store-password: changeit
如您所见,它应该指向 myhost.mydomain.com 而不是 127.0.0.1,它应该使用 https,而不是 http 作为协议方案。
我不确定为什么它将这些默认值用于配置服务器端点,但在 spring cloud vault 启动期间使用正确的设置。我正在使用 Spring Dalsten.M1 和 Spring Cloud Vault 1.0.0.M1 的所有最新稳定版本。我意识到这些是里程碑版本。我也试过卡姆登和布里克斯顿的组合,但没有运气。如果需要,我可以提供代码。
非常感谢任何帮助。
【问题讨论】:
-
cloud.spring.io/spring-cloud-vault-config 根本不使用配置服务器。它直接进入保险库。要使用带有保险库的配置服务器作为后端,请参阅github.com/spring-cloud/spring-cloud-config/blob/master/docs/…。否则更改标题以删除配置服务器,我将按原样查看问题。
-
感谢您的快速回复。问题的本质来自 Spring Cloud Config Server 和 Spring Cloud Vault Config Starter 的使用。我现在已经在自己解决这个问题上取得了一些成功,我将在此回复后发布为已接受的答案,并对问题进行一些澄清。
标签: java spring spring-cloud spring-cloud-config