Configura un bilanciatore del carico di rete passthrough interno come hop successivo (con tag)

Questo tutorial utilizza un esempio per mostrarti come eseguire il deployment di un bilanciatore del carico di rete passthrough interno come hop successivo a cui vengono inoltrati i pacchetti lungo il percorso fino alla destinazione finale. Utilizza i tag di rete per configurare le istanze client specifiche a cui si applica il percorso.

Questa guida presuppone che tu abbia familiarità con il funzionamento di un il bilanciatore del carico di rete passthrough interno, i suoi componenti correlati come le regole firewall e l'integrità e come i bilanciatori del carico di rete passthrough interni vengono utilizzati come hop successivi per inoltrare i pacchetti un percorso.

Con il bilanciatore del carico di rete passthrough interno come funzionalità di hop successivo, puoi integrare ad alta disponibilità e con scale out. Per farlo, devi configurare una route statica personalizzata e impostare l'hop successivo sul bilanciatore del carico. distribuisce il traffico per il prefisso di destinazione al pool di di appliance VM di terze parti sottoposte a controllo di integrità. Hai a disposizione diverse opzioni per selezionare i hop successivi per supportare l'alta disponibilità di queste appliance di terze parti:

  • Specifica un indirizzo IP come hop successivo: utilizza l'indirizzo IP interno. associato alla regola di forwarding come hop successivo. L'indirizzo IP virtuale di questo bilanciatore del carico può essere appreso tra i peer senza dover esportare la route personalizzata tramite i peer.
  • Utilizza tag di rete: puoi specificare un tag di rete in modo che il bilanciatore del carico di rete passthrough interno come route dell'hop successivo si applica solo alle istanze client che che sono state configurate con il tag. In questo modo puoi selezionare le istanze client da compilare con il bilanciatore del carico di rete passthrough interno taggato come route hop successivo e l'insieme di appliance a cui indirizzare il traffico. Non è necessario separare le diverse istanze client in VPC distinti, ognuno che rimanda al bilanciatore del carico di rete passthrough interno preferito che fa da front-end a un insieme di appliance. Route codificate non vengono esportate né importate tramite il peering di rete VPC.
  • Configura più route per lo stesso prefisso di destinazione: con i tag puoi specificare più route per la stessa destinazione con bilanciatori del carico interni diversi come hop successivi. Sebbene ECMP non sia supportato (stessa destinazione, stessi tag, hop successivi diversi), puoi utilizzare tag diversi o priorità diverse per le stesse route di destinazione.

Panoramica della configurazione

I gruppi di istanze gestite che utilizzano VM con un singolo NIC sono definiti in regioni diverse, con istanze Linux configurate per eseguire la traduzione SNAT di tutto il traffico in uscita su internet (flusso di traffico in uscita da nord a sud). Il failover regionale viene attivato manualmente. Questo tutorial mostra anche la connettività est-ovest con hashing simmetrico utilizzando un bilanciatore del carico di rete passthrough interno come hop successivo.

I passaggi in questa sezione descrivono come configurare quanto segue:

  1. Esempi di reti VPC con subnet personalizzate
  2. Regole firewall che consentono le connessioni in entrata alle VM di backend
  3. Gruppi di istanze gestite di backend che eseguono il deployment di gateway NAT
  4. VM client per testare le connessioni
  5. I seguenti componenti del bilanciatore del carico di rete passthrough interno:
    • Un controllo di integrità per il servizio di backend
    • Un servizio di backend interno
    • Una regola di inoltro interna e un indirizzo IP per il frontend del bilanciatore del carico

L'architettura di questo esempio ha il seguente aspetto:

Bilanciatore del carico di rete passthrough interno come configurazione dell'hop successivo
Bilanciatore del carico di rete passthrough interno come configurazione dell'hop successivo (fai clic per ingrandire)

Mentre segui i passaggi di questo tutorial, sostituisci REGION_A e REGION_B con le rispettive regioni che vuoi utilizzare per questo esempio.

