Men-deploy jaringan hub-and-spoke menggunakan load balancer sebagai next hop

Tutorial ini menjelaskan cara menggunakan Peering Jaringan VPC untuk men-deploy arsitektur hub-and-spoke.

Tutorial ini ditujukan untuk engineer dan profesional operasi jaringan cloud yang ingin menerapkan arsitektur hub-and-spoke di lingkungan Google Cloud mereka menggunakan peralatan terpusat yang terdiri dari virtual machine Compute Engine. Dalam tutorial ini, Anda akan men-deploy mesin virtual tersebut sebagai gateway NAT, tetapi Anda dapat menggunakan pendekatan yang sama untuk fungsi lainnya, seperti firewall generasi berikutnya. Tutorial ini mengasumsikan bahwa Anda sudah memahami jaringan VPC dan Compute Engine.

Arsitektur

Dalam arsitektur ini, sekumpulan jaringan VPC berbicara berkomunikasi dengan luar melalui jaringan VPC hub yang mana traffic dirutekan melalui kumpulan peralatan terpusat, dalam hal ini gateway penafsiran alamat jaringan (NAT). Rute yang relevan diekspor dari jaringan VPC hub ke jaringan VPC spoke. Gateway NAT dikonfigurasi sebagai backend load balancer internal dengan rute default baru, yang memiliki Load Balancer Jaringan passthrough internal dari Cloud Load Balancing sebagai next hop.

Anda dapat memperoleh jenis distribusi beban dan ketersediaan tinggi yang sama menggunakan beberapa rute dengan perutean multi-jalur dengan biaya yang sama (ECMP). Namun, penggunaan Load Balancer Jaringan passthrough internal memiliki keuntungan berikut:

  • Traffic hanya diteruskan ke instance yang responsif jika Anda mengandalkan health check. Dengan ECMP, traffic diteruskan ke semua instance aktif yang menjadi tujuan rute; menggunakan Load Balancer Jaringan passthrough internal akan menghilangkan kemungkinan rute yang tidak digunakan. Selain itu, Anda tidak perlu membersihkan rute saat instance dihentikan atau dimulai ulang.
  • Ada failover yang berpotensi lebih cepat karena Anda dapat menyesuaikan timer health check. Jika menggunakan grup instance terkelola dan autohealing, Anda masih dapat menyesuaikan timer health check, tetapi grup tersebut digunakan untuk membuat ulang instance, bukan mengarahkan traffic.

Google juga menawarkan Cloud NAT sebagai layanan terkelola, yang memberikan ketersediaan tinggi tanpa pengelolaan dan intervensi pengguna. Namun, Cloud NAT tidak didukung dalam kasus penggunaan ini karena konfigurasi NAT tidak diimpor ke jaringan yang di-peering.

Diagram berikut menunjukkan topologi yang Anda buat dalam tutorial ini.

Arsitektur jaringan VPC hub dengan dua jaringan VPC spoke.

Topologi terdiri dari jaringan VPC hub dan dua jaringan VPC yang di-peering dengan jaringan VPC hub menggunakan Peering Jaringan VPC. Jaringan VPC hub memiliki dua instance gateway NAT di belakang Load Balancer Jaringan passthrough internal. Rute default statis (0/0 NAT-GW-ILB) mengarah ke Load Balancer Jaringan passthrough internal sebagai hop berikutnya. Rute default statis ini diekspor melalui Peering Jaringan VPC dengan menggunakan rute kustom.

Tujuan

  • Buat beberapa jaringan VPC dan lakukan peering dengan menggunakan arsitektur hub-and-spoke.
  • Membuat dan mengonfigurasi gateway NAT di jaringan VPC hub.
  • Siapkan dan konfigurasikan Load Balancer Jaringan passthrough internal sebagai hop berikutnya.
  • Memverifikasi konektivitas dari jaringan VPC spoke ke internet publik.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the Compute Engine API.

    Enable the API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Enable the Compute Engine API.

    Enable the API

  8. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  9. Dalam tutorial ini, Anda akan menjalankan semua perintah dari Cloud Shell.

Menyiapkan lingkungan Anda

  1. Di Cloud Shell, pastikan Anda bekerja di project Google Cloud yang Anda buat atau pilih. Ganti project-id dengan project Google Cloud Anda.

    gcloud config set project project-id
    
    export PROJECT_ID=`gcloud config list --format="value(core.project)"`
    
  2. Tetapkan region dan zona komputasi default.

    gcloud config set compute/region us-central1
    gcloud config set compute/zone us-central1-c
    export REGION=us-central1
    export ZONE=us-central1-c
    

    Dalam tutorial ini, regionnya adalah us-central1 dan zonanya adalah us-central1-c.

