Integrazione di Cloud Service Mesh con Service Directory
Questo documento fornisce una panoramica su come utilizzare il registro dei servizi di Service Directory con Cloud Service Mesh, che consente a Cloud Service Mesh di instradare il traffico e applicare le norme sul traffico ai servizi registrati con Service Directory. Questo documento è destinato agli sviluppatori di Cloud Service Mesh che vogliono integrare le loro applicazioni con altri servizi in Google Cloud.
Service Directory è un registro dei servizi che memorizza le informazioni sui servizi di rete registrati, inclusi nomi, posizioni e attributi. Puoi registrare automaticamente i tuoi servizi, acquisendo tutti i dettagli, e tutti i servizi possono essere registrati, indipendentemente dalla loro infrastruttura.
Il registro può contenere non solo servizi, ma anche servizi ibridi eseguiti on-premise o in altri cloud pubblici. Google Cloud Per comprendere al meglio le informazioni contenute in questo documento, ti consigliamo di acquisire familiarità con le nozioni di base delle operazioni di Service Directory.
Quando utilizzi il registro dei servizi di Service Directory con Cloud Service Mesh, l'integrazione rende i servizi nel registro dei servizi disponibili per le applicazioni nel mesh e per i gateway configurati da Cloud Service Mesh. L'integrazione di Cloud Service Mesh con Service Directory è supportata, con Envoy e con gRPC senza proxy, per le integrazioni di Service Directory con bilanciatori del carico di rete pass-through interni, bilanciatori del carico delle applicazioni interni e Private Service Connect L4.
Per integrare i tuoi servizi, registra un servizio con Service Directory, quindi associa il servizio a un servizio di backend Cloud Service Mesh. Una volta stabilita un'associazione, Cloud Service Mesh esegue query su Service Directory per ottenere informazioni sul servizio registrato e su come è possibile contattarlo. Cloud Service Mesh tiene traccia anche di eventuali modifiche al servizio. L'utilizzo dell'integrazione consente al mesh di servizi e al gateway autogestito di inviare traffico a questi servizi. Ti consente inoltre di applicare policy, ad esempio policy avanzate di gestione del traffico, che configuri in Cloud Service Mesh.
Quando utilizzi questa integrazione, il binding del servizio funge da backend, indipendentemente dal tipo di backend utilizzato dal servizio stesso. L'integrazione semplifica il deployment di Cloud Service Mesh, perché Cloud Service Mesh può inviare traffico al servizio indipendentemente dal tipo di backend.
Quando un servizio viene registrato in Service Directory, non devi configurare gruppi di istanze o diversi tipi di gruppi di endpoint di rete (NEG) per accedere ai servizi di cui hai bisogno. Puoi registrare automaticamente Google Kubernetes Engine, i bilanciatori del carico interni e Private Service Connect in Service Directory, semplificando ulteriormente l'accesso di Cloud Service Mesh a questi servizi.
Risorse utilizzate dall'integrazione
L'integrazione tra Cloud Service Mesh e Service Directory utilizza le seguenti risorse.
Servizi Service Directory
Service Directory è un registry di servizi. Service Directory ti consente di registrare vari tipi di servizi, inclusi quelli basati su Google Cloud o altri ambienti (ad esempio un data center on-premise). Ogni servizio è costituito da un nome univoco e da zero o più endpoint di servizio. Un endpoint di servizio è composto da un indirizzo, una porta, proprietà e metadati. Se non sono presenti endpoint,non puoi instradare il traffico al servizio.
Associazioni dei servizi
Un binding del servizio è una risorsa che include il nome di dominio completo (FQDN) del servizio Service Directory. Ad esempio,
projects/test-proj/locations/us-east1/namespaces/test-namespace/services/test-service
è un FQDN per un servizio Service Directory.
Servizi di backend
I servizi di backend sono risorse di configurazione che forniscono informazioni a Cloud Service Mesh, inclusi i backend, come i gruppi di istanze gestite, a cui il servizio di backend indirizza il traffico. I servizi di backend che fanno riferimento ai binding di servizio non possono avere backend. Per utilizzare l'integrazione di Cloud Service Mesh con Service Directory, crea un nuovo servizio di backend per fare riferimento ai binding del servizio.
Un servizio di backend può avere più associazioni di servizi. Questa configurazione è utile in una situazione in cui hai deployment regionali della stessa applicazione. Potresti registrare ogni deployment regionale in un'istanza regionale di Service Directory, come servizio regionale 1 e servizio regionale 2. Ciascuno di questi servizi di Service Directory regionali può essere associato allo stesso servizio di backend utilizzando due binding di servizio. Il binding del servizio globale 1 sarebbe associato al servizio regionale 1 nella regione A e il binding del servizio globale 2 sarebbe associato al servizio regionale 2 nella regione B.
Casi d'uso
L'integrazione del deployment di Cloud Service Mesh con Service Directory consente nuovi casi d'uso utili quando dipendi da servizi di proprietà o pubblicati da altri team o organizzazioni.
Rendere disponibili i servizi esistenti per Cloud Service Mesh
Service Directory si integra con i prodotti Google Cloud come GKE, i bilanciatori del carico di rete passthrough interni e i bilanciatori del carico delle applicazioni interni. Quando i produttori di servizi creano un servizio GKE o un bilanciatore del carico, possono registrarlo in Service Directory.
Dopo la registrazione di un servizio in Service Directory, puoi configurare Cloud Service Mesh per comunicare con quel servizio. I client Cloud Service Mesh possono quindi comunicare con i servizi eseguiti dietro i bilanciatori del carico di rete passthrough interni e i bilanciatori del carico delle applicazioni interni.
Migliorare il coordinamento tra i produttori e i consumatori di servizi
Le grandi aziende hanno molti team di sviluppatori indipendenti. Questi team mettono a disposizione i propri servizi per altri team, in modo che un numero maggiore di team possa utilizzare le funzionalità fornite dal servizio condiviso. In questo modo vengono create dipendenze tra i team. Sebbene queste dipendenze consentano ai team di condividere i propri sforzi, creano anche un sovraccarico di coordinamento.
Quando utilizzi Service Directory, un team (il produttore) registra un servizio che vuole rendere disponibile ad altri team o organizzazioni (i consumatori). Il producer condivide un riferimento a questo servizio con un consumer. Il consumer può utilizzare questo riferimento per cercare il servizio del producer in Service Directory e scoprire gli endpoint del servizio. Ad esempio, l'endpoint potrebbe essere un indirizzo IP virtuale (VIP) su cui il servizio del producer prevede di ricevere traffico.
L'integrazione di Cloud Service Mesh con Service Directory consente di automatizzare il processo associando un servizio Service Directory a un servizio di backend Cloud Service Mesh, il che offre i seguenti vantaggi:
- Cloud Service Mesh risolve automaticamente gli endpoint del servizio sincronizzandoli da Service Directory. Se gli endpoint del servizio Service Directory vengono aggiornati, Cloud Service Mesh sincronizza automaticamente queste modifiche.
- Puoi impostare varie norme di gestione del routing e del traffico, ad esempio timeout, in Cloud Service Mesh. Queste norme ti consentono di perfezionare il modo in cui le tue applicazioni inviano richieste al servizio Service Directory. Per informazioni sul routing e sulla gestione del traffico in Cloud Service Mesh, vedi Gestione avanzata del traffico.
- Cloud Service Mesh utilizza funzionalità di gestione del traffico come il bilanciamento del carico basato sulla prossimità per indirizzare in modo ottimale il traffico dalle applicazioni agli endpoint, ad esempio riducendo al minimo tempo di round trip.
Quando tu, in qualità di consumatore, utilizzi Cloud Service Mesh e colleghi un servizio di backend a un servizio Service Directory, il sovraccarico di coordinamento tra i team viene ridotto.
- Collega il servizio,
Payments
, per nome. Cloud Service Mesh condivide informazioni sul servizio
Payments
con i suoi client.- Ad esempio, i proxy sidecar in esecuzione nella mesh di servizi
ora conoscono l'endpoint (ad esempio
10.0.0.1:80
) in cui è possibile raggiungere il servizio.
- Ad esempio, i proxy sidecar in esecuzione nella mesh di servizi
ora conoscono l'endpoint (ad esempio
Le tue applicazioni possono chiamare questo servizio per nome senza che tu o la tua applicazione dobbiate sapere nulla sull'endpoint del servizio esterno. Nel diagramma, il servizio è il servizio
Payments
.Quando il producer di servizi aggiorna il servizio esterno (ad esempio, modificandone l'endpoint), Cloud Service Mesh rileva l'aggiornamento e lo condivide senza problemi con i suoi client.
Accedere ai servizi all'interno di un perimetro utilizzando un punto di ingresso
Un team potrebbe raggruppare una raccolta di servizi all'interno di un perimetro Controlli di servizio VPC ed esporre questi servizi tramite un unico punto di ingresso. Questo punto di ingresso può essere registrato in Service Directory e reso disponibile agli utenti che vogliono accedere ai servizi all'interno del perimetro. Per maggiori informazioni sui perimetri dei Controlli di servizio VPC, consulta Dettagli e configurazione del perimetro di servizio.
Ad esempio, un team crea un gateway Ingress utilizzando un bilanciatore del carico delle applicazioni interno che distribuisce le richieste a una raccolta di servizi Kubernetes in un cluster. Questo gateway in entrata viene registrato automaticamente come servizio in Service Directory. Un consumatore che vuole accedere ai servizi Kubernetes può cercare questo gateway Ingress in Service Directory. Il consumer può quindi configurare il mesh Cloud Service Mesh per accedere ai servizi all'interno del perimetro tramite il gateway.
Connettere servizi su più domini
Potresti avere servizi in domini diversi che devi connettere.
Connettere i servizi tra le organizzazioni
Potresti voler accedere a servizi di proprietà di un'altra organizzazione, come le API Google (ad esempio Cloud SQL) o servizi gestiti di terze parti.
Service Directory supporta Private Service Connect. Quando crei un endpoint Private Service Connect nella tua rete, l'endpoint può essere registrato come servizio con Service Directory. Puoi quindi collegare questo servizio a Cloud Service Mesh, in modo che i client mesh, come i client Envoy e gRPC, e i gateway autogestiti, come Apigee, possano chiamare questi servizi.
L'esempio precedente, che utilizza Cloud Storage, illustra come puoi utilizzare Private Service Connect per chiamare le API di Google utilizzando un endpoint nella tua rete Virtual Private Cloud.
Connetti servizi tra reti VPC
Alcune aziende utilizzano più reti VPC come parte del proprio Google Cloud deployment. In questi casi, un servizio in una rete VPC potrebbe dover accedere a un servizio in un'altra rete VPC. Puoi configurare il peering VPC per accedere a un servizio in una rete VPC diversa, ma questa configurazione crea complicazioni quando ci sono intervalli di indirizzi IP sovrapposti tra le reti in peering.
Private Service Connect può rendere accessibile in modo sicuro e privato un servizio in una rete VPC ai servizi in un'altra rete VPC, utilizzando un singolo endpoint IP:port
.
Altri esempi nei vari domini
I due esempi precedenti illustrano casi in cui potrebbe essere necessario eseguire il cross-domain, ma esistono molti altri esempi. Ad esempio, crei un gateway che si trova all'intersezione di due regioni Google Cloud . I servizi in una regione possono raggiungere i servizi in un'altra regione tramite questo gateway. Registra il gateway come servizio in Service Directory, poi utilizza il gateway con Cloud Service Mesh come descritto in questo documento.
Applicare i criteri quando si accede ai servizi
Cloud Service Mesh supporta funzionalità come la gestione avanzata del traffico, configurabili tramite criteri. Ad esempio, puoi impostare un criterio di mirroring del traffico in modo che ogni volta che un client invia una richiesta a un particolare servizio di backend, il traffico venga inviato anche a un secondo servizio di backend.
Quando associ un servizio Service Directory a un servizio di backend Cloud Service Mesh, puoi configurare questi tipi di criteri in Cloud Service Mesh. I proxy sidecar, i proxy intermedi o edge e i client senza proxy vengono a conoscenza di queste norme e le applicano.
Alcuni esempi:
- Suddivisione del traffico in base al peso, ad esempio tra due servizi Service Directory
- Mirroring del traffico, ad esempio a un servizio di controllo
users
vengono replicate nel servizio audit
(fai clic per ingrandire)Supporto per Cloud Service Mesh e client esistenti
Anche quando Cloud Service Mesh viene implementato nella tua organizzazione, potresti avere client che non lo utilizzano. Ad esempio, potresti dover accedere a un servizio da una macchina virtuale che non fa parte di una rete mesh di servizi.
Quando associ un servizio Service Directory a un servizio di backend Cloud Service Mesh, i client di Cloud Service Mesh ricevono automaticamente informazioni aggiornate su quel servizio. I tuoi client che non utilizzano Cloud Service Mesh possono cercare e utilizzare le informazioni sui servizi in Service Directory.
Limitazioni
Cloud Service Mesh non supporta i NEG FQDN (NEG INTERNET_FQDN_PORT
) nell'integrazione di Service Directory.
Passaggi successivi
- Scopri come configurare l'integrazione.
- Per informazioni sull'osservabilità con questa integrazione, consulta Osservabilità e debug con Service Directory.