Questo è il quarto e ultimo articolo della nostra serie di articoli su Caravan, la piattaforma cloud nativa di Bitrock basata sullo stack di HashiCorp. Leggete la prima, la seconda e la terza parte sul nostro blog.
Il livello di comunicazione tra i componenti delle applicazioni in esecuzione su Caravan sfrutta HashiCorp Consul per esporre funzionalità avanzate. La scoperta dei servizi, i controlli sullo stato di salute e il service mesh sono le caratteristiche principali che Consul abilita in Caravan.
Scoperta dei servizi e controllo dello stato di salute
Se da un lato Consul semplifica l’inserimento dei servizi nel suo registro, dall’altro offre un processo di scoperta indolore grazie alle diverse modalità di ispezione, come API, CLO o query DNS SRV.
Il registro dei servizi non sarebbe completo senza le funzionalità di controllo dello stato di salute. È possibile impostare diversi tipi di controlli sullo stato di salute, per verificare se un servizio è sano e quindi può essere visualizzato come disponibile nel registro. Quando un controllo sullo stato di salute fallisce, il registro non restituisce più l’istanza fallita nelle query dei client. In questo modo i servizi consumer smettono di fare richieste all’istanza guasta.
Consul Connect with Envoy
Consul Connect fornisce l’autorizzazione e la crittografia della comunicazione tra i servizi utilizzando TLS reciproco. Le applicazioni non sono a conoscenza di Consul Connect grazie ai proxy sidecar distribuiti accanto ad esse per comporre una Service Mesh. Questi proxy “vedono” tutto il traffico da servizio a servizio e possono raccogliere dati su di esso.
Consul Connect utilizza i proxy Envoy e può essere configurato per raccogliere metriche di livello 7 ed esportarle in strumenti come Prometheus. Connect utilizza l’identità del servizio registrato (anziché gli indirizzi IP) per applicare il controllo dell’accesso con le intenzioni. Le intenzioni dichiarano il flusso di origine e di destinazione in cui è consentita la connessione; per impostazione predefinita, tutte le connessioni sono negate in base ai principi di Zero Trust.
All’interno della Service Mesh, il traffico di comunicazione in entrata e in uscita è gestito da un componente dedicato chiamato Gateway. Il Gateway è sicuro per impostazione predefinita, cripta tutto il traffico e richiede intenzioni esplicite per consentire il passaggio delle richieste.
Service Mesh in Nomad
Nomad si integra perfettamente con Consul, consentendo di specificare le configurazioni di Consul all’interno della descrizione del lavoro di Nomad. In questo modo gli operatori possono definire in un unico punto tutte le configurazioni necessarie per l’esecuzione di un task Nomad e per registrarlo in Consul, rendendolo disponibile agli altri componenti in esecuzione nella piattaforma. In dettaglio, l’agente Nomad registra automaticamente il servizio in Consul, ne imposta il controllo dello stato di salute, richiede certificati TLS dinamici a vita breve per una comunicazione in-mesh sicura abilitata dal proxy sidecar Envoy, il cui ciclo di vita è gestito direttamente da Nomad senza alcun intervento manuale.
Vuoi saperne di più su Caravan? Visita il sito dedicato, controlla la nostra GitHub repository ed esplora la nostra documentation.
Authors: Matteo Gazzetta, DevOps Engineer @ Bitrock – Simone Ripamonti, DevOps Engineer @ Bitrock