web-dev-qa-db-de.com

So fordern Sie den Spring Cloud Config-Server auf, die Konfiguration aus einem bestimmten Zweig auszuchecken

Ich habe folgende Spring Cloud config 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  

Folgendes ist mein bootstrap.yml des Benutzers microservice:

spring: 
  application: 
    name: userservice
  cloud: 
    config: 
      uri: http://localhost:8881/  

Szenario 1
Wenn ich den Konfigurationsserver im Browser so drücke:
http://localhost:8881/development/userservice-development.yml
Es dient Datei ordnungsgemäß. und wenn ich mir basedir anschaue, d. h. target/config, sehe ich:

- userservice.yml  
- gateway.yml  

Genau das, was ich wollte, Da ich diese beiden Dateien nur im Entwicklungszweig hinzugefügt habe .

Szenario - 2
Wenn ich mein Userservice-Microservice-Projekt mit dem folgenden Befehl ausführe:
mvn clean spring-boot:run -Dspring.profiles.active=development

Es holt die richtige Datei von Git, aber es checkt aus dem Master-Zweig! aber nicht aus der Entwicklungsbranche wie ich es erwarte. erwarte ich richtig? (Zu Ihrer Information, ich habe sowohl Entwicklungs- als auch Produktions-yml in der Hauptniederlassung)

Die Frage ist also, wie verwenden wir den Konfigurationsserver? Gibt es eine Konfiguration, die wir so einstellen können, dass nur yml aus diesem bestimmten Zweig abgerufen wird? Ich glaube, wir müssen eine Bezeichnung festlegen, da laut Dokumentation die Standardbezeichnung master ist. Kann mir jemand mitteilen, wie wir im obigen Szenario die Beschriftung festlegen sollen?

9
agpt

Gemäß der Dokumentation lautet die Konfiguration, die Sie in Ihrem Konfigurations-Client festlegen möchten:

spring.cloud.config.label=mybranch

Dabei ist mybranch ein vorhandener Zweig in Ihrem Git-Repo.

21
spencergibb

Sie können den Standardzweig (allgemeiner als Git-Label) angeben, den ein Konfigurationsserver verwendet, wenn ein Client das Label nicht angibt, über die Eigenschaft spring.cloud.config.server.git.default-label. Vielleicht möchten Sie dies? Sicher löst das Problem für mich!

11
Matthew Wise

Konfigurationsserver, der für die Verwendung des Profils zur Trennung der Umgebung entwickelt wurde. Beispiel: 

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

Durch die Verzweigung treten Konfigurationsinkonsistenzen auf. 

Das Konzept des Konfigurationsservers basiert auf der 12-Faktor-Konfiguration ( http://12factor.net/config ).

Überprüfen Sie es aus detaillierten Gründen.

6
Hlex

Fügen Sie einfach einige Informationen hinzu.

Wenn jemand bootstrap.yaml verwendet, geben Sie bitte mehrere Anführungszeichen an. Seltsam ist, dass Sie keine Angebote für application.yaml brauchen :)

spring
  cloud:
      config:
          label: "myfeature,develop"
0
Imran

Wenn Sie nur den Zweig in einer Yml-Datei verwenden, konfigurieren Sie einfach:

spring:
  cloud:
    config:
      server:
        git: 
          uri: https://gitlab.com/somerepo.git
          username: someuser
          password: somepass
          default-label: branchname
0
pabloferraz