Crea le reti e le subnet VPC

  1. Crea una rete VPC denominata hub-vpc.

    gcloud compute networks create hub-vpc --subnet-mode custom
    
  2. Crea una subnet in hub-vpc in REGION_A.

    gcloud compute networks subnets create hub-subnet-a \
        --network hub-vpc \
        --range 10.0.0.0/24 \
        --region REGION_A
    
  3. Crea una subnet in hub-vpc in region B.

    gcloud compute networks subnets create hub-subnet-b \
        --network hub-vpc \
        --range 10.0.1.0/24 \
        --region REGION_B
    
  4. Crea una rete VPC denominata spoke1-vpc.

    gcloud compute networks create spoke1-vpc --subnet-mode custom
    
  5. Crea una subnet in spoke1-vpc.

    gcloud compute networks subnets create spoke1-subnet1 \
        --network spoke1-vpc \
        --range 192.168.0.0/24 \
        --region REGION_A
    
  6. Crea una rete VPC denominata spoke2-vpc.

    gcloud compute networks create spoke2-vpc --subnet-mode custom
    
  7. Crea una subnet in spoke2-vpc.

    gcloud compute networks subnets create spoke2-subnet1 \
        --network spoke2-vpc \
        --range 192.168.1.0/24 \
        --region REGION_A
    

Configurazione delle regole del firewall

  1. Configura le seguenti regole del firewall per consentire il traffico TCP, UDP e ICMP verso di raggiungere le istanze dagli intervalli di origine specificati.

    gcloud compute firewall-rules create hub-vpc-web-ping-dns \
        --network hub-vpc \
        --allow tcp:80,tcp:443,icmp,udp:53 \
        --source-ranges 10.0.0.0/24,10.0.1.0/24,192.168.0.0/24,192.168.1.0/24
    
    gcloud compute firewall-rules create spoke1-vpc-web-ping-dns \
        --network spoke1-vpc \
        --allow tcp:80,tcp:443,icmp,udp:53 \
        --source-ranges 10.0.0.0/24,10.0.1.0/24,192.168.0.0/24,192.168.1.0/24
    
    gcloud compute firewall-rules create spoke2-vpc-web-ping-dns \
        --network spoke2-vpc \
        --allow tcp:80,tcp:443,icmp,udp:53 \
        --source-ranges 10.0.0.0/24,10.0.1.0/24,192.168.0.0/24,192.168.1.0/24
    
  2. Crea una regola firewall per consentire ai probe del controllo di integrità di accedere alle istanze su hub-vpc.

    gcloud compute firewall-rules create hub-vpc-health-checks \
        --network hub-vpc \
        --allow tcp:80 \
        --target-tags natgw \
        --source-ranges 130.211.0.0/22,35.191.0.0/16
    
  3. Crea regole firewall per consentire l'accesso SSH alle istanze su tutte le subnet. Se preferisci utilizzare Identity-Aware Proxy per l'inoltro TCP (opzione consigliata), segui questi passaggi per attivare SSH.

    gcloud compute firewall-rules create hub-vpc-allow-ssh \
        --network hub-vpc \
        --allow tcp:22
    
    gcloud compute firewall-rules create spoke1-vpc-allow-ssh \
        --network spoke1-vpc \
        --allow tcp:22
    
    gcloud compute firewall-rules create spoke2-vpc-allow-ssh \
        --network spoke2-vpc \
        --allow tcp:22
    

Configura il peering di rete VPC

  1. Crea un peering da hub-vpc a spoke1-vpc.

    gcloud compute networks peerings create hub-to-spoke1 \
        --network hub-vpc \
        --peer-network spoke1-vpc \
        --peer-project PROJECT_ID \
        --export-custom-routes
        
  2. Crea un peering da spoke1-vpc a hub-vpc.

    gcloud compute networks peerings create spoke1-to-hub \
        --network spoke1-vpc \
        --peer-network hub-vpc \
        --peer-project PROJECT_ID \
        --import-custom-routes
    
  3. Crea un peering da hub-vpc a spoke2-vpc.

    gcloud compute networks peerings create hub-to-spoke2 \
        --network hub-vpc \
        --peer-network spoke2-vpc \
        --peer-project PROJECT_ID \
        --export-custom-routes
    
  4. Crea un peering da spoke2-vpc a hub-vpc.

    gcloud compute networks peerings create spoke2-to-hub \
        --network spoke2-vpc \
        --peer-network hub-vpc \
        --peer-project PROJECT_ID \
        --import-custom-routes
    

