组合环境仓库
在某些场景下,您可能希望从多个环境仓库中拉取配置数据。为此,您可以在配置服务器的 application properties 或 YAML 文件中启用 composite
profile。例如,如果您想从一个 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 仓库中为相同属性找到的值。
如果您只想从每种类型 distinct 的仓库中拉取配置数据,您可以在配置服务器的 application properties 或 YAML 文件中启用相应的 profile,而不是 composite
profile。例如,如果您想从一个 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 token。请参阅Vault 后端。 |
从环境仓库检索值时发生的任何类型的失败都会导致整个组合环境失败。如果您希望即使仓库失败组合环境也能继续,可以将 spring.cloud.config.server.failOnCompositeError 设置为 false 。 |
使用组合环境时,重要的是所有仓库都包含相同的标签。如果您的环境类似于前述示例,并且您使用 master 标签请求配置数据,但 Subversion 仓库不包含名为 master 的分支,则整个请求将失败。 |