私は次のSpringクラウド設定application.ymlを持っています:
spring:
application:
name: configserver
cloud:
config:
server:
git:
uri: https://[email protected]/xyz/microservices-configs.git
username: xyz
password: xyz
basedir: target/configs
server:
port: 8881
以下は私のbootstrap.yml
/ユーザーマイクロサービス:
spring:
application:
name: userservice
cloud:
config:
uri: http://localhost:8881/
シナリオ-1
ブラウザで次のように設定サーバーにアクセスすると:http://localhost:8881/development/userservice-development.yml
適切にファイルを提供します。 basedir
、つまりtarget/configを見ると、次のことがわかります。
- userservice.yml
- gateway.yml
まさに私が欲しかったものこの2つのファイルは開発ブランチでのみ追加したため。
シナリオ-2
次のコマンドを使用してuserserviceマイクロサービスプロジェクトを実行すると:mvn clean spring-boot:run -Dspring.profiles.active=development
それはgitから正しいファイルをフェッチしますが、マスターブランチからチェックアウト!ですが開発ブランチからではありませんが期待どおりです。私は権利を期待していますか? (FYI私はマスターブランチに開発とプロダクションの両方のymlがあります)
だから問題は、設定サーバーをどのように使用するのですか?特定のブランチからのみymlをフェッチするように設定できる設定はありますか?文書によると、デフォルトのラベルはマスターであるため、いくつかのラベルを設定する必要があると思います。上記のシナリオでラベルを設定する方法を誰かに教えてもらえますか?
documentation によると、構成クライアントで設定する構成は次のとおりです。
spring.cloud.config.label=mybranch
ここで、mybranch
はgitリポジトリの既存のブランチです。
プロパティspring.cloud.config.server.git.default-label
を使用して、クライアントがラベルを指定しない場合に構成サーバーが使用するデフォルトのブランチ(より一般的にはGitラベル)を指定できます。おそらくこれが目的ですか?確かに私のために問題を解決します!
プロファイルを使用して環境を分離するように設計された構成サーバー。例:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
分岐により構成に矛盾が生じます。
構成サーバーの概念は、12要素の構成( http://12factor.net/config )に基づいています。
詳細な理由については、こちらをご覧ください。
情報を追加するだけです。
だれかがbootstrap.yamlを使用している場合は、複数のブランチを二重引用符で囲んでください。奇妙なことに、application.yamlの引用符は必要ありません。
spring
cloud:
config:
label: "myfeature,develop"
Ymlファイルでブランチのみを使用する場合は、次のように構成します。
spring:
cloud:
config:
server:
git:
uri: https://gitlab.com/somerepo.git
username: someuser
password: somepass
default-label: branchname