Crea VM gateway NAT e risorse di bilanciamento del carico nella regione A

Crea il backend del gruppo di istanze gestite in REGION_A. Quindi, crea le risorse di bilanciamento del carico e i percorsi dell'hop successivo.

Creare un gruppo di istanze gestite

  1. Crea un modello di istanza per eseguire il deployment di un gateway NAT in region A.

    gcloud compute instance-templates create hub-natgw-region-a-template \
        --network hub-vpc \
        --subnet hub-subnet-a \
        --region REGION_A \
        --machine-type n1-standard-2 \
        --can-ip-forward \
        --tags natgw \
        --metadata startup-script='#! /bin/bash
    # Enable IP forwarding:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-iptables.conf
    # iptables configuration
    iptables -t nat -F
    sudo iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -j MASQUERADE
    iptables-save
    # Use a web server to pass the health check for this example.
    # You should use a more complete test in production.
    apt-get update
    apt-get install apache2 tcpdump -y
    a2ensite default-ssl
    a2enmod ssl
    echo "Example web page to pass health check" | \
    tee /var/www/html/index.html \
    systemctl restart apache2'
    
  2. Crea il gruppo di istanze in REGION_A.

    gcloud compute instance-groups managed create hub-natgw-region-a-mig \
        --region REGION_A \
        --size=2 \
        --template=hub-natgw-region-a-template
    

Crea il bilanciatore del carico

Per creare un bilanciatore del carico in REGION_A, segui questi passaggi.

  1. Creare un controllo di integrità.

    gcloud compute health-checks create http natgw-ilbnhop-health-check \
        --port=80
    
  2. Creare il servizio di backend.

    gcloud compute backend-services create hub-natgw-region-a-be \
        --load-balancing-scheme=internal \
        --protocol tcp \
        --region REGION_A\
        --health-checks=natgw-ilbnhop-health-check
    
  3. Aggiungi il gruppo di istanze gestite come backend.

    gcloud compute backend-services add-backend hub-natgw-region-a-be \
        --instance-group=hub-natgw-region-a-mig \
        --instance-group-region=REGION_A
    
  4. Crea la regola di forwarding.

    gcloud compute forwarding-rules create hub-natgw-region-a \
        --load-balancing-scheme=internal \
        --network=hub-vpc \
        --subnet=hub-subnet-a \
        --address=10.0.0.10 \
        --ip-protocol=TCP \
        --ports=all \
        --allow-global-access \
        --backend-service=hub-natgw-region-a-be \
        --backend-service-region=REGION_A
    

Crea i route per l'hop successivo

Crea il bilanciatore del carico di rete passthrough interno come route dell'hop successivo con la rete predefinita tag ilbanh-region-a.

gcloud compute routes create spoke1-natgw-region-a \
    --network=spoke1-vpc \
    --destination-range=0.0.0.0/0 \
    --next-hop-ilb=10.0.0.10 \
    --tags=ilbanh-region-a \
    --priority 800
gcloud compute routes create spoke2-natgw-region-a \
    --network=spoke2-vpc \
    --destination-range=0.0.0.0/0 \
    --next-hop-ilb=10.0.0.10 \
    --tags=ilbanh-region-a \
    --priority 800

Testa la connettività

Crea istanze client per testare la connettività.

  1. Crea un'istanza client di test in spoke1-vpc.

    gcloud compute instances create spoke1-client \
        --subnet=spoke1-subnet1 --no-address --zone ZONE_A \
        --tags=ilbanh-region-a \
        --metadata startup-script='#! /bin/bash
    apt-get update
    apt-get install tcpdump -y'
    
  2. Crea un'istanza client di test in spoke2-vpc.

    gcloud compute instances create spoke2-client \
        --subnet=spoke2-subnet1 --no-address --zone ZONE_A \
        --tags=ilbanh-region-a \
        --metadata startup-script='#! /bin/bash
    apt-get update
    apt-get install tcpdump -y'
    

