1. Introduzione
Panoramica
In questo lab, gli utenti scopriranno in che modo l'hub di Network Connectivity Center propaga un endpoint Private Service Connect agli spoke VPC.
La risorsa hub fornisce un modello di gestione della connettività centralizzata per interconnettere il traffico degli spoke VPC agli endpoint PSC.
Cosa creerai
In questo codelab, creerai una rete NCC che propagherà un endpoint Private Service Connect all'istanza Cloud SQL.
Obiettivi didattici
- Utilizzare Private Service Connect per connettersi a un'istanza Cloud SQL
- Utilizza l'hub NCC per propagare la subnet PSC a tutti gli spoke VPC per consentire la connettività di rete da più reti VPC.
Che cosa ti serve
- Conoscenza di Google Cloud Networking
- Conoscenze di base di Cloud SQL
- Progetto Google Cloud
- Controlla la quota:Networks e richiedi reti aggiuntive, se necessario, screenshot di seguito:
Obiettivi
- Configura l'ambiente Google Cloud
- Configurare un'istanza Cloud SQL per MySQL con Private Service Connect
- Configura l'hub di Network Connectivity Center per propagare gli endpoint PSC
- Configurare Network Connectivity Center con la VPC come spoke
- Convalida percorso dati
- Esplorare le funzionalità di riparabilità del NCC
- Liberare le risorse
Prima di iniziare
Google Cloud Console e Cloud Shell
Per interagire con Google Cloud, utilizzeremo sia la console Google Cloud che Cloud Shell durante questo lab.
Console Google Cloud del progetto hub NCC
Puoi accedere alla console Cloud all'indirizzo https://console.cloud.google.com.
Configura i seguenti elementi in Google Cloud per semplificare la configurazione di Network Connectivity Center:
Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
Avvia Cloud Shell. Questo Codelab utilizza le variabili $per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.
gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project
Ruoli IAM
NCC richiede i ruoli IAM per accedere ad API specifiche. Assicurati di configurare l'utente con i ruoli IAM NCC come richiesto.
Ruolo/descrizione | Autorizzazioni |
networkconnectivity.networkAdmin: consente agli amministratori di rete di gestire gli hub e gli spoke. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: consente di aggiungere e gestire gli spoke in un hub. Da utilizzare in VPC condiviso in cui il progetto host è proprietario dell'hub, ma altri amministratori di altri progetti possono aggiungere spoke per i propri allegati all'hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: consente agli utenti della rete di visualizzare diversi attributi di hub e spoke. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configura l'ambiente di rete
Panoramica
In questa sezione, eseguiremo il deployment delle due reti VPC e delle regole firewall in un unico progetto. Il diagramma logico illustra l'ambiente di rete che verrà configurato in questo passaggio.
Crea VPC1 e una subnet
La rete VPC contiene subnet in cui installerai la VM GCE per la convalida del percorso dei dati
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}"
Creare una subnet PSC in VPC
Utilizza il comando seguente per creare una subnet nello spoke VPC che verrà allocata al 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}"
Crea VPC3 e una 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}"
Configura le regole firewall di VPC1
Queste regole consentiranno la connettività di rete dagli intervalli RFC1918 e 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
Configurare le regole firewall VPC e di routing
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
Configura la VM GCE in VPC1
Per installare i pacchetti, devi disporre di un accesso temporaneo a internet, quindi configura l'istanza in modo che utilizzi un indirizzo IP esterno.
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'
Configura la VM GCE in VPC3
Per installare i pacchetti, devi disporre di un accesso temporaneo a internet, quindi configura l'istanza in modo che utilizzi un indirizzo IP esterno.
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. Crea l'istanza Cloud SQL
Utilizza i comandi riportati di seguito per creare un'istanza e attivare Private Service Connect .
Questa operazione richiede alcuni minuti.
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
Identifica l'URI del collegamento a un servizio dell'istanza Cloud SQL
Utilizza il comando gcloud sql instances describe per visualizzare le informazioni su un'istanza con Private Service Connect abilitato. Prendi nota del campo pscServiceAttachmentLink che mostra l'URI che punta al collegamento al servizio dell'istanza. Ne avremo bisogno nella prossima sezione.
gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'
4. Endpoint PSC per Cloud SQL
Prenota un indirizzo IP interno per l'endpoint PSC
Utilizza il comando riportato di seguito per prenotare un indirizzo IP interno per l'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
Cerca il NOME associato all'indirizzo IP riservato. Verrà utilizzato nella configurazione della regola di inoltro.
gcloud compute addresses list \
--filter="name=csql-psc-ip"
Crea la regola di inoltro Private Service Connect in VPC1
Utilizza il comando seguente per creare l'endpoint Private Service Connect e indirizzarlo al collegamento a un servizio 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
Utilizza il comando seguente per verificare che l'attacco del servizio cSQL accetti l'endpoint
gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'
Verifica il percorso dati a MySQL dalla VPC1
Quando crei una nuova istanza Cloud SQL, devi impostare una password per l'account utente predefinito prima di poterti connettere all'istanza.
gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password
Utilizza il comando seguente per individuare l'indirizzo IP dell'endpoint PSC associato al collegamento a un servizio di Cloud SQL.
gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'
Connettiti all'istanza Cloud SQL da una VM in VPC1
Apri una sessione SSH su csql-vpc1-vm
gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap
Utilizza il comando seguente per connetterti all'istanza Cloud SQL. Quando richiesto, inserisci la password creata nel passaggio precedente.
mysql -h 192.168.0.253 -u root -p
L'output riportato di seguito viene visualizzato dopo un accesso riuscito.
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)]>
Utilizza il comando show databases; per verificare i database creati per impostazione predefinita su MySQL.
MySQL [(none)]> show databases;
Connettiti all'istanza Cloud SQL da una VM in VPC3
Apri una sessione SSH su csql-vpc3-vm,
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
Utilizza il comando seguente per connetterti all'istanza Cloud SQL. Quando richiesto, inserisci la password creata nel passaggio precedente.
mysql -h 192.168.0.253 -u root -p
La sessione dalla VM residente su VPC3 non va a buon fine perché non esiste un percorso dati da VPC3 all'endpoint Private Service Connect. Usa le sequenze di tasti per uscire dalla sessione.
Ctrl + C
5. Hub Network Connectivity Center
Panoramica
In questa sezione, configureremo un hub NCC utilizzando i comandi gcloud. L'hub NCC fungerà da piano di controllo responsabile della creazione del percorso dati dagli spoke VPC all'endpoint Private Service Connect.
Attivare i servizi API
Se non è ancora abilitata, abilita l'API Network Connectivity:
gcloud services enable networkconnectivity.googleapis.com
Creare un hub NCC
Utilizza il comando gcloud riportato di seguito per creare un hub NCC. Il flag "–export-psc" indica a NCC Hub di propagare gli endpoint PSC noti a tutti gli spoke VPC.
hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc
Descrivi l'hub NCC appena creato. Prendi nota del nome e del percorso associato.
gcloud network-connectivity hubs describe ncc-hub
Configura VPC1 come 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
Configura VPC3 come 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
Utilizza il comando seguente per controllare la tabella di routing dell'hub NCC per verificare la presenza di una route alla subnet PSC.
gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub
6. Verifica il percorso dei dati NCC
In questo passaggio convalideremo il percorso dei dati tra l'NCC ibrido e lo spoke VPC.
Verifica il percorso dati configurato dal NCC all'endpoint PSC delle istanze Cloud SQL
Utilizza l'output di questi comandi gcloud per accedere alla VM on prem.
gcloud compute instances list --filter="name=csql-vpc3-vm"
Accedi all'istanza VM residente nella rete on-prem.
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
Utilizza il comando mysql riportato di seguito per connetterti all'istanza Cloud SQL. Quando richiesto, inserisci la password creata nel passaggio precedente.
mysql -h 192.168.0.253 -u root -p
L'output riportato di seguito viene visualizzato dopo un accesso riuscito.
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)
Utilizza il comando show databases; per verificare i database creati per impostazione predefinita su MySQL
MySQL [(none)]> show databases;
7. Esegui la pulizia
Accedi a Cloud Shell ed elimina le risorse Google Cloud.
Elimina gli endpoint PSC di 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
Elimina l'istanza Cloud SQL
gcloud sql instances delete mysql-instance --quiet
Elimina regole 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}"
Elimina le istanze GCE in VPC1 e 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
Eliminare gli 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
Eliminare l'hub NCC
hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
--project=${project}
Elimina le subnet in tutti i 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
Elimina VPC1 e VPC3
gcloud compute networks delete vpc1-spoke vpc3-spoke
8. Complimenti!
Hai completato la propagazione di Private Service Connect con Network Connectivity Center Lab.
Argomenti trattati
- Propagazione degli endpoint Private Service Connect con Network Connectivity Center
Passaggi successivi