我们有一个Spring Cloud配置服务器,其配置如下:
spring:
profiles:
active: composite
cloud:
config:
server:
composite:
-
type: git
uri: "https://github.comcast.com/config-org/{application}"
username: "mainUsername"
password: "mainPassword"
searchPaths: "*"
-
type: git
uri: "https://github.comcast.com/config-org/shared-repo"
username: "sharedUsername"
password: "sharedPassword"
searchPaths: "*"
health:
enabled: false
这是我们遇到的问题。假设存在一个名为xsp-reference-service
的存储库,则当云配置客户端向配置服务器发出请求时,该请求带有标签的标签,该标签存在于应用程序(xsp-reference-service
)存储库中,但不存在于共享存储库中(shared-repo
)库中,我们得到了:
{
"timestamp": "2019-12-04T16:18:43.886+0000",
"status": 404,
"error": "Not Found",
"message": "No such label: schrodingers_branch",
"path": "/xsp-reference-service/dev/schrodingers_branch"
}
有没有一种方法可以告诉Spring Cloud Config Server不用担心共享存储库中缺少分支(正常失败)?如果没有,如果提供的标签不存在,我们是否可以强制云配置服务器使用默认标签(分支名称)?我什至会就可能会更好地满足我们使用情况的其他设置提出建议。欢迎任何评论。
答案 0 :(得分:0)
我没有必要的代表发表评论,也不知道如何告诉Spring Cloud Config Server正常失败。话虽如此,我能够找到一些信息here [1]。
上述文档中的两个要点:
- 从环境中检索值时发生的任何类型的故障 存储库会导致整个组合环境失败。
- 在使用复合环境时,重要的是所有 存储库包含相同的标签。如果你有环境 与前面的示例类似,您需要 具有主标签但Subversion存储库的配置数据 不包含一个称为master的分支,整个请求将失败。
重新设计共享共享仓库可能是您的最大利益。一种替代方法是使用Spring Vault [2]。然后(取自上面相同的链接),您可以定义不同类型的存储库,而不再遇到这种复合标签问题。
spring:
profiles:
active: git, vault
cloud:
config:
server:
git:
uri: file:///path/to/git/repo
order: 2
vault:
host: 127.0.0.1
port: 8200
order: 1