Lab: Propagación de PSC de NCC

1. Introducción

Descripción general

En este lab, los usuarios explorarán cómo el concentrador de Network Connectivity Center propaga un extremo de Private Service Connect a los radios de VPC.

El recurso de concentrador proporciona un modelo de administración de conectividad centralizado para interconectar el tráfico de los radios de VPC con los extremos de PSC.

Qué compilarás

En este codelab, compilarás una red de NCC que propagará un extremo de Private Service Connect a la instancia de Cloud SQL.

74bf390e323ea3bb.png

Qué aprenderás

  • Usa Private Service Connect para conectarte a una instancia de Cloud SQL
  • Usa el concentrador de NCC para propagar la subred de PSC a todos los radios de VPC para permitir la conectividad de red desde varias redes de VPC.

Requisitos

  • Conocimientos de Google Cloud Networking
  • Conocimientos básicos de Cloud SQL
  • Proyecto de Google Cloud
  • Revisa la sección Cuota:Redes y solicita redes adicionales si es necesario. Consulta la siguiente captura de pantalla:

6bc606cb34bce7e8.png

Objetivos

  • Configura el entorno de GCP
  • Configura una instancia de Cloud SQL para MySQL con Private Service Connect
  • Configura el concentrador de Network Connectivity Center para propagar extremos de PSC
  • Configura Network Connectivity Center con una VPC como radio
  • Valida la ruta de acceso a los datos
  • Explora las funciones de servicio del NCC
  • Limpia los recursos

Antes de comenzar

Consola de Google Cloud y Cloud Shell

Para interactuar con GCP, usaremos la consola de Google Cloud y Cloud Shell a lo largo de este lab.

Consola de Google Cloud del proyecto del concentrador de NCC

Puedes acceder a la consola de Cloud en https://console.cloud.google.com.

Configura los siguientes elementos en Google Cloud para facilitar la configuración de Network Connectivity Center:

En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

Inicia Cloud Shell. En este codelab, se usan $variables para ayudar a implementar la configuración de gcloud en Cloud Shell.

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

Funciones de IAM

NCC requiere roles de IAM para acceder a APIs específicas. Asegúrate de configurar al usuario con los roles de IAM de NCC según sea necesario.

Rol/descripción

Permisos

networkconnectivity.networkAdmin: Permite que los administradores de red administren el concentrador y los radios.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: Permite agregar y administrar radios en un concentrador. Se usa en la VPC compartida, en la que el proyecto host es propietario del concentrador, pero otros administradores de otros proyectos pueden agregar radios para sus archivos adjuntos al concentrador.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Permite que los usuarios de la red vean diferentes atributos del concentrador y los radios.

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

2. Configura el entorno de red

Descripción general

En esta sección, implementaremos las dos redes de VPC y las reglas de firewall en un solo proyecto. En el diagrama lógico, se ilustra el entorno de red que se configurará en este paso.

8884a55988881e17.png

Crea VPC1 y una subred

La red de VPC contiene subredes en las que instalarás la VM de GCE para la validación de la ruta de datos.

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

Cómo crear una subred de PSC en la VPC

Usa el siguiente comando para crear una subred en el radio de VPC que se asignará 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 y una subred

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 las reglas de firewall de VPC1

Estas reglas permitirán la conectividad de red desde los rangos de RFC1918 y de 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 el enrutamiento de VPC y las reglas de firewall de 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

Configura la VM de GCE en VPC1

Necesitarás acceso temporal a Internet para instalar paquetes, así que configura la instancia para que use una dirección IP externa.

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 de GCE en VPC3

Necesitarás acceso temporal a Internet para instalar paquetes, por lo que debes configurar la instancia para que use una dirección IP externa.

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. Cree la instancia de Cloud SQL.

Usa los siguientes comandos para crear una instancia y habilitar Private Service Connect .

El proceso tardará unos minutos.

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 el URI del adjunto de servicio de la instancia de Cloud SQL

Usa el comando gcloud sql instances describe para ver información sobre una instancia con Private Service Connect habilitado. Anota el campo pscServiceAttachmentLink, que muestra el URI que apunta al adjunto de servicio de la instancia. Lo necesitaremos en la siguiente sección.

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

4. Extremo de PSC a Cloud SQL

Reserva una dirección IP interna para el extremo de PSC

Usa el siguiente comando para reservar una dirección IP interna para el extremo de 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

