Impostare configurazioni avanzate
Questo documento contiene note che potrebbero essere utili durante la configurazione di Cloud Service Mesh.
Configurazione di una singola VM Compute Engine per Cloud Service Mesh
Utilizza questa procedura come esempio di come il traffico e il deployment del proxy sidecar l'intercettazione può essere implementata per fornire a una VM l'accesso Cloud Service Mesh.
Per utilizzare questa procedura, devi aver installato Docker. Segui le istruzioni di Docker per installare Docker Engine.
Se stai seguendo questo processo per configurare Cloud Service Mesh su una con una singola VM, alcune attività di configurazione richiedono l'accesso a un host Linux. La può essere una macchina locale o una VM in esecuzione sulla tua rete Virtual Private Cloud.
Innanzitutto, scarica e prepara i file di configurazione e gli script di esempio.
Accedi all'host Linux che utilizzi durante la procedura di configurazione.
Scarica l'archivio dei file richiesti sull'host Linux e scompattalo:
wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
L'archivio contiene i seguenti file:
- sidecar.env: file di configurazione con le variabili di ambiente.
- iptables.sh: script per la configurazione delle regole netfilter.
- bootstrap_template.yaml - File modello di bootstrap per Envoy.
- run.sh: script di primo livello che utilizza la configurazione
sidecar.env
il file per configurareiptables
per l'intercettazione e per eseguire il file collaterale di Envoy proxy.
Su ogni host che esegue un proxy sidecar, crea un utente di sistema per eseguire il processo del proxy Envoy. Si tratta dell'utente del proxy Envoy. L'accesso è disabilitato per l'utente proxy Envoy.
sudo adduser --system --disabled-login envoy
Modifica il file
sidecar.env
per modificare la configurazione. Leggi i commenti in linea nel file di configurazione per una descrizione dettagliata di ogni variabile.- Nel file
sidecar.env
, imposta la variabileENVOY_USER
sull'nome utente che scegli come utente proxy Envoy.
- Nel file
Quindi, per ogni host della VM che esegue applicazioni utilizzando Cloud Service Mesh, esegui segui questi passaggi:
- Copia l'intera directory
traffic-director-xdsv3
con il filesidecar.env
modificato in ogni VM host che esegue le applicazioni che prevedi di utilizzare con Cloud Service Mesh. - Aggiungi lo script
run.sh
allo script di avvio del sistema per garantire che lo script viene eseguito dopo ogni riavvio della VM. Su ogni host della VM, esegui lo script
run.sh
:cd traffic-director-xdsv3 sudo ./run.sh start
Verifica che il proxy Envoy sia stato avviato correttamente.
sudo ./run.sh status
Dovresti vedere l'output seguente:
OK: Envoy seems to be running. OK: Traffic interception seems to be enabled.
Puoi verificare la direzione dell'intercettazione del traffico utilizzando quanto segue:
sudo iptables -S -t nat | grep ISTIO_REDIRECT
L'output previsto è:
-N ISTIO_REDIRECT -A ISTIO_OUTPUT -j ISTIO_REDIRECT -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
Mappe di regole di routing
Esistono due modi per configurare il routing in una mappa di regole di routing.
Puoi abilitare il routing in base al VIP di destinazione e alla porta effettivi del
completamente gestito di Google Cloud. Se configuri un VIP del tuo servizio come parametro IPAddress
della
regola di inoltro, solo il traffico destinato a questo indirizzo e alla porta associata viene associato e instradato in base ai parametri host e percorso
specificati nella mappa URL.
In alternativa, puoi impostare l'indirizzo della regola di forwarding su 0.0.0.0
.
In questo modo i proxy verranno configurati in modo che corrispondano solo al traffico in base alla destinazione
a prescindere dall'indirizzo IP di destinazione della richiesta. In questo caso, il traffico
il routing in base ai parametri host e percorso specificati nella mappa URL.
In base a questi due approcci, ovvero i nomi host, secondo quanto configurato nelle regole dell'host,
associate a un VIP di destinazione e a una coppia di porte o a una porta di destinazione
(se il VIP è 0.0.0.0
), deve essere univoco all'interno della configurazione del mesh di servizi.
In altre parole, non puoi avere due servizi diversi, con insiemi diversi di backend, che utilizzano entrambi lo stesso nome host.
Indipendentemente dal metodo selezionato, il traffico verso l'IP virtuale a cui risolve il nome host/FQDN del servizio e la porta su cui il servizio è in ascolto deve essere intercettato e reindirizzato al proxy sidecar. Consulta Configurazione di una singola VM di Compute Engine Cloud Service Mesh per i dettagli completi sulla configurazione dell'host.
Ogni regola di inoltro in una rete VPC deve avere una combinazione univoca di indirizzo IP e porta per ogni rete VPC, incluso l'indirizzo 0.0.0.0
. Se
crea più di una regola di forwarding con lo stesso indirizzo IP e la stessa porta in un
rete VPC specifica, è valida solo la prima regola di forwarding. Gli altri
ignorato.
Per evitare di perdere traffico, segui la sezione Configurazione dell'intercettazione del traffico avanzato di seguito.
Configurazione avanzata dell'intercettazione del traffico
Se le VM eseguono applicazioni che richiedono l'accesso ai servizi configurati da Cloud Service Mesh, devi installare un proxy sidecar e configurare l'intercettazione del traffico sulle VM per consentire al proxy sidecar di gestire il routing del traffico verso i backend di questi servizi.
Se l'intercettazione di tutto il traffico in uscita della VM non è accettabile per il tuo deployment, puoi reindirizzare traffico specifico al proxy sidecar, mentre il resto del traffico seguirà il percorso regolare definito dalla configurazione di rete dell'host.
Per farlo, modifica la configurazione dell'host della VM di Compute Engine nella procedura di configurazione di Cloud Service Mesh con VM e deployment manuale di Envoy come segue:
Decidi l'intervallo di indirizzi IP a cui devono risolvere i servizi controllati da Cloud Service Mesh. Il traffico destinato a questi indirizzi IP è intercettato e reindirizzato al proxy sidecar. L'intervallo è specifico per per il deployment.
Nel file
sidecar.env
, imposta il valore diSERVICE_CIDR
su questo intervallo. Il traffico verso questi indirizzi IP viene reindirizzato da netfilter a un proxy sidecar e bilanciato in base alla configurazione fornita da Cloud Service Mesh.Il proxy sidecar non è strettamente necessario per essere eseguito come utente dedicato che è escluso dall'intercettazione del traffico. Tuttavia, questa opzione è ancora consigliata.
Dopo aver eseguito lo script
run.sh
, come indicato nella procedura principale,iptables
è configurato per l'intercettazione e il reindirizzamento di questa .Esegui il seguente comando per verificare che il netfilter sia configurato correttamente. Per ${SERVICE_CIDR}, sostituisci il valore configurato come di indirizzi IP intercettati.
sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"