Cloud Service Mesh con gruppi di endpoint di rete con connettività ibrida
Cloud Service Mesh supporta ambienti che vanno oltre Google Cloud, inclusi i data center on-premise e altri cloud pubblici che puoi raggiungere utilizzando la connettività ibrida.
Configura Cloud Service Mesh in modo che possa inviare traffico a endpoint esterni a Google Cloud. Questi endpoint includono:
- Bilanciatori del carico on-premise.
- Applicazioni di server su un'istanza di una macchina virtuale (VM) in un altro cloud.
- Qualsiasi altra destinazione che puoi raggiungere con la connettività ibrida e che può essere raggiunta con un indirizzo IP e una porta.
Aggiungi l'indirizzo IP e la porta di ogni endpoint a un gruppo di endpoint di rete con connettività ibrida (NEG). I NEG di connettività ibrida sono di tipo
NON_GCP_PRIVATE_IP_PORT
.
Il supporto di Cloud Service Mesh per i servizi on-premise e multi-cloud consente di:
- Instrada il traffico a livello globale, inclusi gli endpoint dei servizi on-premise e multi-cloud.
- Offri i vantaggi di Cloud Service Mesh e mesh di servizi, tra cui funzionalità come Service Discovery e la gestione avanzata del traffico, ai servizi in esecuzione sulla tua infrastruttura esistente al di fuori di Google Cloud.
- Combina le funzionalità di Cloud Service Mesh con Cloud Load Balancing per portare i servizi di rete di Google Cloud in più ambienti.
I NEG di connettività ibrida (NON_GCP_PRIVATE_IP_PORT
NEG) non sono supportati con i client gRPC senza proxy.
Casi d'uso
Cloud Service Mesh può configurare la rete tra servizi basati su VM e su contenitori in più ambienti, tra cui:
- Google Cloud
- Data center on-premise
- Altri cloud pubblici
Instradare il traffico mesh a una posizione on-premise o a un altro cloud
Il caso d'uso più semplice per questa funzionalità è il routing del traffico. La tua applicazione esegue un proxy Envoy di Cloud Service Mesh . Cloud Service Mesh indica al cliente i tuoi servizi e gli endpoint di ciascun servizio.
Nel diagramma precedente, quando l'applicazione invia una richiesta al servizio on-prem
, il client Cloud Service Mesh ispeziona la richiesta in uscita e aggiorna la relativa destinazione. La destinazione viene impostata su un endpoint associato al servizio on-prem
(in questo caso 10.2.0.1
). La richiesta viene quindi trasmessa tramite Cloud VPN o Cloud Interconnect alla destinazione prevista.
Se devi aggiungere altri endpoint, aggiorna Cloud Service Mesh per aggiungerli al tuo servizio. Non è necessario modificare il codice dell'applicazione.
Esegui la migrazione di un servizio on-premise esistente a Google Cloud
L'invio di traffico a un endpoint non Google Cloud ti consente di instradarlo verso altri ambienti. Puoi combinare questa funzionalità con la gestione avanzata del traffico per eseguire la migrazione dei servizi tra gli ambienti.
Il diagramma precedente estende il pattern precedente. Anziché configurare Cloud Service Mesh per inviare tutto il traffico al servizio on-prem
, configura Cloud Service Mesh per utilizzare la suddivisione del traffico in base al peso per suddividere il traffico in due servizi.
La suddivisione del traffico ti consente di iniziare inviando lo 0% del traffico al servizio cloud
e il 100% al servizio on-prem
. Puoi quindi aumentare gradualmente la proporzione di traffico inviato al servizio cloud
. Alla fine, invii il 100% del traffico al servizio cloud
e puoi ritirare il servizio on-prem
.
Servizi di edge della rete Google Cloud per i deployment on-premise e multi-cloud
Infine, puoi combinare questa funzionalità con le soluzioni di rete esistenti di Google Cloud. Google Cloud offre una vasta gamma di servizi di rete, come il bilanciamento del carico esterno globale con Google Cloud Armor per la protezione DDoS (Distributed Denial of Service), che puoi utilizzare con Cloud Service Mesh per offrire nuove funzionalità ai tuoi servizi on-premise o multi-cloud. Soprattutto, non è necessario esporre questi servizi on-premise o multi-cloud all'internet pubblico.
Nel diagramma precedente, il traffico proveniente dai client sulla rete internet pubblica entra nella rete di Google Cloud da un bilanciatore del carico di Google Cloud, ad esempio il nostro bilanciatore del carico delle applicazioni esterno globale. Quando il traffico raggiunge il bilanciatore del carico, puoi applicare servizi di rete di confine come la protezione DDoS di Google Cloud Armor o l'autenticazione utente di Identity-Aware Proxy (IAP). Per ulteriori informazioni, consulta Servizi del perimetro della rete per deployment multiambiente.
Dopo aver applicato questi servizi, il traffico fa una breve sosta in Google Cloud, dove un'applicazione o un proxy autonomo (configurato da Cloud Service Mesh) inoltra il traffico tramite Cloud VPN o Cloud Interconnect al tuo servizio on-premise.
Risorse e architettura di Google Cloud
Questa sezione fornisce informazioni di base sulle risorse Google Cloud che puoi utilizzare per fornire un'infrastruttura mesh di servizi gestita da Cloud Service Mesh per ambienti on-premise e multi-cloud.
Il seguente diagramma mostra le risorse Google Cloud che consentono il supporto dei servizi on-premise e multi-cloud per Cloud Service Mesh. La risorsa principale è il NEG e i relativi endpoint di rete. Le altre risorse sono quelle configurate nell'ambito di una configurazione standard di Cloud Service Mesh. Per semplicità, il diagramma non mostra opzioni come più servizi di backend globali.
Quando configuri Cloud Service Mesh, utilizzi la risorsa API dei servizi di backend globali per creare servizi. Un servizio è un costrutto logico che combina quanto segue:
- Norme da applicare quando un client tenta di inviare traffico al servizio.
- Uno o più backend o endpoint che gestiscono il traffico destinato al servizio.
I servizi on-premise e multicloud sono come qualsiasi altro servizio configurato da Cloud Service Mesh. La differenza principale è che utilizzi un NEG di connettività ibrida per configurare gli endpoint di questi servizi. Per questi NEG, il tipo di endpoint di rete è impostato su NON_GCP_PRIVATE_IP_PORT
. Gli endpoint che aggiungi ai NEG di connettività ibrida devono essere combinazioni IP:port
valide che i tuoi client possono raggiungere, ad esempio tramite connettività ibrida come Cloud VPN o Cloud Interconnect.
Ogni NEG ha un tipo di endpoint di rete e può contenere solo endpoint di rete dello stesso tipo. Questo tipo determina quanto segue:
- La destinazione a cui i tuoi servizi possono inviare traffico.
- Comportamento dei controlli di integrità.
Quando crei il NEG, configuralo come segue per poter inviare il traffico a una destinazione on-premise o multi-cloud.
- Imposta il tipo di endpoint di rete su
NON_GCP_PRIVATE_IP_PORT
. Rappresenta un indirizzo IP raggiungibile. Se questo indirizzo IP si trova on-premise o presso un altro fornitore di soluzioni cloud, deve essere raggiungibile da Google Cloud utilizzando la connettività ibrida, ad esempio quella fornita da Cloud VPN o Cloud Interconnect. - Specifica una zona Google Cloud che minimizza la distanza geografica tra Google Cloud e il tuo ambiente on-premise o multi-cloud. Ad esempio, se ospiti un servizio in un ambiente on-premise a Francoforte, in Germania, puoi specificare la zona Google Cloud
europe-west3-a
quando crei la NEG.
Il comportamento dei controlli di integrità per gli endpoint di rete di questo tipo è diverso da quello per altri tipi di endpoint di rete. Mentre altri tipi di endpoint di rete utilizzano il sistema di controllo dell'integrità centralizzato di Google Cloud, gli endpoint di rete NON_GCP_PRIVATE_IP_PORT
utilizzano il meccanismo di controllo dell'integrità distribuito di Envoy. Per ulteriori dettagli, consulta la sezione Limiti e altre considerazioni.
Considerazioni sulla connettività e sul networking
I client Cloud Service Mesh, come i proxy Envoy, devono essere in grado di connettersi
a Cloud Service Mesh all'indirizzo trafficdirector.googleapis.com:443
. Se perdi la connettività al piano di controllo di Cloud Service Mesh, si verifica quanto segue:
- I client Cloud Service Mesh esistenti non possono ricevere aggiornamenti della configurazione da Cloud Service Mesh. Continueranno a funzionare in base alla configurazione attuale.
- I nuovi client Cloud Service Mesh non possono connettersi a Cloud Service Mesh. Non possono utilizzare il mesh di servizi finché la connettività non viene ristabilita.
Se vuoi inviare traffico tra Google Cloud e ambienti on-premise o multi-cloud, questi devono essere collegati tramite connettività ibrida. Ti consigliamo una connessione ad alta disponibilità abilitata da Cloud VPN o Cloud Interconnect.
Gli indirizzi IP e gli intervalli di indirizzi IP delle subnet on-premise, di altri cloud e di Google Cloud non devono sovrapporsi.
Limitazioni e altre considerazioni
Di seguito sono riportate le limitazioni dell'utilizzo dei NEG di connettività ibrida.
Configurazione di proxyBind
in corso…
Puoi impostare il valore di proxyBind
solo quando crei un targetHttpProxy
.
Non puoi aggiornare un targetHttpProxy
esistente.
Connettività e interruzioni della connettività
Per informazioni dettagliate sui requisiti e sulle limitazioni della connettività, consulta la sezione Considerazioni sulla connettività e sulla rete.
Tipi di backend misti
Un servizio di backend può avere backend VM o NEG. Se un servizio di backend ha backend NEG, tutti i NEG devono contenere lo stesso tipo di endpoint di rete. Non puoi avere un servizio di backend con più NEG, ciascuno con tipi di endpoint diversi.
Una mappa URL può avere regole host che risolvono in servizi di backend diversi. Potresti avere un servizio di backend con solo NEG di connettività ibrida (con endpoint on-premise) e un servizio di backend con NEG autonomi (con endpoint GKE). La mappa URL può contenere regole, ad esempio la suddivisione del traffico in base al peso, che suddividono il traffico tra ciascuno di questi servizi di backend.
Utilizzo di un gruppo di endpoint di rete con endpoint di tipo NON_GCP_PRIVATE_IP_PORT
con i backend Google Cloud
È possibile creare un servizio di backend con un NEG di connettività ibrida che indica i backend in Google Cloud. Tuttavia, sconsigliamo questo schema perché i NEG con connettività ibrida non beneficiano del controllo dello stato centralizzato. Per una spiegazione dei controlli di integrità centralizzati e distribuiti, consulta la sezione Controllo di integrità.
Registrazione degli endpoint
Se vuoi aggiungere un endpoint a un NEG, devi aggiornarlo. Questa operazione può essere eseguita manualmente o automatizzata utilizzando le API REST NEG di Google Cloud o Google Cloud CLI.
Quando viene avviata una nuova istanza di un servizio, puoi utilizzare le API Google Cloud per registrarla con il NEG configurato. Quando si utilizzano i gruppi di istanze gestite di Compute Engine (MIG) o GKE (in Google Cloud), il controller MIG o NEG gestisce automaticamente la registrazione degli endpoint.
Controllo di integrità
Quando utilizzi NEG di connettività ibrida, il comportamento dei controlli di integrità è diverso da quello dei controlli di integrità centralizzati standard nei seguenti modi:
- Per gli endpoint di rete di tipo
NON_GCP_PRIVATE_IP_PORT
, Cloud Service Mesh configura i propri client in modo che utilizzino il piano dati per gestire il controllo dell'integrità. Per evitare di inviare richieste a backend non integri, le istanze Envoy eseguono i propri controlli di integrità e utilizzano i propri meccanismi. - Poiché il piano dati gestisce i controlli di integrità, non puoi utilizzare la console Google Cloud, l'API o Google Cloud CLI per recuperare lo stato dei controlli di integrità.
In pratica, l'utilizzo di NON_GCP_PRIVATE_IP_PORT
significa quanto segue:
- Poiché ogni client Cloud Service Mesh gestisce i controlli di integrità in modo distribuito, potresti notare un aumento del traffico di rete a causa di questi controlli. L'aumento dipende dal numero di client Cloud Service Mesh e dal numero di endpoint di cui ogni client ha bisogno per il controllo di stato. Ad esempio:
- Quando aggiungi un altro endpoint a un NEG di connettività ibrida, i client Cloud Service Mesh esistenti potrebbero iniziare a controllo di integrità dell'integrità degli endpoint nei NEG di connettività ibrida.
- Quando aggiungi un'altra istanza al tuo mesh di servizi (ad esempio un'istanza VM che esegue il codice dell'applicazione e un client Cloud Service Mesh), la nuova istanza potrebbe iniziare a eseguire il controllo di stato degli endpoint nei NEG di connettività ibrida.
- Il traffico di rete a causa dei controlli di integrità aumenta a un tasso quadratico
(
O(n^2)
).
Rete VPC
Un mesh di servizi è identificato in modo univoco dal nome della rete Virtual Private Cloud (VPC). I client Cloud Service Mesh ricevono la configurazione da Cloud Service Mesh in base alla rete VPC specificata nella configurazione di bootstrap. Pertanto, anche se il tuo mesh è completamente esterno a un data center Google Cloud, devi fornire un nome di rete VPC valido nella configurazione di bootstrap.
Service account
In Google Cloud, il bootstrap di Envoy predefinito è configurato per leggere le informazioni dell'account di servizio da uno o entrambi gli ambienti di deployment Compute Engine e GKE. Quando esegui l'operazione al di fuori di Google Cloud, devi specificare esplicitamente un account di servizio, il nome della rete e il numero del progetto nel bootstrap di Envoy. Questo account di servizio deve disporre di autorizzazioni sufficienti per connettersi all'API Cloud Service Mesh.
Passaggi successivi
- Per configurare Cloud Service Mesh per i deployment on-premise e multicloud, consulta Servizi del perimetro della rete per deployment multiambiente.
- Per scoprire di più su Cloud Service Mesh, consulta la panoramica di Cloud Service Mesh.
- Per informazioni sui NEG di internet, consulta Cloud Service Mesh con gruppi di endpoint di rete internet.