Abbiamo un'applicazione Spring-Boot in cui stiamo usando Eureka per scoprire Spring Cloud Config e recuperare le configurazioni. Stiamo integrando Vault per inserire informazioni protette/sensibili e stiamo riscontrando problemi con il caricamento e la risoluzione dei parametri. Il progetto che utilizziamo come client Vault è vault-spring-boot-starter e funziona benissimo fintanto che non lo stiamo usando insieme a config-server tramite eureka.bootstrap PropertySource che ordina
In particolare, l'URL di accesso Eureka contiene parametri/credenziali recuperati da Vault. Con tutti i componenti abilitati, la richiesta Eureka ha esito negativo quando DiscoveryClient tenta di accedere all'URL in cui i parametri non sono ancora stati compilati/sostituiti.
(Example: http://${user}:${pass}.....)
Cercando di specificare @Order e
@AutoConfigureBefore({EurekaClientAutoConfiguration.class, DiscoveryClientConfigServiceAutoConfiguration.class})
nel VaultBootstrapConfiguration del deposito-primavera-boot-starter non sembrano avere alcun impatto. Credo che il problema sia legato all'ordine in cui vengono elaborate le PropertySource, ma non sono in grado di iniettare correttamente il PropertySource di Vault prima di Eureka. Come possiamo istruire la logica custom/Vault PropertySourceLocator per l'esecuzione prima dell'accesso a DiscoveryClient e al server di configurazione?
Aggiornamento
Stiamo usando la versione primavera-cloud Angel.SR6.
Ho aggiunto l'annotazione @ Order (Ordered.HIGHEST_PRECEDENCE) a VaultPropertySourceLocator come consigliato, ma la risoluzione dei parametri continua a non funzionare. Con la registrazione debug Spring abilitata, credo che il PropertySource di Vault sia effettivamente lì, ma per qualche motivo non viene utilizzato. Ho modificato il codice in modo che VaultConfiguration implementi SmartLifecycle e Ordered (con ordine = 0 e phase = Integer.MIN_VALUE) che potrebbero influenzare le cose. Dovrò fare più debug per cercare di isolare cosa sta succedendo.
Quale versione di spring cloud stai usando? – spencergibb
Guardando il codice, è necessario un '@ Ordine' su https://github.com/markramach/vault-spring-boot-starter/blob/master/src/main/java/com/flyover/boot/vault /config/VaultPropertySourceLocator.java – spencergibb
In altre parole, 'PropertySourceLocator supporta il meccanismo di ordinamento delle molle. – spencergibb