Membuat subnet dan jaringan VPC

  1. Di Cloud Shell, buat subnet dan jaringan VPC hub:

    gcloud compute networks create hub-vpc --subnet-mode custom
    
    gcloud compute networks subnets create hub-subnet1 \
        --network hub-vpc --range 10.0.0.0/24
    
  2. Buat jaringan VPC spoke, yang disebut spoke1-vpc dan spoke2-vpc, dengan masing-masing satu subnet:

    gcloud compute networks create spoke1-vpc --subnet-mode custom
    
    gcloud compute networks create spoke2-vpc --subnet-mode custom
    
    gcloud compute networks subnets create spoke1-subnet1 \
        --network spoke1-vpc --range 192.168.1.0/24
    
    gcloud compute networks subnets create spoke2-subnet1 \
        --network spoke2-vpc --range 192.168.2.0/24
    
  3. Membuat aturan firewall di jaringan VPC hub dan jaringan VPC yang bicara. Aturan ini mengizinkan traffic internal (TCP/80 dan 443, UDP/53, dan ICMP) dari rentang RFC 1918 yang ditentukan:

    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,192.168.1.0/24,192.168.2.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,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,192.168.2.0/24
    
  4. Buat aturan firewall di jaringan VPC hub dan jaringan VPC spoke agar IAP untuk SSH dapat mengakses semua virtual machine Anda:

    gcloud compute firewall-rules create hub-vpc-iap \
        --network hub-vpc --allow tcp:22 \
        --source-ranges 35.235.240.0/20
    
    gcloud compute firewall-rules create spoke1-vpc-iap \
        --network spoke1-vpc --allow tcp:22 \
        --source-ranges 35.235.240.0/20
    
    gcloud compute firewall-rules create spoke2-vpc-iap \
        --network spoke2-vpc --allow tcp:22 \
        --source-ranges 35.235.240.0/20
    

    Tutorial ini menggunakan Identity-Aware Proxy (IAP) untuk SSH. Untuk informasi selengkapnya, lihat Terhubung ke instance yang tidak memiliki alamat IP eksternal.

  5. Buat aturan firewall untuk mengizinkan health check untuk grup instance autohealing di jaringan VPC hub:

    gcloud compute firewall-rules create hub-vpc-health-checks \
        --network hub-vpc --allow tcp:443 --target-tags nat-gw \
        --source-ranges 130.211.0.0/22,35.191.0.0/16
    

