Lab: Penyebaran PSC NCC

1. Pengantar

Ringkasan

Dalam lab ini, pengguna akan mempelajari cara hub Network Connectivity Center menyebarkan endpoint Private Service Connect ke spoke VPC.

Resource hub menyediakan model pengelolaan konektivitas terpusat untuk menghubungkan traffic spoke VPC ke endpoint PSC.

Yang akan Anda bangun

Dalam codelab ini, Anda akan membuat jaringan NCC yang akan menyebarkan endpoint private service connect ke instance Cloud SQL.

74bf390e323ea3bb.png

Yang akan Anda pelajari

  • Menggunakan Private Service Connect untuk terhubung ke instance Cloud SQL
  • Gunakan hub NCC untuk menyebarkan subnet PSC ke semua spoke VPC guna mengizinkan konektivitas jaringan dari beberapa jaringan VPC.

Yang Anda butuhkan

  • Pengetahuan tentang GCP Cloud Networking
  • Pengetahuan Dasar Cloud SQL
  • Project Google Cloud
  • Periksa Quota:Networks dan minta Jaringan tambahan jika diperlukan, screenshot di bawah:

6bc606cb34bce7e8.png

Tujuan

  • Menyiapkan Lingkungan GCP
  • Menyiapkan instance Cloud SQL untuk MySQL dengan Private Service Connect
  • Mengonfigurasi Hub Network Connectivity Center untuk menyebarkan endpoint PSC
  • Mengonfigurasi Network Connectivity Center dengan VPC sebagai spoke
  • Memvalidasi Jalur Data
  • Mempelajari fitur kemampuan servis NCC
  • Membersihkan resource

Sebelum memulai

Konsol Google Cloud dan Cloud Shell

Untuk berinteraksi dengan GCP, kita akan menggunakan Konsol Google Cloud dan Cloud Shell di seluruh lab ini.

Konsol Google Cloud Project NCC Hub

Cloud Console dapat diakses di https://console.cloud.google.com.

Siapkan item berikut di Google Cloud untuk mempermudah konfigurasi Network Connectivity Center:

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

Luncurkan Cloud Shell. Codelab ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.

gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project

Peran IAM

NCC memerlukan peran IAM untuk mengakses API tertentu. Pastikan untuk mengonfigurasi pengguna dengan peran IAM NCC sesuai kebutuhan.

Peran/Deskripsi

Izin

networkconnectivity.networkAdmin - Mengizinkan administrator jaringan mengelola hub dan spoke.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - Memungkinkan penambahan dan pengelolaan spoke di hub. Untuk digunakan di VPC Bersama dengan project host yang memiliki Hub, tetapi admin lain di project lain dapat menambahkan spoke untuk lampiran mereka ke Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - Memungkinkan pengguna jaringan melihat berbagai atribut hub dan spoke.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. Menyiapkan Lingkungan Jaringan

Ringkasan

Di bagian ini, kita akan men-deploy dua jaringan VPC dan aturan firewall dalam satu project. Diagram logis mengilustrasikan lingkungan jaringan yang akan disiapkan pada langkah ini.

8884a55988881e17.png

Membuat VPC1 dan Subnet

Jaringan VPC berisi subnet tempat Anda akan menginstal VM GCE untuk validasi jalur data

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}" 

Membuat subnet PSC di VPC

Gunakan perintah di bawah untuk membuat subnet di spoke VPC yang akan dialokasikan ke PSC-EP.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
vpc_spoke_subnet_ip_range="192.168.0.0/24"

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}" 

Membuat VPC3 dan Subnet

vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
vpc_spoke_subnet_ip_range="10.0.3.0/24"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"

Mengonfigurasi Aturan Firewall VPC1

Aturan ini akan mengizinkan konektivitas jaringan dari rentang RFC1918 dan Identity Access Proxy

vpc_spoke_network_name="vpc1-spoke"

gcloud compute firewall-rules create vpc1-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

gcloud compute firewall-rules create vpc1-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20

Mengonfigurasi VPC Routing dan Aturan Firewall VPC

vpc_spoke_network_name="vpc3-spoke"

gcloud compute firewall-rules create vpc3-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

gcloud compute firewall-rules create vpc3-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20

Mengonfigurasi VM GCE di VPC1

Anda memerlukan akses internet sementara untuk menginstal paket, jadi konfigurasikan instance untuk menggunakan alamat IP eksternal.

