组合环境资源库
在某些情况下,您可能希望从多个环境资源库中提取配置数据。为此,您可以在配置服务器的应用程序属性或 YAML 文件中启用`composite`配置文件。例如,如果您想从 Subversion 资源库以及两个 Git 资源库中提取配置数据,您可以为配置服务器设置以下属性:
spring:
profiles:
active: composite
cloud:
config:
server:
composite:
-
type: svn
uri: file:///path/to/svn/repo
-
type: git
uri: file:///path/to/rex/git/repo
-
type: git
uri: file:///path/to/walter/git/repo
使用此配置,优先级由`composite`键下列出的资源库的顺序决定。在上面的示例中,Subversion 资源库首先列出,因此在 Subversion 资源库中找到的值将覆盖在其中一个 Git 资源库中为同一属性找到的值。在`rex` Git 资源库中找到的值将在`walter` Git 资源库中为同一属性找到的值之前使用。
如果您只想从每个类型不同的资源库中提取配置数据,则可以在配置服务器的应用程序属性或 YAML 文件中启用相应的配置文件,而不是`composite`配置文件。例如,如果您想从单个 Git 资源库和单个 HashiCorp Vault 服务器中提取配置数据,您可以为配置服务器设置以下属性:
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
使用此配置,优先级可以通过`order`属性确定。您可以使用`order`属性指定所有资源库的优先级顺序。`order`属性的数值越低,优先级越高。资源库的优先级顺序有助于解决可能包含相同属性值的资源库之间的任何潜在冲突。
如果您的组合环境包含 Vault 服务器(如上例所示),则必须在对配置服务器发出的每个请求中包含 Vault 令牌。请参阅Vault 后端。 |
从环境资源库检索值时发生的任何类型的故障都会导致整个组合环境失败。如果您希望即使资源库发生故障也能继续组合,您可以将`spring.cloud.config.server.failOnCompositeError`设置为`false`。 |
使用组合环境时,重要的是所有资源库都包含相同的标签。如果您有一个类似于前面示例中的环境,并且您请求带有`master`标签的配置数据,但 Subversion 资源库不包含名为`master`的分支,则整个请求都会失败。 |