Membuat instance dan rute yang diperlukan

  1. Di Cloud Shell, buat template instance untuk gateway NAT yang memiliki skrip startup yang menyiapkan gateway NAT:

    gcloud compute instance-templates create \
      hub-nat-gw-ilbnhop-template \
      --network hub-vpc \
      --subnet hub-subnet1 \
      --machine-type n1-standard-2 --can-ip-forward \
      --tags nat-gw --scopes default,compute-rw \
      --metadata startup-script='#! /bin/bash
    apt-get update
    # Enable IP forwarding:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-example.conf
    # Read VM network configuration:
    md_vm="http://metadata.google.internal/computeMetadata/v1/instance/"
    md_net="$md_vm/network-interfaces"
    nic0_gw="$(curl $md_net/0/gateway -H "Metadata-Flavor:Google")"
    nic0_mask="$(curl $md_net/0/subnetmask -H "Metadata-Flavor:Google")"
    nic0_addr="$(curl $md_net/0/ip -H "Metadata-Flavor:Google")"
    nic0_id="$(ip addr show | grep $nic0_addr | tail -c 5)"
    # Use a web server to pass the health check for this example.
    # In production, use a more complete test.
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    echo "Example web page to pass health check" | \
    tee /var/www/html/index.html
    sudo systemctl restart apache2
    # Enable IP masquerading
    iptables -t nat -A POSTROUTING -o $nic0_id -j MASQUERADE'
    

    Tutorial ini menggunakan n1-standard-2 sebagai jenis instance, tetapi Anda dapat menggunakan jumlah atau ukuran gateway lain yang Anda inginkan. Pastikan untuk mempertimbangkan faktor-faktor seperti bandwidth keluar maksimum per VM.

  2. Membuat health check HTTP:

    gcloud compute health-checks create http nat-gw-ilbnhop-health-check \
        --region us-central1 \
        --port 80
    
  3. Buat grup instance regional dengan dua instance yang didistribusikan di satu region:

    gcloud compute instance-groups managed create \
        hub-nat-gw-ilbnhop-mig \
        --region us-central1 --size=2 \
        --template=hub-nat-gw-ilbnhop-template \
        --health-check nat-gw-ilbnhop-health-check \
        --initial-delay 15
    

    Dalam tutorial ini, penundaan awal disetel ke 15 detik. Dalam deployment produksi, sesuaikan setelan ini sesuai dengan persyaratan Anda. Tutorial ini tidak menggunakan kebijakan penskalaan otomatis.

  4. Buat layanan backend, lalu tambahkan grup instance:

    gcloud compute backend-services create hub-nat-gw-ilbnhop-backend \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --health-checks=nat-gw-ilbnhop-health-check
    
    gcloud compute backend-services add-backend \
        hub-nat-gw-ilbnhop-backend \
        --instance-group=hub-nat-gw-ilbnhop-mig \
        --instance-group-region=us-central1
    
  5. Membuat aturan penerusan:

    gcloud compute forwarding-rules create \
        hub-nat-gw-ilbnhop \
        --load-balancing-scheme=internal \
        --network=hub-vpc \
        --subnet=hub-subnet1 \
        --address=10.0.0.10 \
        --ip-protocol=TCP \
        --ports=all \
        --backend-service=hub-nat-gw-ilbnhop-backend \
        --backend-service-region=us-central1 \
        --service-label=hub-nat-gw-ilbnhop
    

    Meskipun aturan penerusan hanya ditentukan dengan TCP, saat Anda menggunakan Load Balancer Jaringan passthrough internal sebagai next hop, aturan penerusan akan meneruskan semua traffic ke semua port di VM backend. Load Balancer Jaringan passthrough internal adalah load balancer regional.

  6. Buat rute baru dengan aturan penerusan sebagai hop berikutnya:

    gcloud compute routes create hub-nat-gw-ilbnhop \
        --network=hub-vpc \
        --destination-range=0.0.0.0/0 \
        --next-hop-ilb=hub-nat-gw-ilbnhop \
        --next-hop-ilb-region=us-central1 \
        --priority=800
    

    Anda dapat menentukan tag jaringan sehingga rute next-hop hanya berlaku untuk instance klien yang telah dikonfigurasi dengan tag tersebut, tetapi tag tersebut tidak diekspor atau diimpor melalui Peering Jaringan VPC.

  7. Hapus rute default dari VPC hub:

    export hub_default_route=$(gcloud compute routes list \
        --format="value(name)" --filter="network:hub-vpc AND \
        nextHopGateway:default-internet-gateway" | head -n 1)
    gcloud compute routes delete $hub_default_route -q
    
  8. Buat rute baru yang diberi tag untuk mengizinkan traffic hanya dari gateway NAT:

    gcloud compute routes create hub-default-tagged \
        --network hub-vpc --destination-range 0.0.0.0/0 \
        --next-hop-gateway default-internet-gateway \
        --priority 700 --tags nat-gw
    
  9. Hapus rute default ke internet dari VPC setiap percakapan:

    export spoke1_default_route=$(gcloud compute routes list \
        --format="value(name)" --filter="network:spoke1-vpc AND \
        nextHopGateway:default-internet-gateway")
    
    gcloud compute routes delete $spoke1_default_route -q
    
    export spoke2_default_route=$(gcloud compute routes list \
        --format="value(name)" \
        --filter="network:spoke2-vpc AND nextHopGateway:default-internet-gateway")
    
    gcloud compute routes delete $spoke2_default_route -q
    

    Jika ada konflik antara rute lokal dan yang diimpor, rute lokal akan selalu diprioritaskan. Untuk informasi selengkapnya, lihat Urutan perutean.

  10. Membuat VM klien:

    gcloud compute instances create spoke1-client \
        --subnet=spoke1-subnet1 --no-address \
        --metadata startup-script='#! /bin/bash
    apt-get update
    apt-get install dnsutils -y'
    
    gcloud compute instances create spoke2-client \
        --subnet=spoke2-subnet1 --no-address \
        --metadata startup-script='#! /bin/bash
    apt-get update
    apt-get install dnsutils -y'
    

Membuat koneksi Peering Jaringan VPC

Peering Jaringan VPC bersifat dua arah, sehingga harus ditentukan di kedua ujungnya. Jaringan VPC dapat melakukan peering dengan beberapa jaringan VPC, tetapi ada batasan yang berlaku. Untuk mencapai rute default melalui Peering Jaringan VPC, Anda menggunakan fitur mengimpor dan mengekspor rute kustom melalui Peering Jaringan VPC.