Busca el NAME asociado con la dirección IP reservada. Se usará en la configuración de la regla de reenvío.

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

Crea la regla de reenvío de Private Service Connect en VPC1

Usa el siguiente comando para crear el extremo de Private Service Connect y apuntarlo al adjunto de servicio de 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

Usa el siguiente comando para verificar que el adjunto de servicio de cSQL acepte el extremo.

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

Verifica la ruta de datos a MySQL desde VPC1

Cuando creas una instancia de Cloud SQL nueva, debes establecer una contraseña para la cuenta de usuario predeterminada antes de poder conectarte a la instancia.

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

Usa el siguiente comando para ubicar la dirección IP del extremo de PSC que está asociado al adjunto de servicio de Cloud SQL.

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

Conéctate a la instancia de Cloud SQL desde una VM en VPC1

Abre una sesión de SSH en csql-vpc1-vm.

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

Usa el siguiente comando para conectarte a la instancia de Cloud SQL. Cuando se te solicite, ingresa la contraseña que se creó en el paso anterior.

mysql -h 192.168.0.253 -u root -p 

El siguiente resultado se muestra cuando se accede correctamente.

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)]> 

Usa el comando show databases; para verificar las bases de datos que se crean de forma predeterminada en MySql.

MySQL [(none)]> show databases;

Conéctate a la instancia de Cloud SQL desde una VM en VPC3

Abre una sesión de SSH en csql-vpc3-vm.

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

Usa el siguiente comando para conectarte a la instancia de Cloud SQL. Cuando se te solicite, ingresa la contraseña que se creó en el paso anterior.

mysql -h 192.168.0.253 -u root -p 

La sesión de la VM que reside en VPC3 falla porque no hay una ruta de datos de VPC3 al extremo de Private Service Connect. Usa las combinaciones de teclas para salir de la sesión.

Ctrl + C

5. Concentrador de Network Connectivity Center

Descripción general

En esta sección, configuraremos un NCC Hub con los comandos de gcloud. El concentrador de NCC funcionará como el plano de control responsable de crear la ruta de datos desde los radios de VPC hasta el extremo de Private Service Connect.

b615efa4bad5f86.png

Habilita los servicios de API

Habilita la API de Network Connectivity en caso de que aún no esté habilitada:

gcloud services enable networkconnectivity.googleapis.com

Cómo crear un concentrador de NCC

Usa el siguiente comando de gcloud para crear un concentrador de NCC. La marca "–export-psc" le indica al concentrador de NCC que propague los extremos de PSC conocidos a todos los radios de VPC.

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

Describe el concentrador de NCC recién creado. Anota el nombre y la ruta de acceso asociada.

gcloud network-connectivity hubs describe ncc-hub

Configura VPC1 como un radio de 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 como un radio de 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

Usa el siguiente comando para verificar si hay una ruta a la subred de PSC en la tabla de rutas del concentrador de NCC.

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

6. Verifica la ruta de acceso a los datos del NCC

En este paso, validaremos la ruta de datos entre el NCC híbrido y el radio de VPC.

Verifica la ruta de datos configurada de NCC al extremo de PSC de instancias de Cloud SQL

Usa el resultado de estos comandos de gcloud para acceder a la VM local.

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

Accede a la instancia de VM que reside en la red local.

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

Usa el siguiente comando mysql para conectarte a la instancia de Cloud SQL. Cuando se te solicite, ingresa la contraseña que se creó en el paso anterior.

mysql -h 192.168.0.253 -u root -p 

El siguiente resultado se muestra cuando se accede correctamente.

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)

Usa el comando show databases para verificar las bases de datos que se crean de forma predeterminada en MySql.

MySQL [(none)]> show databases;

7. Realiza una limpieza

Accede a Cloud Shell y borra los recursos de GCP.

Borra los extremos de PSC de 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

Borra la instancia de Cloud SQL.

gcloud sql instances delete mysql-instance --quiet

Borra reglas de 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}"

Borra las instancias de GCE en VPC1 y 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

Cómo borrar los radios de 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

Cómo borrar el concentrador de NCC

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

Borra las subredes de todas las 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

Borra VPC1 y VPC3

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. ¡Felicitaciones!

Completaste el lab de propagación de Private Service Connect con Network Connectivity Center.

Temas que se abordaron

  • Propagación de extremos de Private Service Connect con Network Connectivity Center

Próximos pasos