vm_vpc1_spoke_name="csql-vpc1-vm"
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
region="us-central1"
zone="us-central1-a"

gcloud compute instances create "${vm_vpc1_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'

Mengonfigurasi VM GCE di VPC3

Anda memerlukan akses internet sementara untuk menginstal paket, jadi konfigurasikan instance untuk menggunakan alamat IP eksternal.

vm_vpc_spoke_name="csql-vpc3-vm"
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
region="us-central1"
zone="us-central1-a"

gcloud compute instances create "${vm_vpc_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'

3. Membuat Instance Cloud SQL

Gunakan perintah di bawah untuk membuat instance dan mengaktifkan Private Service Connect .

Proses ini memerlukan waktu beberapa menit.

gcloud config set project ${project}

gcloud sql instances create mysql-instance \
--project="${project}" \
--region=us-central1 \
--enable-private-service-connect \
--allowed-psc-projects="${project}" \
--availability-type=zonal \
--no-assign-ip \
--tier=db-f1-micro \
--database-version=MYSQL_8_0 \
--enable-bin-log

Mengidentifikasi URI lampiran layanan instance Cloud SQL

Gunakan perintah gcloud sql instances describe untuk melihat informasi tentang instance dengan Private Service Connect yang diaktifkan. Perhatikan kolom pscServiceAttachmentLink yang menampilkan URI yang mengarah ke lampiran layanan instance. Kita akan memerlukannya di bagian berikutnya.

gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'

4. Endpoint PSC ke Cloud SQL

Mencadangkan Alamat IP Internal untuk Endpoint PSC

Gunakan perintah di bawah untuk mencadangkan alamat IP internal untuk endpoint Private Service Connect,

region="us-central1"
vpc_spoke_subnet_name="csql-psc-subnet"

gcloud compute addresses create csql-psc-ip \
--subnet="${vpc_spoke_subnet_name}" \
--region="${region}" \
--addresses=192.168.0.253

Cari NAME yang terkait dengan alamat IP yang dicadangkan. Ini akan digunakan dalam konfigurasi aturan penerusan.

gcloud compute addresses list \
--filter="name=csql-psc-ip"

Membuat Aturan Penerusan Private Service Connect di VPC1

Gunakan perintah di bawah untuk membuat endpoint Private Service Connect dan mengarahkannya ke lampiran layanan Cloud SQL.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
csql_psc_ep_name="csql-psc-ep"
sa_uri=$(gcloud sql instances describe mysql-instance \
  --format='value(pscServiceAttachmentLink)')
echo "$sa_uri"

gcloud compute forwarding-rules create "${csql_psc_ep_name}" \
--address=csql-psc-ip \
--region="${region}" \
--network="${vpc_spoke_network_name}" \
--target-service-attachment="${sa_uri}" \
--allow-psc-global-access

Gunakan perintah di bawah untuk memverifikasi bahwa lampiran layanan cSQL menerima endpoint

gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'

Memverifikasi jalur data ke MySQL dari VPC1

Saat membuat instance Cloud SQL baru, Anda harus menetapkan sandi untuk akun pengguna default sebelum dapat terhubung ke instance.

gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password

Gunakan perintah di bawah untuk menemukan alamat IP endpoint PSC yang dikaitkan dengan lampiran layanan Cloud SQL.

gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'

Menghubungkan ke Instance Cloud SQL dari VM di VPC1

Buka sesi SSH ke csql-vpc1-vm

gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap

Gunakan perintah di bawah untuk terhubung ke instance Cloud Sql. Saat diminta, masukkan sandi yang dibuat pada langkah di atas.

mysql -h 192.168.0.253 -u root -p 

Output di bawah ditampilkan setelah login berhasil,

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8350
Server version: 8.0.31-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

Gunakan perintah show databases; untuk memverifikasi database yang dibuat secara default di MySql.

MySQL [(none)]> show databases;

Menghubungkan ke Instance Cloud SQL dari VM di VPC3

Buka sesi SSH ke csql-vpc3-vm,

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

Gunakan perintah di bawah untuk terhubung ke instance Cloud Sql. Saat diminta, masukkan sandi yang dibuat pada langkah di atas.

mysql -h 192.168.0.253 -u root -p 

Sesi dari VM yang berada di VPC3 gagal karena tidak ada jalur data dari VPC3 ke Endpoint Private Service Connect. Gunakan tombol untuk keluar dari sesi.