Untuk tutorial ini, Anda akan membuat semua jaringan VPC dalam project Google Cloud yang sama.

  1. Di Cloud Shell, buat koneksi VPC dari jaringan VPC hub ke jaringan VPC yang berbicara dengan flag ekspor rute yang diaktifkan:

    gcloud compute networks peerings create hub-to-spoke1 \
        --network hub-vpc --peer-network spoke1-vpc \
        --peer-project $PROJECT_ID \
        --export-custom-routes
    
    gcloud compute networks peerings create hub-to-spoke2 \
        --network hub-vpc --peer-network spoke2-vpc \
        --peer-project $PROJECT_ID \
        --export-custom-routes
    
  2. Buat koneksi Peering Jaringan VPC dari jaringan VPC spoke1 ke jaringan VPC hub dengan tanda impor rute yang diaktifkan:

    gcloud compute networks peerings create spoke1-to-hub \
        --network spoke1-vpc --peer-network hub-vpc \
        --peer-project $PROJECT_ID \
        --import-custom-routes
    
  3. Buat koneksi Peering Jaringan VPC dari jaringan VPC spoke2 ke jaringan VPC hub dengan tanda impor rute yang diaktifkan:

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

Memverifikasi penerapan dan konektivitas rute

  1. Di Cloud Shell, pastikan rute statis dibuat dengan benar sebagai bagian dari skrip startup.

    gcloud compute routes list --filter="network:hub-vpc"
    

    Pastikan rute hub-default-tagged dan hub-nat-gw-ilbanhop ada dalam output:

    NAME                            NETWORK  DEST_RANGE      NEXT_HOP                  PRIORITY
    default-route-13a4b635b5eab48c  hub-vpc  10.0.0.0/24     hub-vpc                   1000
    hub-default-tagged              hub-vpc  0.0.0.0/0       default-internet-gateway  700
    hub-nat-gw-ilbanhop             hub-vpc  0.0.0.0/0       10.0.0.10                 800
    peering-route-3274f1257a9842a0  hub-vpc  192.168.2.0/24  hub-to-spoke2             1000
    peering-route-798c5777f13094bc  hub-vpc  192.168.1.0/24  hub-to-spoke1             1000
    
  2. Verifikasi tabel pemilihan rute spoke1-vpc untuk memastikan rute default diimpor dengan benar:

    gcloud compute routes list --filter="network:spoke1-vpc"
    

    Pastikan ada rute yang dimulai dengan peering-route dengan 0.0.0.0/0 sebagai nilai DEST_RANGE dalam output:

    NAME                            NETWORK     DEST_RANGE      NEXT_HOP       PRIORITY
    default-route-75f6ea8f5fc54813  spoke1-vpc  192.168.1.0/24  spoke1-vpc     1000
    peering-route-6c7f130b860bfd39  spoke1-vpc  10.0.0.0/24     spoke1-to-hub  1000
    peering-route-9d44d362f98afbd8  spoke1-vpc  0.0.0.0/0       spoke1-to-hub  800
    
  3. Hubungkan ke salah satu klien menggunakan SSH melalui IAP:

    gcloud compute ssh spoke1-client --tunnel-through-iap
    
  4. Verifikasi konektivitas dengan menguji DNS publik Google melalui gateway NAT:

    sudo hping3 -S -p 80 -c 3 dns.google
    

    Karena Load Balancer Jaringan passthrough internal mendukung TCP dan UDP, Anda tidak dapat memverifikasi konektivitas internet menggunakan ping berbasis ICMP. Jadi, Anda harus menggunakan alat seperti hping3.

    Outputnya mirip dengan hal berikut ini:

    HPING dns.google (eth0 8.8.4.4): S set, 40 headers + 0 data bytes
    len=44 ip=8.8.4.4 ttl=126 DF id=0 sport=80 flags=SA seq=0 win=65535 rtt=4.6 ms
    len=44 ip=8.8.4.4 ttl=126 DF id=0 sport=80 flags=SA seq=1 win=65535 rtt=4.4 ms
    len=44 ip=8.8.4.4 ttl=126 DF id=0 sport=80 flags=SA seq=2 win=65535 rtt=4.3 ms
    
    --- dns.google hping statistic ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max = 4.3/4.4/4.6 ms
    
  5. Verifikasi alamat IP publik yang Anda gunakan untuk berkomunikasi dengan internet:

    curl ifconfig.co
    

    Output akan menampilkan alamat IP publik dari salah satu instance gateway NAT. Jika Anda menjalankan perintah lagi, outputnya mungkin menampilkan alamat IP publik yang berbeda karena koneksi didistribusikan menggunakan afinitas sesi load balancing internal yang dikonfigurasi (secara default, IP klien, protokol, dan port).

    Peering Jaringan VPC bersifat non-transitif, sehingga tidak ada konektivitas antara jaringan VPC berbicara melalui Peering Jaringan VPC.