Convalidare i flussi di traffico nord-sud e est-ovest

  1. Assicurati che le VM del gateway NAT siano in esecuzione e scrivi il codice assegnato indirizzi IP esterni:

    gcloud compute instances list --filter="status:RUNNING AND name~natgw"
    
  2. Verifica che il bilanciatore del carico sia in stato di esecuzione e che le route siano state create come previsto:

    gcloud compute backend-services get-health hub-natgw-region-a-be --region REGION_A
    
    backend: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/regions/us-central1/instanceGroups/hub-natgw-region-a-mig
    status:
      healthStatus:
      - forwardingRule: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/regions/us-central1/forwardingRules/hub-natgw-region-a
        forwardingRuleIp: 10.0.0.10
        healthState: HEALTHY
        instance: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/zones/us-central1-b/instances/<INSTANCE_NAME>
        ipAddress: 10.0.0.5
        port: 80
      - forwardingRule: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/regions/us-central1/forwardingRules/hub-natgw-region-a
        forwardingRuleIp: 10.0.0.10
        healthState: HEALTHY
        instance: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/zones/us-central1-f/instances/<INSTANCE_NAME>
        ipAddress: 10.0.0.6
        port: 80
      kind: compute#backendServiceGroupHealth
    
  3. Verifica che il bilanciatore del carico di rete passthrough interno come route dell'hop successivo venga aggiunto allo spoke I VPC con la priorità prevista e che hanno come target indirizzo IP del bilanciatore del carico di rete passthrough interno:

    gcloud compute routes list --filter="name~natgw"
    
  4. Vai alla console Google Cloud e stabilisci connessioni SSH al le VM gateway NAT in schede diverse.

  5. Avvia tcpdump in ciascuna di queste sessioni SSH utilizzando il seguente comando:

    sudo tcpdump -n net 192.168.0.0/16
    
  6. Vai alla console Google Cloud e stabilisci una nuova connessione SSH alla VM spoke1-client. Quindi, utilizza il seguente comando per eseguire un ping sull'indirizzo IP interno spoke2-client.

    ping SPOKE2_CLIENT_INTERNAL_IP
    
  7. Passa alle finestre SSH del gateway NAT e verifica di poter vedere i pacchetti ICMP come segue:

    16:51:28.411260 IP 192.168.0.2 > 192.168.1.2: ICMP echo request, id 1684, seq 492, length 64
    16:51:28.411676 IP 192.168.1.2 > 192.168.0.2: ICMP echo reply, id 1684, seq 492, length 64
    

    Dovresti riuscire a eseguire correttamente il ping della VM client, il che dimostra quanto segue:

  8. Arresta gli output tcpdump sulle VM del gateway NAT e osserva il iptables statistiche:

    watch sudo iptables -t nat -nvL
    
  9. Torna alla VM spoke1-client ed esegui il seguente comando più volte. L'output mostra l'indirizzo IP pubblico di origine utilizzato per connettersi al sito web.

    curl ifconfig.io
    

    Dovresti vedere gli indirizzi IP di entrambe le VM gateway NAT come indirizzi IP di origine. Ciò dimostra che il bilanciatore del carico di rete passthrough interno distribuisce il traffico in base all'affinità predefinita (hashing a 5 tuple).

  10. Torna alla VM gateway NAT per verificare che i contatori dei pacchetti siano aumentati.

    Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
      105 11442 MASQUERADE  all  --  *      *       0.0.0.0/0           !192.168.0.0/16
    
    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    

Crea VM gateway NAT e risorse di bilanciamento del carico nella regione B

Crea il backend del gruppo di istanze gestite in region B. Quindi, crea le risorse di bilanciamento del carico e i percorsi dell'hop successivo.

