2017-02-10 10 views
3

Ich habe mit Frühlings-Cloud-Config gebastelt, sondern einen Anwendungsfall, wo Konfigurationseigenschaften in zwei Typen unterteilt werden:Wie wird Spring Cloud Config mit einem Git- und Vault-Composite-Environment-Repository verwendet?

  1. Nicht geheime Werte, die Entwickler sollten (zB JDBC anzuzeigen und zu pflegen können URLs, etc.)

  2. geheime Werte, die nur von den benannten Personen mit besonderem Zugang angesehen und sollen beibehalten werden (zB Passwörter)

So bin ich in der Unterstützung sehr interessiert für "Composite Environment Repositories ", derzeit in den Snapshot-Versionen verfügbar. Es scheint, als könnte ich Git für die vom Entwickler verwalteten Eigenschaften, Vault für die geheimen Eigenschaften verwenden und so konfigurieren, dass Vault im Falle eines Konflikts immer Vorrang vor Git hat.

Allerdings finde ich, dass nicht nur Vault immer Vorrang hat ... es wird als das exklusive Backend verwendet. Es werden keine Eigenschaften von Git zurückgegeben.

Mein application.yml sieht wie folgt aus:

spring: 
    profiles: 
    active: git, vault 
    cloud: 
    config: 
     server: 
     vault: 
      order: 1 
     git: 
      uri: https://github.com/spring-cloud-samples/config-repo 
      basedir: target/config 
      order: 2 

ich eine Eigenschaft geschrieben haben, wie dies Vault:

vault write secret/foo foo=vault 

Und ich meine Config Server wie folgt aufrufen:

curl -X "GET" "http://127.0.0.1:8888/foo/default" -H "X-Config-Token: a9384085-f048-7c99-ebd7-e607840bc24e" 

Die JSON-Antwortnutzlast enthält jedoch nur die Vault-Eigenschaft. Nichts von Git:

{ 
    "name": "foo", 
    "profiles": [ 
     "default" 
    ], 
    "label": null, 
    "version": null, 
    "state": null, 
    "propertySources": [ 
     { 
      "name": "vault:foo", 
      "source": { 
       "foo": "vault" 
      } 
     } 
    ] 
} 

Es spielt keine Rolle, ob ich die order Einstellungen in application.yml, Reverse Git höhere Priorität als Vault zu geben. Solange das Vault-Profil aktiv ist, fungiert es als exklusives Backend.

Allerdings, wenn ich das Gewölbe Profil deaktivieren, dann die gleiche curl Betrieb zurückkehrt ergibt sich aus dem Back-End-Git:

{ 
    "name": "foo", 
    "profiles": [ 
     "default" 
    ], 
    "label": "master", 
    "version": "30f5f4a144dba41e23575ebe46369222b7cbc90d", 
    "state": null, 
    "propertySources": [ 
     { 
      "name": "https://github.com/spring-cloud-samples/config-repo/foo.properties", 
      "source": { 
       "democonfigclient.message": "hello spring io", 
       "foo": "from foo props" 
      } 
     }, 
     { 
      "name": "https://github.com/spring-cloud-samples/config-repo/application.yml", 
      "source": { 
       "info.description": "Spring Cloud Samples", 
       "info.url": "https://github.com/spring-cloud-samples", 
       "eureka.client.serviceUrl.defaultZone": "http://localhost:8761/eureka/", 
       "foo": "from-default" 
      } 
     } 
    ] 
} 

Gibt es etwas, was ich vermisst werden könnte? Ein Grund, warum die Git-Eigenschaften und Vault-Eigenschaften nicht ... nun, "zusammengefügt" sind?

Das einzige Beispiel in der Dokumentation zeigt, dass Git und Subversion zusammen verwendet werden, und es gibt eine Notiz, die Sie darauf hinweist, dass alle Repos dasselbe Label enthalten sollten (z. B. master). Ich frage mich, ob das das Problem ist, da das Label immer null für Vault ist.

+0

Hallo Steve danke für den Bericht.Ich werde mir das nächste Mal anschauen. –

+0

Welche Version von Spring Cloud verwenden Sie? Ich habe es gerade versucht und habe es bekommen und es hat für mich funktioniert. –

+0

1.2.3 (Schnappschuss). Ich habe gerade das Beispielprojekt unter https://github.com/spring-cloud-samples/configserver angepasst. –

Antwort

2

Ich glaube, dass etwas mit Ihren Abhängigkeiten falsch sein muss. Ich habe auch einen Spring Cloud Config Server mit Git und Vault eingerichtet, der gut funktioniert. Ich glaube, die Verwendung von 1.3.0-BUILD.SNAPSHOT ist nicht genug. Die Spring Cloud Config 1.3.0-BUILD.SNAPSHOT hängt vom Spring-Vault-Core ab. Möglicherweise fehlt diese Abhängigkeit. Und das könnte die fehlerhafte Bean-Erstellung verursachen, die Sie in einem Ihrer Kommentare erwähnt haben. Hier ist a link zu einem Beispielprojekt mit Git und Vault. Fühlen Sie sich frei, es auszuprobieren.

+0

Enorme Dank an @ Ryan-Baxter und an sich. Ich habe jetzt die gewünschte Konfiguration [Server] (https://github.com/steve-perkins/spring-config-server) und [client] (https://github.com/steve-perkins/spring-config-sample -App) und läuft. –

Verwandte Themen