組合環境倉庫
在某些場景下,您可能希望從多個環境倉庫中拉取配置資料。為此,您可以在配置伺服器的 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 的分支,則整個請求將失敗。 |