與所有應用共享配置

根據所採用的方法不同,在所有應用之間共享配置的方式也有所不同,具體如下所述:

基於檔案的倉庫

對於基於檔案的倉庫(git、svn 和 native),檔名為 application* 的資源(application.propertiesapplication.ymlapplication-*.properties 等)在所有客戶端應用之間共享。你可以使用這些檔名的資源來配置全域性預設值,並在必要時透過特定於應用的配置檔案進行覆蓋。

屬性覆蓋 功能也可用於設定全域性預設值,允許應用使用佔位符在本地覆蓋它們。

使用“native” profile(本地檔案系統後端)時,應使用一個明確的搜尋位置,該位置不屬於服務本身的配置。否則,預設搜尋位置中的 application* 資源會被移除,因為它們是服務端的一部分。

Vault 服務端

使用 Vault 作為後端時,可以透過將配置放在 secret/application 中來與所有應用共享配置。例如,如果執行以下 Vault 命令,所有使用 Config Server 的應用都將可以使用屬性 foobaz

$ vault write secret/application foo=bar baz=bam

CredHub 服務端

使用 CredHub 作為後端時,可以透過將配置放在 /application/ 中,或透過將其放在應用的 default profile 中來與所有應用共享配置。例如,如果執行以下 CredHub 命令,所有使用 Config Server 的應用都將可以使用屬性 shared.color1shared.color2

credhub set --name "/application/profile/master/shared" --type=json
value: {"shared.color1": "blue", "shared.color": "red"}
credhub set --name "/my-app/default/master/more-shared" --type=json
value: {"shared.word1": "hello", "shared.word2": "world"}

JDBC 環境倉庫

要使用 JDBC 後端共享配置,請在資料庫中插入記錄,其中應用程式列的值為 'application',用於那些打算在所有客戶端之間共享的條目。特定於應用的屬性可以覆蓋這些共享配置,從而為你的應用環境提供靈活性和控制。

INSERT INTO PROPERTIES (APPLICATION, PROFILE, LABEL, KEY, VALUE)
VALUES ('application', 'default', 'master', 'a.b.c', 'shared-value');
INSERT INTO PROPERTIES (APPLICATION, PROFILE, LABEL, KEY, VALUE)
VALUES ('myapp', 'prod', 'master', 'd.e.f', 'specific-value');

請參閱 JdbcEnvironmentRepository 實現及其相關測試,以獲取有關使用 JDBC 倉庫進行設定和配置管理的詳細示例。