Pertimbangan untuk lingkungan produksi

Konfigurasi yang Anda buat dalam tutorial ini menyediakan dua gateway NAT di satu region. Namun, load balancing ECMP tidak sempurna dan alur individual tidak tersebar di banyak link. Itulah yang Anda inginkan saat menggunakan perangkat stateful seperti firewall generasi berikutnya.

Untuk men-deploy konfigurasi ini di lingkungan produksi, pertimbangkan poin-poin berikut:

  • Konfigurasi ini paling cocok untuk link keluar sementara atau non-stateful. Jika ukuran kumpulan gateway NAT berubah, koneksi TCP mungkin akan diseimbangkan kembali, sehingga dapat menyebabkan koneksi yang terhubung direset.
  • Node tidak diupdate secara otomatis, sehingga jika penginstalan Debian default memiliki kerentanan keamanan, Anda harus mengupdate image secara manual.
  • Jika memiliki VM di beberapa region, Anda perlu menyiapkan gateway NAT di setiap region.
  • Bandwidth per gateway dapat bervariasi sesuai dengan jenis hardware. Pastikan untuk mempertimbangkan faktor-faktor seperti bandwidth traffic keluar maksimum per VM. Selama kegagalan gateway, traffic akan didistribusikan ke gateway yang tersisa. Karena alur yang berjalan tidak diprogram ulang, traffic tidak segera direset saat gateway kembali online. Jadi, pastikan Anda menyediakan {i>overhead<i} yang cukup saat mengubah ukurannya.
  • Agar mendapatkan pemberitahuan tentang hasil yang tidak terduga, gunakan Cloud Monitoring untuk memantau grup instance terkelola dan traffic jaringan.

Pembersihan

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project Google Cloud yang Anda buat untuk tutorial. Atau, Anda dapat menghapus resource satu per satu.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Hapus resource satu per satu

Jika ingin mempertahankan project Google Cloud, Anda dapat menghapus resource yang dibuat untuk tutorial ini.

  1. Hapus koneksi Peering Jaringan VPC:

    gcloud compute networks peerings delete spoke2-to-hub \
        --network spoke2-vpc -q
    
    gcloud compute networks peerings delete spoke1-to-hub \
        --network spoke1-vpc -q
    
    gcloud compute networks peerings delete hub-to-spoke1 \
        --network hub-vpc -q
    
    gcloud compute networks peerings delete hub-to-spoke2 \
        --network hub-vpc -q
    
  2. Hapus beberapa instance, resource load balancer, template, dan rute:

    gcloud compute instances delete spoke1-client \
      --zone=us-central1-c -q
    
    gcloud compute instances delete spoke2-client \
      --zone=us-central1-c -q
    
    gcloud compute routes delete hub-nat-gw-ilbnhop -q
    
    gcloud compute forwarding-rules delete hub-nat-gw-ilbnhop -q
    
    gcloud compute backend-services delete -q hub-nat-gw-ilbnhop-backend -q
    
    gcloud compute instance-groups managed delete hub-nat-gw-ilbnhop-mig \
      --region us-central1 -q
    
    gcloud compute health-checks delete nat-gw-ilbnhop-health-check -q
    
    gcloud compute instance-templates delete hub-nat-gw-ilbnhop-template -q
    
    gcloud compute routes delete hub-default-tagged -q
    
  3. Hapus aturan firewall, subnet, dan jaringan VPC:

    gcloud compute firewall-rules delete spoke2-vpc-iap -q
    
    gcloud compute firewall-rules delete spoke2-vpc-web-ping-dns -q
    
    gcloud compute firewall-rules delete spoke1-vpc-iap -q
    
    gcloud compute firewall-rules delete spoke1-vpc-web-ping-dns -q
    
    gcloud compute firewall-rules delete hub-vpc-iap -q
    
    gcloud compute firewall-rules delete hub-vpc-web-ping-dns -q
    
    gcloud compute firewall-rules delete hub-vpc-health-checks -q
    
    gcloud compute networks subnets delete spoke1-subnet1 \
        --region us-central1 -q
    
    gcloud compute networks subnets delete spoke2-subnet1 \
        --region us-central1 -q
    
    gcloud compute networks subnets delete hub-subnet1 \
        --region us-central1 -q
    
    gcloud compute networks delete spoke1-vpc -q
    
    gcloud compute networks delete spoke2-vpc -q
    
    gcloud compute networks delete hub-vpc -q
    

Langkah selanjutnya