Creare un gruppo di istanze gestite

  1. Crea un modello di istanza per eseguire il deployment di un gateway NAT in region B.

    gcloud compute instance-templates create hub-natgw-region-b-template \
        --network hub-vpc \
        --subnet hub-subnet-b --region REGION_B \
        --machine-type n1-standard-2 --can-ip-forward \
        --tags natgw \
        --metadata startup-script='#! /bin/bash
    # Enable IP forwarding:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-iptables.conf
    # iptables configuration
    iptables -t nat -F
    sudo iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -j MASQUERADE
    iptables-save
    # Use a web server to pass the health check for this example.
    # You should use a more complete test in production.
    apt-get update
    apt-get install apache2 tcpdump -y
    a2ensite default-ssl
    a2enmod ssl
    echo "Example web page to pass health check" | \
    tee /var/www/html/index.html \
    systemctl restart apache2'
    
  2. Crea il gruppo di istanze in region B.

    gcloud compute instance-groups managed create hub-natgw-region-b-mig \
        --region REGION_B \
        --size=2 \
        --template=hub-natgw-region-b-template
    

crea il bilanciatore del carico

Esegui questi passaggi per creare un bilanciatore del carico nella regione B.

  1. Crea il servizio di backend.

    gcloud compute backend-services create hub-natgw-region-b-be \
        --load-balancing-scheme=internal \
        --protocol tcp \
        --region REGION_B\
        --health-checks=natgw-ilbnhop-health-check
    
  2. Aggiungi il gruppo di istanze gestite come backend.

    gcloud compute backend-services add-backend hub-natgw-region-b-be \
        --instance-group=hub-natgw-region-b-mig \
        --instance-group-region=REGION_B
    
  3. Crea la regola di forwarding.

    gcloud compute forwarding-rules create hub-natgw-region-b \
        --load-balancing-scheme=internal \
        --network=hub-vpc \
        --subnet=hub-subnet-b \
        --address=10.0.1.10 \
        --ip-protocol=TCP \
        --ports=all \
        --allow-global-access \
        --backend-service=hub-natgw-region-b-be \
        --backend-service-region=REGION_B
    

Crea i route per l'hop successivo

Crea il bilanciatore del carico di rete passthrough interno come route dell'hop successivo con la rete predefinita tag ilbanh-region-a.

gcloud compute routes create spoke1-natgw-region-b \
    --network=spoke1-vpc \
    --destination-range=0.0.0.0/0 \
    --next-hop-ilb=10.0.1.10 \
    --tags=ilbanh-region-a \
    --priority 900
gcloud compute routes create spoke2-natgw-region-b \
    --network=spoke2-vpc \
    --destination-range=0.0.0.0/0 \
    --next-hop-ilb=10.0.1.10 \
    --tags=ilbanh-region-a \
    --priority 900

Convalida failover a livello di regione

  1. Assicurati che le VM del gateway NAT siano in esecuzione e scrivi il codice assegnato IP esterni:

    gcloud compute instances list --filter="status:RUNNING AND name~natgw"
    
  2. Verifica che il bilanciatore del carico sia in stato di esecuzione e che le route siano create come previsto:

    gcloud compute backend-services get-health hub-natgw-region-b-be --region REGION_B
    
    backend: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/regions/us-west2/instanceGroups/hub-natgw-region-b-mig
    status:
      healthStatus:
      - forwardingRule: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/regions/us-west2/forwardingRules/hub-natgw-region-b
        forwardingRuleIp: 10.0.1.10
        healthState: HEALTHY
        instance: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/zones/us-west2-a/instances/<INSTANCE_NAME>
        ipAddress: 10.0.1.3
        port: 80
      - forwardingRule: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/regions/us-west2/forwardingRules/hub-natgw-region-b
        forwardingRuleIp: 10.0.1.10
        healthState: HEALTHY
        instance: https://www.googleapis.com/compute/v1/projects/<PROJECT_ID>/zones/us-west2-b/instances/<INSTANCE_NAME>
        ipAddress: 10.0.1.2
        port: 80
      kind: compute#backendServiceGroupHealth
    
  3. Verifica che il bilanciatore del carico di rete passthrough interno come route dell'hop successivo venga aggiunto allo spoke I VPC con la priorità prevista e che hanno come target indirizzo IP del bilanciatore del carico di rete passthrough interno:

    gcloud compute routes list --filter="name~natgw"
    
  4. Ora puoi convalidare il failover regionale eliminando le route con priorità elevata e annotando cosa succede. Passa alla VM spoke1-client ed esegui il seguente comando per inviare una richiesta curl ogni secondo. Questo comando indica l'indirizzo IP esterno in uso:

    while true; do echo -n `date` && echo -n ' - ' && curl ifconfig.io --connect-timeout 1; done
    

    Solo gli indirizzi IP esterni assegnati ai gateway NAT in region A dovrebbe essere visualizzato perché è la priorità elevata percorso. Lascia in esecuzione il comando curl e passa a Cloud Shell per Elimina la route al bilanciatore del carico di rete passthrough interno in region A per verificare il risultato:

    gcloud -q compute routes delete spoke1-natgw-region-a
    

    In region B vengono visualizzati gli indirizzi IP esterni assegnati alle VM gateway NAT, probabilmente con un tempo di riposo minimo, il che dimostra che il failover regionale è andato a buon fine.

