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.
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:
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.
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.
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