Opzioni per la configurazione delle VM di Compute Engine mediante il deployment automatico di Envoy

Questa guida fornisce informazioni su opzioni e attività aggiuntive per il deployment automatizzato di Envoy.

Opzioni aggiuntive per la creazione di modelli di istanza

Quando crei un modello di istanza per il deployment automatizzato del proxy Envoy, puoi usare i parametri seguenti per definire alcuni aspetti del deployment il comportamento dei proxy.

Parametro Valore e descrizione Obbligatorio o facoltativo
--service-proxy enabled
Controlla se il proxy di servizio e l'agente sono installati e configurati sulla VM.
Obbligatorio se vuoi eseguire automaticamente il deployment e la configurazione del proxy di servizio. Se ometti questa impostazione, il proxy di servizio non viene installato o configurato.
--service-proxy:serving-ports Un elenco di porte separate da punto e virgola.
Le porte su cui vengono gestiti l'applicazione o il carico di lavoro. Il proxy di servizio intercetta il traffico in entrata, quindi lo inoltra alle porte di servizio specificate su localhost.
Facoltativo
Se ometti questo flag, il proxy di servizio gestisce solo il traffico in uscita dal carico di lavoro. Il traffico in entrata non è gestito dal proxy di servizio.
--service-proxy:proxy-port Una singola porta.
La porta su cui il proxy di servizio rimane in ascolto. La VM intercetta il traffico e lo reindirizza a questa porta per la gestione da parte del proxy di servizio.
Facoltativo.
Se ometti questo flag, il valore predefinito è 15001
--service-proxy:network Il nome di una rete VPC valida.
La rete VPC di Google Cloud utilizzata dal piano di controllo del proxy di servizio per generare la configurazione dinamica per il proxy di servizio.
Obbligatorio se la VM si trova su più reti. altrimenti è facoltativo.
Se ometti questo flag, viene usato il valore specificato mediante il parametro --network durante la creazione del modello di istanza VM.
--service-proxy:tracing ON o OFF
Consente al proxy di servizio di generare informazioni di tracciamento distribuito. Se impostato su ON, il piano di controllo del proxy di servizio genera una configurazione che abilita il tracciamento basato su ID delle richieste.
Per ulteriori informazioni, consulta la documentazione di generate_request_id per il proxy Envoy.
Facoltativo.
Se ometti questo flag, il tracciamento non è abilitato.
--service-proxy:access-log Il percorso file per i log di accesso inviati al proxy di servizio dal piano di controllo. Tutte le richieste in entrata e in uscita vengono registrate in questo file.
Per ulteriori informazioni, consulta la documentazione relativa al log di accesso ai file per il proxy Envoy.
Facoltativo. Non esiste un valore predefinito. Se non specifichi il percorso del file, i log non vengono creati.
--service-proxy:intercept-all-outbound-traffic (anteprima) Abilita l'intercettazione di tutto il traffico in uscita da parte del proxy del servizio e quindi reindirizza a un host esterno. Usa gcloud beta con questa opzione. Facoltativo.
--service-proxy:exclude-outbound-ip-ranges (anteprima) Un elenco separato da punti e virgola (;) di indirizzi IP o intervalli CIDR, specificati tra virgolette ("), che devono essere esclusi dal reindirizzamento. Si applica solo quando è impostato il flag intercept-all-outbound-traffic. Usa gcloud beta con questa opzione.

Ad esempio:

exclude-outbound-ip-ranges="8.8.8.8;129.168.10.0/24"
Facoltativo.
--service-proxy:exclude-outbound-port-ranges (anteprima) Un elenco separato da punti e virgola (;) di porte o intervalli di porte, specificati tra virgolette ("), che devono essere esclusi dal reindirizzamento. Si applica solo quando è impostato il flag intercept-all-outbound-traffic. Usa gcloud beta con questa opzione.

Ad esempio:

exclude-outbound-port-ranges="81;8080-8090"
Facoltativo.
--service-proxy:scope (anteprima) L'opzione scope definisce un limite di configurazione logica per la risorsa Gateway. Quando viene avviata una VM, il proxy di servizio comunica con Cloud Service Mesh per recuperare le informazioni di routing corrispondenti alle route collegate al gateway con questo nome di ambito. Quando viene specificato scope, il valore della rete viene ignorato. Non puoi specificare i valori scope e mesh contemporaneamente. Usa gcloud beta con questa opzione. Facoltativo.
--service-proxy:mesh (anteprima) L'opzione mesh definisce un limite di configurazione logica per una risorsa Mesh. All'avvio di una VM, il proxy di servizio comunica con Cloud Service Mesh per recuperare le informazioni di routing corrispondenti alle route collegate a Mesh con questo nome mesh. Quando viene specificato mesh, il valore della rete viene ignorato. Tu non può specificare i valori scope e mesh contemporaneamente. Usa gcloud beta con questa opzione Facoltativo.
--service-proxy:project-number (anteprima) L'opzione project-number specifica il progetto in cui le risorse Mesh e Gateway vengono create. Se non specificato, viene utilizzato il progetto in cui esiste l'istanza. Questo vale solo per le nuove API di routing dei servizi. Facoltativo.
--service-proxy-labels Coppie chiave/valore nel formato key=value.
Etichette che puoi applicare al proxy di servizio. Questi valori si riflettono nei metadati di bootstrap del proxy Envoy. Le etichette possono essere qualsiasi coppia di key=value che vuoi impostare come metadati proxy (ad esempio, per l'utilizzo con i filtri di configurazione). Puoi utilizzare questi flag per le etichette dell'applicazione e della versione, ad esempio app=review o version=canary. Puoi anche utilizzarli insieme.
Facoltativo.

Ad esempio, il seguente comando gcloud crea un modello di istanza chiamato proxy-it. Le istanze create da questo modello includono il proxy Envoy agente proxy di servizio installato.

gcloud compute instance-templates create proxy-it \
    --service-proxy enabled

Nell'esempio seguente, il modello di istanza si chiama proxy-it, il nome di Envoy proxy e l'agente proxy di servizio sono installati, la porta di gestione e la porta proxy sono impostato, il tracciamento è abilitato ed è stata definita un'etichetta.

gcloud compute instance-templates create proxy-it \
  --service-proxy enabled,serving-ports=8080,proxy-port=15001,tracing=ON \
  --service-proxy-labels version=canary

Il seguente diagramma illustra il flusso di traffico quando specifichi la pubblicazione come 8080. Le connessioni TCP in entrata verso la porta 8080 sono intercettate iptables e reindirizzato al proxy Envoy, che lo passa quindi al un'applicazione sulla tua VM in ascolto sulla porta TCP 8080. Inoltre:

  • Tutte le connessioni in uscita verso i VIP dei servizi configurati in Cloud Service Mesh sono intercettate da iptables, che configura netfilter. Netfilter garantisce in modo che il traffico corrispondente che attraversa lo stack di rete venga intercettato reindirizzato al proxy Envoy. Il traffico viene quindi bilanciato in base a configurazione di Cloud Service Mesh.
  • Tutte le altre connessioni in entrata non vengono intercettate da iptables e vengono passate direttamente sulla VM.
  • Tutte le connessioni agli endpoint esterni vengono passate direttamente all'IP esterno indirizzi IP senza essere intercettati.
  • Tutto il traffico UDP viene passato direttamente alla destinazione senza che intercettato da iptables.

come illustrato nel diagramma seguente.

Distribuzione del traffico con Cloud Service Mesh (fai clic per ingrandire)
Distribuzione del traffico con Cloud Service Mesh (fai clic per ingrandire)

I flussi di traffico nel diagramma sono i seguenti:

  1. Traffico in entrata con porta di destinazione 80, non intercettata e instradata direttamente al servizio di ascolto sulla porta.
  2. Traffico in entrata con la porta di destinazione 8080, intercettata e reindirizzata alla porta listener di Envoy.
  3. Envoy inoltra il traffico da (2) al servizio 2 in ascolto sulla porta localhost 8080.
  4. Traffico in uscita destinato al VIP della regola di forwarding di Cloud Service Mesh e porta, intercettati e reindirizzati alla porta listener di Envoy.
  5. Envoy inoltra il traffico da (4) all'endpoint del backend della destinazione Servizio di backend Cloud Service Mesh.
  6. Traffico in uscita destinato a VIP e porta non Cloud Service Mesh, non intercettate e indirizzate direttamente al servizio esterno.

Utilizzo delle etichette

Se vuoi specificare le etichette da utilizzare con i metadati Cloud Service Mesh per filtrare o attivare il logging degli accessi per i proxy Envoy, utilizza Parametri --service-proxy-labels o --service-proxy access-log.

Ad esempio:

gcloud compute instance-templates create td-vm-template-auto \
   --service-proxy enabled,access-log=/var/log/envoy/access.log,network=default \
   --service-proxy-labels myapp=review,version=canary

Il proxy Envoy può intercettare le porte del controllo di integrità per i servizi sulle VM. Se lo fai, i probe del controllo di integrità segnalano la tua applicazione e proxy. Il traffico non viene indirizzato alla VM se il proxy Envoy non è in esecuzione in modo corretto. Ad esempio:

gcloud compute instance-templates create td-vm-template-auto \
  --service-proxy=enabled,serving-ports="80;8080"

Utilizzo del processo di aggiornamento del gruppo di istanze gestite

Se hai utilizzato il processo automatizzato per configurare il Per i proxy Envoy, puoi utilizzare il processo di aggiornamento dei gruppi di istanze gestite per aggiornare il gruppo di istanze gestite. Utilizza questa procedura per:

  • Aggiungi i componenti proxy di servizio a un gruppo di istanze gestite esistente e registrarlo in una rete Cloud Service Mesh.
  • Aggiorna i componenti proxy di servizio sulle VM.

Prima di eseguire l'aggiornamento in sequenza, segui questi passaggi.

  1. Imposta lo svuotamento della connessione sul servizio di backend con un valore di almeno 30 secondi.
  2. Usa il parametro --min-ready, impostato su un valore di almeno 3 minuti, quando si chiama l'aggiornamento. Il parametro --min-ready rende l'istanza gestita il gruppo attende dopo l'aggiornamento di una VM prima di procedere con l'aggiornamento della VM successiva. Senza questo, la VM appena creata non ha il tempo di avviare completamente Envoy l'agente proxy di servizio e l'aggiornamento procede troppo rapidamente.

Per eseguire l'aggiornamento in sequenza sul gruppo di istanze gestite, segui questi passaggi: passaggi.

  1. Crea un nuovo modello di istanza, come descritto in precedenza, con il proxy di servizio informazioni. La versione originale del modello di istanza può essere utilizzata per l'aggiornamento se contiene le informazioni relative al proxy di servizio e l'obiettivo è aggiornare alla versione stabile più recente del software proxy.
  2. Esegui un aggiornamento in sequenza del gruppo di istanze gestite. Assicurati di imposta REPLACE come azione minima che deve essere eseguita dal programma di aggiornamento. Il gruppo di istanze installa la versione più recente del software proxy e la configura come specificato nel modello di istanza.

Puoi anche rimuovere i componenti proxy di servizio da un gruppo di istanze gestite utilizzando il processo di aggiornamento:

  1. Creare un nuovo modello di istanza senza specificare il flag --service-proxy.

  2. Esegui un aggiornamento in sequenza utilizzando il processo di aggiornamento del gruppo di istanze gestite.

Questa operazione rimuove il proxy Envoy dalle tue VM. Se il gruppo di istanze gestite era l'unico gruppo di istanze gestite collegato al servizio di backend, potresti voler rimuovere Configurazione di Cloud Service Mesh creata durante la configurazione Cloud Service Mesh.