Liberare le risorse

  1. Rimuovi il bilanciatore del carico di rete passthrough interno come route dell'hop successivo:

    gcloud -q compute routes delete spoke1-natgw-region-b
    
    gcloud -q compute routes delete spoke2-natgw-region-a
    
    gcloud -q compute routes delete spoke2-natgw-region-b
    
  2. Rimuovi i backend e le risorse del bilanciatore del carico di rete passthrough interno:

    gcloud -q compute forwarding-rules delete hub-natgw-region-a \
      --region REGION_A
    
    gcloud -q compute backend-services delete hub-natgw-region-a-be \
      --region REGION_A
    
    gcloud -q compute instance-groups managed delete hub-natgw-region-a-mig \
      --region REGION_A
    
    gcloud -q compute instance-templates delete hub-natgw-region-a-template
    
    gcloud -q compute forwarding-rules delete hub-natgw-region-b \
      --region REGION_B
    
    gcloud -q compute backend-services delete hub-natgw-region-b-be \
      --region REGION_B
    
    gcloud -q compute instance-groups managed delete hub-natgw-region-b-mig \
      --region REGION_B
    
    gcloud -q compute instance-templates delete hub-natgw-region-b-template
    
    gcloud -q compute health-checks delete natgw-ilbnhop-health-check
    
  3. Elimina le VM client:

    gcloud -q compute instances delete spoke1-client \
      --zone=ZONE_A
    
    gcloud -q compute instances delete spoke2-client \
      --zone=ZONE_A
    
  4. Elimina i peering di rete VPC, le regole firewall, le subnet e le VPC:

    gcloud -q compute networks peerings delete spoke2-to-hub \
      --network spoke2-vpc
    
    gcloud -q compute networks peerings delete spoke1-to-hub \
      --network spoke1-vpc
    
    gcloud -q compute networks peerings delete hub-to-spoke1 \
      --network hub-vpc
    
    gcloud -q compute networks peerings delete hub-to-spoke2 \
      --network hub-vpc
    
    gcloud -q compute firewall-rules delete spoke2-vpc-web-ping-dns
    
    gcloud -q compute firewall-rules delete spoke1-vpc-web-ping-dns
    
    gcloud -q compute firewall-rules delete hub-vpc-web-ping-dns
    
    gcloud -q compute firewall-rules delete hub-vpc-health-checks
    
    gcloud -q compute firewall-rules delete hub-vpc-allow-ssh
    
    gcloud -q compute firewall-rules delete spoke1-vpc-allow-ssh
    
    gcloud -q compute firewall-rules delete spoke2-vpc-allow-ssh
    
    gcloud -q compute networks subnets delete spoke1-subnet1 \
      --region REGION_A
    
    gcloud -q compute networks subnets delete spoke2-subnet1 \
      --region REGION_A
    
    gcloud -q compute networks subnets delete hub-subnet-a \
      --region REGION_A
    
    gcloud -q compute networks subnets delete hub-subnet-b \
      --region REGION_B
    
    gcloud -q compute networks delete spoke1-vpc
    
    gcloud -q compute networks delete spoke2-vpc
    
    gcloud -q compute networks delete hub-vpc
    

Passaggi successivi