私はこの同じ厄介なシナリオに直面しました。
最初に、このシナリオをどのように解決したかを述べ、後で以前のアプローチで犯した過ちを強調します。私の文脈では、私は使用していますapplication.properties
私のアプリケーションの概要は以下のようになります: 私は一元化された構成サーバーを持っており、それぞれの構成データをそれぞれのマイクロサービスに提供しています。
たとえば、マイクロサービス「limits-service」は、いくつかの構成データを必要とし、中央構成サーバー (「spring-cloud-config-server」) から取得します。したがって、これを実現するために、「limits-service」は中央構成サーバーにクエリを実行し、中央構成サーバーは要求されたデータをリモート git ブランチ (「spring-cloud-samples」) からフェッチします。
┌---------------------- <--> [currency-exchange-service]
[git] <--> [spring-cloud-config-server] ------- <--> [limits-service]
└---------------------- <--> [currency-conversion-service]
解決:
中央構成サーバーを介していくつかのマイクロサービスによって消費されるすべての構成ファイル用に、新しい Git リポジトリ (spring-cloud-samples) を作成しただけです。
application.properties
中央構成サーバー ('spring-cloud-config-server')のファイルで、次のようにプロパティを指定しました。
spring.cloud.config.server.git.uri=https://github.com/{username}/{git-reponame.git}
次のように見えるかもしれません
spring.cloud.config.server.git.uri= https://github.com/alice123/spring-cloud-samples.git
それだけです!
central-config-server を起動すると、次のようなログが表示されます。
2020-02-17 05:25:07.867 INFO 15000 --- [nio-8888-exec-9] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/D:/Users/{userName}/AppData/Local/Temp/config-repo-3453413414/limits-service.properties
さらに、「limits-service」を介して構成データも消費しましたが、それは魅力的に機能しました!
次のことを試してみましたが、失敗し、多くの叫び声と叫び声が上がりました. XD
これと同じコンセプトを試している人が夜の仕事を節約できるように、またはおそらくそれを減らすために、私はそれを投稿しています:p
1)最初は、次のように、central-config-server の application.properties ファイルで Git リポジトリ SSH URL を使用していました。
spring.cloud.config.server.git.uri=git@github.com:alice123/spring-cloud-samples.git
spring.cloud.config.server.git.username=alice123
spring.cloud.config.server.git.password=alice123Pwd
その結果、次のエラーが発生しました。
2020-02-17 05:22:45.091 WARN 15000 --- [nio-8888-exec-1] .c.s.e.MultipleJGitEnvironmentRepository : Error occured cloning to base directory.
org.eclipse.jgit.api.errors.TransportException: git@github.com:aniketrb-github/spring-cloud-samples.git: Auth fail
2)後で、Git リモート ブランチ (spring-cloud-samples) を指しているネイティブ/ローカル git ディレクトリから構成データを読み込もうとしました。次に、application.properties ファイルに以下を指定しました。
spring.cloud.config.server.git.uri=file://D:\aniket-workspace\github-ws\microservices\udemy-microservices\git-localconfig-repo
これは次のようにクラッシュしました:
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.properties'
3)後で十分にグーグルした後、上記のプロパティを以下に変更しました!!:
spring.cloud.config.server.git.uri=D:\\\\alice-workspace\\\\github-ws\\\\microservices\\\\git-localconfig-repo
「制限サービス」は、「spring.cloud.config.server」から構成データを取得しようとしたときに、次のエラーで最終的に失敗しました:
404: Not Found - "org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: master"
私が述べた解決策は、私が遭遇したすべての失敗のためにうまくいきました。間違っている場合は訂正してください。必要に応じて即興でお願いします。これが役に立ち、重要な時間を節約できることを願っています。
参照: spring-cloud-config、https-or-ssh、git-ssh-windows、git-ssh-windows-troubleshooting