複合環境儲存庫
在某些情況下,您可能希望從多個環境儲存庫提取組態資料。若要這麼做,您可以在組態伺服器的應用程式屬性或 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 儲存庫中針對相同屬性找到的值。
如果您只想從各自屬於不同類型的儲存庫提取組態資料,您可以啟用對應的 profile,而不是組態伺服器的應用程式屬性或 YAML 檔案中的 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 令牌。請參閱 Vault 後端。 |
從環境儲存庫檢索值時,任何類型的失敗都會導致整個複合環境失敗。如果您希望即使儲存庫失敗,複合環境也能繼續運作,您可以將 spring.cloud.config.server.failOnCompositeError 設定為 false 。 |
使用複合環境時,重要的是所有儲存庫都包含相同的標籤。如果您有一個類似於前面範例中的環境,並且您請求具有 master 標籤的組態資料,但 Subversion 儲存庫不包含名為 master 的分支,則整個請求都會失敗。 |