Lab: propagazione PSC NCC

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.

74bf390e323ea3bb.png

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:

6bc606cb34bce7e8.png

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.

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

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.

b615efa4bad5f86.png

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