Configura le VM di Compute Engine utilizzando il deployment Envoy automatico
Questo documento si applica alle API precedenti. Se esegui il deployment con le nuove API di routing dei servizi, che sono in anteprima, consulta la configurazione di Cloud Service Mesh per i proxy Envoy con servizi HTTP.
Prima di seguire le istruzioni riportate in questa guida, completa le attività preliminari descritte in Prepararsi alla configurazione delle API di routing dei servizi con Envoy e carichi di lavoro senza proxy.
Questa guida mostra come eseguire il deployment automatico di un piano dati composto da Configura i proxy sidecar Envoy utilizzando Cloud Service Mesh e verifica per assicurarti che funzioni correttamente. Questo processo prevede seguenti:
- Abilitazione dell'API Cloud OS Config.
- Creazione di un servizio di test.
- Deployment di un piano dati semplice su Compute Engine mediante proxy Envoy (Envoy versione 1.18.4, che supporta solo xDS v3).
- Configurazione di Cloud Service Mesh utilizzando le API Compute Engine, che consentono a Cloud Service Mesh di configurare i proxy sidecar Envoy.
- Accedendo a una VM che esegue un proxy Envoy e inviando una richiesta a un con bilanciamento del carico tramite il proxy Envoy.
Gli esempi di configurazione in questo documento sono a scopo dimostrativo. Per un ambiente di produzione, potresti dover implementare componenti aggiuntivi, in base al tuo ambiente e ai tuoi requisiti.
Abilitazione dell'API Cloud OS Config
Assicurati di abilitare l'API Cloud OS Config. Se non lo fai, non puoi installare i componenti richiesti sulle tue VM.
Per farlo:
Console
- Nella console Google Cloud, vai ad API e i servizi di machine learning.
Vai alla pagina Libreria API - Seleziona il progetto corretto.
- Nella casella di ricerca, inserisci API Cloud OS Config e premi Invio.
- Seleziona l'API Cloud OS Config.
- Fai clic su Attiva.
gcloud
gcloud services enable osconfig.googleapis.com
Creazione del servizio di test Hello World
in corso...
Questa sezione mostra come creare un semplice servizio di test che restituisca nome host della VM che ha gestito la richiesta dal client. Il servizio di test è semplice: si tratta di un server web di cui è stato eseguito il deployment in un gruppo di istanze gestite Compute Engine.
Creazione del modello di istanza per il servizio di test Hello World
in corso...
Il modello di istanza che crei configura un server web apache2 di esempio utilizzando il parametro startup-script
.
Console
- Nella console Google Cloud, vai alla pagina Modelli di istanza.
- Fai clic su Crea modello istanza.
- Nei campi, inserisci le seguenti informazioni:
- Nome:
td-demo-hello-world-template
- Disco di avvio: scegli un sistema operativo e una versione.
- Account di servizio: account di servizio predefinito di Compute Engine.
- Ambiti di accesso: consenti l'accesso completo a tutte le API Cloud
- Nome:
- Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy.
1 Nella scheda Networking, nel campo Tag di rete, aggiungi il parametro
Tag
td-http-server
. Nella scheda Gestione, copia il seguente script nella sezione Avvio script.
#!/bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
Fai clic su Crea.
gcloud
Puoi scegliere tra molte versioni del sistema operativo. Questo esempio utilizza il valore predefinito Debian 10.
Per creare il modello di istanza:
gcloud compute instance-templates create td-demo-hello-world-template \ --machine-type=n1-standard-1 \ --boot-disk-size=20GB \ --image-family=debian-10 \ --image-project=debian-cloud \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=td-http-server \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart sudo mkdir -p /var/www/html/ echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"
Creazione del gruppo di istanze gestite per il servizio Hello World
In questa sezione specifichi che il gruppo di istanze gestite ha sempre due più istanze del servizio di test. Questa immagine è solo a scopo dimostrativo. Cloud Service Mesh supporta i gruppi di istanze gestite con scalabilità automatica.
Console
- Nella console Google Cloud, vai alla pagina Gruppi di istanze.
- Fai clic su Crea gruppo di istanze.
- Seleziona Nuovo gruppo di istanze gestite (stateless). Per maggiori informazioni consulta le informazioni sui MIG stateless o stateful.
- Inserisci
td-demo-hello-world-mig
come nome del gruppo di istanze gestite e seleziona la zonaus-central1-a
. - In Modello di istanza, seleziona
td-demo-hello-world-template
, ovvero il modello di istanza che hai creato. - In Modalità di scalabilità automatica, seleziona
Off:do not autoscale
. - In Numero massimo di istanze, specifica almeno due come numero di istanze che vuoi creare nel gruppo.
- Fai clic su Crea.
gcloud
Utilizza gcloud CLI per creare un gruppo di istanze gestite con il modello di istanza creato in precedenza.
gcloud compute instance-groups managed create td-demo-hello-world-mig \ --zone us-central1-a \ --size=2 \ --template=td-demo-hello-world-template
Creazione del modello di istanza e del gruppo di istanze gestite in cui viene eseguito il deployment di Envoy
Segui le istruzioni riportate in questa sezione per creare un modello di istanza e un gruppo di istanze gestite per Cloud Service Mesh con proxy Envoy di cui viene eseguito automaticamente il deployment. I gruppi di istanze gestite creano nuove VM di backend utilizzando la scalabilità automatica.
Componenti software in esecuzione sulle VM
I seguenti componenti vengono installati sulle VM quando crei un'istanza
modello con --service-proxy=enabled
.
- Il proxy Envoy, configurato da Cloud Service Mesh, viene scaricato da un bucket Cloud Storage dedicato. Il bucket contiene una build del proxy Envoy fornita da Google.
- L'agente proxy di servizio, che inizializza il proxy Envoy e i suoi componenti. L'agente proxy di servizio configura l'intercettazione del traffico e monitora l'integrità del proxy Envoy quando una VM è in esecuzione. L'agente proxy di servizio è scaricate anche da un bucket Cloud Storage.
L'unica versione di Envoy disponibile è il programma binario di Envoy più recente ospitato in una località di Cloud Storage dedicata. Questa versione di Envoy è supportata su Compute Engine Debian, CentOS 7/8 e RHEL 7/8. Durante la riparazione automatica e lo scale up, il gruppo di istanze gestite installa una versione recente di Envoy sulla VM. In alcuni casi, questa versione potrebbe essere più recente della Envoy ha eseguito il deployment in istanze VM create in precedenza. Ciò potrebbe determinare si verifica un'incoerenza nelle versioni installate sulle VM in un'istanza gestita gruppo. Le versioni incoerenti funzionano correttamente insieme. Se esiste un aggiornamento della sicurezza a Envoy, ti consigliamo di eseguire l'upgrade dell'istanza gestita utilizzando un sostituzione automatica.
Creazione del modello di istanza
Un modello di istanza specifica la configurazione delle istanze VM è stato creato in un gruppo di istanze gestite. I flag che passi all'istanza installare Envoy e configurare le tue istanze VM per prepararti Cloud Service Mesh.
È possibile usare Debian 10/11, CentOS 7/8 o RHEL 7/8 per l'immagine disco di avvio nella modello di istanza.
Per creare un modello di istanza di questo tipo:
gcloud compute instance-templates create td-vm-template-auto \ --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 ] \ --image-project=[ debian-cloud | centos-cloud |rhel-cloud ] \ --service-proxy=enabled
Per personalizzare il deployment di Envoy, consulta la Guida di riferimento per il deployment automatizzato di Envoy.
Creazione del gruppo di istanze gestite
Console
- Nella console Google Cloud, vai alla pagina Gruppi di istanze.
- Fai clic su Crea un gruppo di istanze.
- Inserisci
td-vm-mig-us-central1
come nome del gruppo di istanze gestite e seleziona la zonaus-central1-a
. - In Tipo di gruppo, seleziona Gruppo di istanze gestite.
- In Modello di istanza, seleziona
td-vm-template-auto
, il modello di istanza che hai creato. - Specifica
2
come numero di istanze da creare nel gruppo. - Fai clic su Crea per creare il nuovo profilo.
gcloud
Utilizza gcloud CLI per creare un gruppo di istanze gestite con il modello di istanza creato in precedenza.
gcloud compute instance-groups managed create td-vm-mig-us-central1 \ --zone us-central1-a --size=2 --template=td-vm-template-auto
Configurazione di Cloud Service Mesh con i componenti di bilanciamento del carico di Google Cloud
Le istruzioni in questa sezione mostrano come configurare Cloud Service Mesh in modo che i proxy Envoy bilanciano il carico del traffico in uscita tra due backend di Compute Engine. Puoi configurare i seguenti componenti:
- Un controllo di integrità. Per ulteriori informazioni sui controlli di integrità, consulta Concetti dei controlli di integrità e Creazione di controlli di integrità.
- Una regola firewall per consentire ai probe del controllo di integrità di raggiungere i backend. Vedi i concetti del controllo di integrità per ulteriori informazioni.
- Un servizio di backend. Per ulteriori informazioni sui servizi di backend, consulta Servizi di backend.
- Una mappa di regole di routing. Sono incluse la creazione di una regola di inoltro e di una mappa URL. Per ulteriori informazioni, leggi Utilizzare le regole di inoltro e Utilizzare le mappe URL.
Creazione del controllo di integrità
Segui queste istruzioni per creare un controllo di integrità. Per ulteriori informazioni, consulta Creare controlli di integrità.
Console
- Vai alla pagina Controlli di integrità nella console Google Cloud.
Vai alla pagina Controlli di integrità - Fai clic su Crea controllo di integrità.
- Come nome, inserisci
td-vm-health-check
. - Come protocollo, seleziona HTTP.
- Fai clic su Crea.
gcloud
Crea il controllo di integrità.
gcloud compute health-checks create http td-vm-health-check
Creazione della regola firewall
Segui le istruzioni riportate di seguito per creare la regola firewall necessaria per i controlli di integrità. Per ulteriori informazioni, consulta Regole firewall per i controlli di integrità.
Console
- Vai alla pagina Criteri firewall nella console Google Cloud.
Vai alla pagina Criteri firewall - Fai clic su Crea regola firewall.
- Nella pagina Crea una regola firewall, fornisci le seguenti informazioni:
- Nome:
fw-allow-health-checks
- Rete: scegli la rete VPC.
- Priorità: inserisci un numero per la priorità o 1000 per impostazione predefinita.
- Direzione del traffico: scegli In entrata.
- Azione in caso di corrispondenza: scegli Consenti.
- Target: scegli Tag di destinazione specificati e inserisci
td-http-server
nella casella di testo Tag di destinazione. - Filtro di origine: scegli il tipo di intervallo IP corretto.
- Intervalli IP di origine:
35.191.0.0/16,130.211.0.0/22
- Filtro di destinazione: seleziona il tipo di IP.
- Protocolli e porte: fai clic su Porte e protocolli specificati, quindi seleziona
tcp
digita la porta80
- Nome:
gcloud
Crea la regola firewall per il controllo di integrità.
gcloud compute firewall-rules create fw-allow-health-checks \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags td-http-server \ --rules tcp:80
Creazione del servizio di backend
Creare il servizio di backend. Se utilizzi Google Cloud CLI, devi designarlo come servizio di backend globale con uno schema di bilanciamento del carico INTERNAL_SELF_MANAGED. Aggiungi l'integrità e un gruppo di istanze gestite o non gestite al servizio di backend. Tieni presente che questo esempio utilizza il gruppo di istanze gestite con il modello VM Compute Engine che esegue il servizio HTTP di esempio creato in Creazione del gruppo di istanze gestite.
Console
Vai alla pagina Cloud Service Mesh nella console Google Cloud.
Nella scheda Servizi, fai clic su Crea servizio.
Fai clic su Continua.
Come nome del servizio, inserisci
td-vm-service
.Seleziona la rete VPC corretta.
Assicurati che il Tipo di backend sia Gruppi di istanze.
Seleziona
td-demo-hello-world-mig
, ovvero il gruppo di istanze gestite che hai creato e che contiene i backend per il servizio di testHello World
.Inserisci i Numeri di porta corretti.
Scegli Utilizzo o Tariffa come Modalità di bilanciamento. Il valore predefinito è Rate.
Fai clic su Fine.
Seleziona il controllo di integrità che hai creato o fai clic su Crea un altro controllo di integrità. e assicurati di selezionare HTTP come protocollo.
In Timeout per svuotamento della connessione, imposta il valore su
30
secondi oppure più a lungo.Fai clic su Continua.
Fai clic su Crea.
gcloud
Crea il servizio di backend.
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --connection-draining-timeout=30s \ --health-checks td-vm-health-check
Aggiungi i backend al servizio di backend.
gcloud compute backend-services add-backend td-vm-service \ --instance-group td-demo-hello-world-mig \ --instance-group-zone us-central1-a \ --global
Creazione della mappa di regole di routing
La mappa di regole di routing definisce il modo in cui Cloud Service Mesh instrada il traffico nel tuo mesh. Nell'ambito della mappa delle regole di routing, configuri un indirizzo IP virtuale (VIP) e un insieme di regole di gestione del traffico associate, come il routing basato sull'host. Quando un'applicazione invia una richiesta al VIP, il proxy Envoy:
- Intercetta la richiesta.
- Lo valuta in base alle regole di gestione del traffico nella mappa URL.
- Elegge un servizio di backend in base al nome host nella richiesta.
- Scegli un backend o un endpoint associato al servizio di backend selezionato.
- Invia il traffico al backend o all'endpoint.
Per ulteriori informazioni sulla gestione del traffico, consulta Gestione avanzata del traffico.
Console
Nella console Google Cloud, la creazione del proxy target è combinata con la creazione della regola di inoltro. Quando crei la regola di forwarding, Google Cloud crea automaticamente un proxy HTTP di destinazione e lo allega alla mappa URL.
Vai alla pagina Cloud Service Mesh nella console Google Cloud.
Nella scheda Mappe di regole di routing, fai clic su Crea mappa di regole di routing.
Inserisci un nome.
Fai clic su Aggiungi regola di inoltro.
Inserisci
td-vm-forwarding-rule
come nome della regola di inoltro.Seleziona la tua rete.
Seleziona il tuo IP interno. Il traffico inviato a questo indirizzo IP è intercettato dal proxy Envoy e inviato al servizio appropriato in base alle regole host e percorso.
La regola di inoltro viene creata come regola di inoltro globale con
load-balancing-scheme
impostato suINTERNAL_SELF_MANAGED
.Nel campo IP personalizzato, digita
10.0.0.1
. Quando la VM invia un messaggio a questo indirizzo IP, il proxy Envoy lo intercetta e lo invia all'endpoint del servizio di backend appropriato in base alle regole di gestione del traffico definite nella mappa URL.Ogni regola di forwarding in una rete VPC deve avere un indirizzo IP univoco e una porta per rete VPC. Se crei più di una regola di inoltro con lo stesso indirizzo IP e la stessa porta in una determinata rete VPC, è valida solo la prima regola di inoltro. mentre gli altri vengono ignorati. Se
10.0.0.1
non è disponibile nella tua rete, scegli un altro indirizzo IP.Assicurati che Porta sia impostata su
80
.Fai clic su Salva.
Nella sezione Regole di routing, seleziona Regola host e percorso semplice.
Nella sezione Regole host e percorso, seleziona
td-vm-service
come servizio.Fai clic su Aggiungi regola host e percorso.
In Host, inserisci
hello-world
.In Servizio, seleziona
td-vm-service
.Fai clic su Salva.
gcloud
Crea una mappa URL che utilizzi il servizio di backend
td-vm-service
come predefinito.gcloud compute url-maps create td-vm-url-map \ --default-service td-vm-service
Crea un matcher di percorso e una regola host per instradare il traffico verso basato sul nome host e su un percorso. Questo esempio utilizza
td-vm-service
come nome del servizio e un matcher di percorso predefinito che richieste per questo host (/*
).gcloud compute url-maps add-path-matcher td-vm-url-map \ --default-service td-vm-service \ --path-matcher-name td-vm-path-matcher
gcloud compute url-maps add-host-rule td-vm-url-map \ --path-matcher-name=td-vm-path-matcher \ --hosts=hello-world
Crea il proxy HTTP di destinazione.
gcloud compute target-http-proxies create td-vm-proxy \ --url-map=td-vm-url-map
Crea la regola di forwarding.
La regola di inoltro deve essere globale e deve essere creata con il valore di
load-balancing-scheme
impostato suINTERNAL_SELF_MANAGED
.gcloud compute forwarding-rules create td-vm-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=10.0.0.1 \ --target-http-proxy=td-vm-proxy \ --ports=80 \ --network=default
A questo punto, Cloud Service Mesh è configurato per bilanciare il carico del traffico per i servizi specificati nella mappa URL tra i backend nella gruppo di istanze gestite.
Verifica della configurazione in corso...
In questa parte finale della guida alla configurazione di Cloud Service Mesh per il computing
alle VM del tuo motore, testerai il traffico inviato dalla VM client destinato
La regola di forwarding VIP viene intercettata e reindirizzata al proxy Envoy, che quindi
instrada la richiesta alle VM che ospitano il servizio Hello World
.
Per farlo, accedi alla VM client, che è stata configurata per intercettare
il traffico e lo reindirizza a Envoy. Invii una richiesta curl
al VIP
associate alla tua mappa di regole di routing. Envoy controlla la richiesta curl
,
determina a quale servizio deve risolversi e invia la richiesta a un
associato a quel servizio.
- Nella console Google Cloud, vai alla pagina Gruppi di istanze.
- Seleziona il gruppo di istanze
td-vm-mig-us-central1
. - Nella sezione di riepilogo della VM, fai clic su SSH in Connetti.
- Dopo aver eseguito l'accesso alla VM client, utilizza lo strumento
curl
per inviare una richiesta al servizioHello World
tramite Envoy:
curl -H "Host: hello-world" http://10.0.0.1/
Se esegui questo comando ripetutamente, dovresti vedere diverse risposte HTML contenenti i nomi host dei backend nel gruppo di istanze gestite Hello World
.
Questo perché Envoy utilizza il bilanciamento del carico round robin, l'algoritmo di bilanciamento del carico predefinito, per inviare il traffico ai backend del servizio Hello World
.
Passaggi successivi
- Scopri di più sulla gestione avanzata del traffico.
- Scopri come configurare l'osservabilità con Envoy.
- Scopri come risolvere i problemi dei deployment di Cloud Service Mesh.
- Scopri le opzioni di deployment avanzate nella guida alle opzioni di deployment automatizzato di Envoy.