Configurare le 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 implementare il deployment del proxy sidecar e l'intercettazione del traffico per fornire a una VM l'accesso ai servizi Cloud Service Mesh.

Per utilizzare questa procedura, devi aver installato Docker. Segui le istruzioni di Docker per installare Docker Engine.

Se stai seguendo questa procedura per configurare Cloud Service Mesh su una singola VM, alcune attività di configurazione richiedono l'accesso a un host Linux. L'host può essere un computer 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.

  1. Accedi all'host Linux che utilizzi durante la procedura di configurazione.

  2. 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 del modello di bootstrap per Envoy.
    • run.sh: script di primo livello che utilizza il file di configurazione sidecar.env per configurare iptables per l'intercettazione ed eseguire il proxy sidecar Envoy.
  3. 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
    
  4. 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.

    1. Nel file sidecar.env, imposta la variabile ENVOY_USER sull'nome utente che scegli come utente proxy Envoy.

Successivamente, per ogni host VM che esegue applicazioni che utilizzano Cloud Service Mesh, svolgi i seguenti passaggi:

  1. Copia l'intera directory traffic-director-xdsv3 con il file sidecar.env modificato in ogni VM host che esegue le applicazioni che prevedi di utilizzare con Cloud Service Mesh.
  2. Aggiungi lo script run.sh allo script di avvio del sistema, in modo che venga eseguito dopo ogni riavvio della VM.
  3. Su ogni host VM, esegui lo script run.sh:

    cd traffic-director-xdsv3
    sudo ./run.sh start
    
  4. 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 di 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 attivare il routing in base alla porta e al VIP di destinazione effettivi del servizio. Se configuri un VIP del tuo servizio come parametro IPAddress della regola di forwarding, 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 da associare il traffico solo in base alla porta di destinazione, indipendentemente dall'indirizzo IP di destinazione della richiesta. Il traffico viene quindi indirizzato in base ai parametri host e percorso specificati nella mappa URL.

In base a questi due approcci, i nomi host, come configurati nelle regole host, associati a una coppia di porta e VIP di destinazione o a una porta di destinazione (quando il VIP è 0.0.0.0), devono essere univoci nella 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. Per informazioni dettagliate sulla configurazione dell'host, consulta Configurare una singola VM Compute Engine per Cloud Service Mesh.

Ogni regola di forwarding 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 crei più di una regola di forwarding con lo stesso indirizzo IP e la stessa porta in una determinata rete VPC, è valida solo la prima regola di forwarding. mentre gli altri vengono ignorati.

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:

  1. Scegli l'intervallo di indirizzi IP a cui devono risolvere i servizi controllati da Cloud Service Mesh. Il traffico destinato a questi indirizzi IP viene intercettato e reindirizzato al proxy sidecar. L'intervallo è specifico per il tuo deployment.

  2. Nel file sidecar.env, imposta il valore di SERVICE_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.

  3. Non è strettamente necessario che il proxy sidecar venga eseguito come utente dedicato escluso dall'intercettazione del traffico. Tuttavia, è comunque consigliato.

  4. Dopo aver eseguito lo script run.sh, come indicato nella procedura principale, iptables viene configurato solo per l'intercettazione e il reindirizzamento di questo intervallo specifico.

  5. Esegui il seguente comando per verificare che il netfilter sia configurato correttamente. Per ${SERVICE_CIDR}, sostituisci il valore configurato come intervallo di indirizzi IP intercettati.

    sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"