Ctrl + C

5. Hub Network Connectivity Center

Ringkasan

Di bagian ini, kita akan mengonfigurasi Hub NCC menggunakan perintah gcloud. Hub NCC akan berfungsi sebagai platform kontrol yang bertanggung jawab untuk membuat jalur data dari spoke VPC ke endpoint Private Service Connect.

b615efa4bad5f86.png

Mengaktifkan Layanan API

Aktifkan network connectivity API jika belum diaktifkan:

gcloud services enable networkconnectivity.googleapis.com

Membuat Hub NCC

Gunakan perintah gcloud di bawah untuk membuat hub NCC. Flag "–export-psc" menginstruksikan NCC Hub untuk menyebarkan endpoint PSC yang diketahui ke semua spoke VPC.

hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc

Jelaskan Hub NCC yang baru dibuat. Perhatikan nama dan jalur terkait.

gcloud network-connectivity hubs describe ncc-hub

Mengonfigurasi VPC1 sebagai spoke NCC

hub_name="ncc-hub"
vpc_spoke_name="sql-vpc1-spoke"
vpc_spoke_network_name="vpc1-spoke"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global

Mengonfigurasi VPC3 sebagai spoke NCC

hub_name="ncc-hub"
vpc_spoke_name="sql-vpc3-spoke"
vpc_spoke_network_name="vpc3-spoke"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global

Gunakan perintah di bawah untuk memeriksa tabel rute NCC Hub untuk rute ke subnet PSC.

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub

6. Memverifikasi jalur data NCC

Pada langkah ini, kita akan memvalidasi jalur data antara spoke VPC dan hybrid NCC.

Memverifikasi jalur data yang dikonfigurasi NCC ke endpoint PSC Instance Cloud SQL

Gunakan output dari perintah gcloud ini untuk login ke VM on prem.

 gcloud compute instances list --filter="name=csql-vpc3-vm" 

Login ke instance VM yang berada di jaringan lokal.

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

Gunakan perintah mysql di bawah untuk terhubung ke instance Cloud Sql. Saat diminta, masukkan sandi yang dibuat pada langkah di atas.

mysql -h 192.168.0.253 -u root -p 

Output di bawah ditampilkan setelah login berhasil,

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8501
Server version: 8.0.31-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.005 sec)

Gunakan perintah show databases; untuk memverifikasi database yang dibuat secara default di MySql

MySQL [(none)]> show databases;

7. Pembersihan

Login ke cloud shell dan hapus resource GCP.

Menghapus Endpoint PSC Cloud Sql

gcloud compute forwarding-rules delete csql-psc-ep \
--region=us-central1 \
--quiet

gcloud compute addresses delete csql-psc-ip \
--region=us-central1 \
--quiet

gcloud compute networks subnets delete csql-psc-subnet \
--region=us-central1 \
--quiet

Menghapus Instance Cloud Sql

gcloud sql instances delete mysql-instance --quiet

Menghapus Aturan Firewall

vpc_spoke_network_name="vpc3-spoke"

gcloud compute firewall-rules delete vpc3-allow-all \ --network="${vpc_spoke_network_name}" 
gcloud compute firewall-rules delete vpc3-allow-iap \ --network="${vpc_spoke_network_name}"
vpc_spoke_network_name="vpc1-spoke"

gcloud compute firewall-rules delete vpc1-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc1-allow-iap \ --network="${vpc_spoke_network_name}"

Menghapus Instance GCE di VPC1 dan VPC3

vm_vpc1_spoke_name="csql-vpc1-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc1_spoke_name}" \
--zone="${zone}" \
--quiet


vm_vpc_spoke_name="csql-vpc3-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc_spoke_name}" \
--zone="${zone}" --quiet

Menghapus spoke NCC

vpc_spoke_name="sql-vpc1-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \  
--quiet
vpc_spoke_name="sql-vpc3-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \  
--quiet

Menghapus Hub NCC

hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
  --project=${project}

Menghapus Subnet di semua VPC

vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet1"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet3"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet

Hapus VPC1 dan VPC3

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. Selamat!

Anda telah menyelesaikan propagasi Private Service Connect dengan Lab Network Connectivity Center.

Yang telah Anda pelajari

  • Perluasan endpoint Private Service Connect dengan Network Connectivity Center

Langkah Berikutnya