Lab: propagazione PSC NCC

1. Introduzione

Panoramica

In questo lab, gli utenti esploreranno 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à centralizzato 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.

74bf390e323ea3bb.png

Obiettivi didattici

  • Utilizza Private Service Connect per connetterti 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
  • Conoscenza di base di Cloud SQL
  • Progetto Google Cloud
  • Controlla Quota:reti e richiedi reti aggiuntive, se necessario. Vedi lo screenshot di seguito:

6bc606cb34bce7e8.png

Obiettivi

  • Configura l'ambiente GCP
  • Configura l'istanza Cloud SQL per MySQL con Private Service Connect
  • Configura l'hub Network Connectivity Center per propagare gli endpoint PSC
  • Configura Network Connectivity Center con VPC come spoke
  • Convalida del percorso dei dati
  • Esplorare le funzionalità di manutenzione di NCC
  • Esegui la pulizia delle risorse

Prima di iniziare

Google Cloud Console e Cloud Shell

Per interagire con GCP, 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 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 ruoli IAM per accedere ad API specifiche. Assicurati di configurare l'utente con i ruoli IAM NCC in base alle esigenze.

Ruolo/Descrizione

Autorizzazioni

networkconnectivity.networkAdmin: consente agli amministratori di rete di gestire hub e spoke.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: consente di aggiungere e gestire gli spoke in un hub. Da utilizzare nel VPC condiviso in cui il progetto host è proprietario dell'hub, ma altri amministratori di altri progetti possono aggiungere spoke per i relativi allegati all'hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: consente agli utenti di rete di visualizzare diversi attributi di hub e spoke.

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

2. Configurare 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.

8884a55988881e17.png

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}" 

Crea una subnet PSC in VPC

Utilizza il comando riportato di seguito 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

Configura le regole firewall VPC e VPC 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 per abilitare 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 al 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 del servizio dell'istanza. Ci servirà 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 riservare 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 NAME associato all'indirizzo IP riservato. Verrà utilizzato nella configurazione della regola di forwarding.

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

Crea la regola di forwarding di Private Service Connect in VPC1

Utilizza il comando riportato di seguito per creare l'endpoint Private Service Connect e indirizzarlo al collegamento al 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 riportato di seguito per verificare che l'allegato del servizio cSQL accetti l'endpoint

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

Verifica il percorso dei dati a MySQL da 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 riportato di seguito per individuare l'indirizzo IP dell'endpoint PSC associato al collegamento al 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 per csql-vpc1-vm

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

Utilizza il comando 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 seguente viene visualizzato dopo l'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 per csql-vpc3-vm,

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

Utilizza il comando 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 

La sessione dalla VM che si trova su VPC3 non va a buon fine perché non esiste un percorso dati da VPC3 all'endpoint Private Service Connect. Utilizza 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 control plane responsabile della creazione del percorso dati dagli spoke VPC all'endpoint Private Service Connect.

b615efa4bad5f86.png

Abilita i servizi API

Abilita l'API Network Connectivity nel caso in cui non sia ancora abilitata:

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 all'hub NCC 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 riportato di seguito per controllare la tabella di routing dell'hub NCC per una route alla subnet PSC.

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

6. Verificare il percorso dei dati NCC

In questo passaggio, convalideremo il percorso dei dati tra NCC ibrido e il VPC spoke.

Verifica il percorso dati NCC configurato all'endpoint PSC delle istanze Cloud SQL

Utilizza l'output di questi comandi gcloud per accedere alla VM on-premise.

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

Accedi all'istanza VM che si trova nella rete on-premise.

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 seguente viene visualizzato dopo l'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 GCP.

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 del 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

Elimina 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 il lab sulla propagazione di Private Service Connect con Network Connectivity Center.

Argomenti trattati

  • Propagazione degli endpoint Private Service Connect con Network Connectivity Center

Passaggi successivi