與所有應用共享配置
根據所採用的方法不同,在所有應用之間共享配置的方式也有所不同,具體如下所述:
基於檔案的倉庫
對於基於檔案的倉庫(git、svn 和 native),檔名為 application*
的資源(application.properties
、application.yml
、application-*.properties
等)在所有客戶端應用之間共享。你可以使用這些檔名的資源來配置全域性預設值,並在必要時透過特定於應用的配置檔案進行覆蓋。
屬性覆蓋 功能也可用於設定全域性預設值,允許應用使用佔位符在本地覆蓋它們。
使用“native” profile(本地檔案系統後端)時,應使用一個明確的搜尋位置,該位置不屬於服務本身的配置。否則,預設搜尋位置中的 application* 資源會被移除,因為它們是服務端的一部分。 |
Vault 服務端
使用 Vault 作為後端時,可以透過將配置放在 secret/application
中來與所有應用共享配置。例如,如果執行以下 Vault 命令,所有使用 Config Server 的應用都將可以使用屬性 foo
和 baz
$ vault write secret/application foo=bar baz=bam
CredHub 服務端
使用 CredHub 作為後端時,可以透過將配置放在 /application/
中,或透過將其放在應用的 default
profile 中來與所有應用共享配置。例如,如果執行以下 CredHub 命令,所有使用 Config Server 的應用都將可以使用屬性 shared.color1
和 shared.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 倉庫進行設定和配置管理的詳細示例。