Atelier: Propagation du PSC NCC

1. Introduction

Présentation

Dans cet atelier, les utilisateurs découvriront comment le hub Network Connectivity Center propage un point de terminaison Private Service Connect vers les spokes VPC.

La ressource hub fournit un modèle de gestion de la connectivité centralisée pour interconnecter le trafic des spokes VPC aux points de terminaison PSC.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez créer un réseau NCC qui propagera un point de terminaison Private Service Connect vers une instance Cloud SQL.

74bf390e323ea3bb.png

Points abordés

  • Se connecter à une instance Cloud SQL à l'aide de Private Service Connect
  • Utilisez le hub NCC pour propager le sous-réseau PSC à tous les spokes VPC afin de permettre la connectivité réseau à partir de plusieurs réseaux VPC.

Prérequis

  • Connaissances de la mise en réseau GCP Cloud
  • Connaissances de base sur Cloud SQL
  • Projet Google Cloud
  • Vérifiez votre quota:réseaux et demandez des réseaux supplémentaires si nécessaire (capture d'écran ci-dessous) :

6bc606cb34bce7e8.png

Objectifs

  • Configurer l'environnement GCP
  • Configurer une instance Cloud SQL pour MySQL avec Private Service Connect
  • Configurer le hub Network Connectivity Center pour propager les points de terminaison PSC
  • Configurer Network Connectivity Center avec un VPC en tant que spoke
  • Valider le chemin d'accès aux données
  • Explorer les fonctionnalités de serviceabilité du NCC
  • Effectuer un nettoyage des ressources

Avant de commencer

Google Cloud Console et Cloud Shell

Pour interagir avec GCP, nous utiliserons à la fois Google Cloud Console et Cloud Shell tout au long de cet atelier.

Console Google Cloud du projet Hub NCC

La console Cloud est accessible à l'adresse https://console.cloud.google.com.

Configurez les éléments suivants dans Google Cloud pour faciliter la configuration de Network Connectivity Center:

Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

Lancez le Cloud Shell. Cet atelier de programmation utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.

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

Rôles IAM

NCC nécessite des rôles IAM pour accéder à des API spécifiques. Veillez à configurer votre utilisateur avec les rôles IAM NCC requis.

Rôle/Description

Autorisations

networkconnectivity.networkAdmin : permet aux administrateurs réseau de gérer le hub et les spokes.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans un VPC partagé où le projet hôte est propriétaire du hub, mais où d'autres administrateurs d'autres projets peuvent ajouter des spokes pour leurs associations au hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer : permet aux utilisateurs du réseau d'afficher différents attributs du hub et des spokes.

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

2. Configurer l'environnement réseau

Présentation

Dans cette section, nous allons déployer les deux réseaux VPC et les règles de pare-feu dans un seul projet. Le schéma logique illustre l'environnement réseau qui sera configuré à cette étape.

8884a55988881e17.png

Créer VPC1 et un sous-réseau

Le réseau VPC contient des sous-réseaux dans lesquels vous allez installer la VM GCE pour la validation du chemin de données.

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

Créer un sous-réseau PSC dans VPC

Utilisez la commande ci-dessous pour créer un sous-réseau dans le spoke VPC qui sera alloué au 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}" 

Créer VPC3 et un sous-réseau

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

Configurer les règles de pare-feu de VPC1

Ces règles autorisent la connectivité réseau à partir des plages RFC1918 et 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

Configurer le routage VPC et les règles de pare-feu 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

Configurer la VM GCE dans VPC1

Vous aurez besoin d'un accès Internet temporaire pour installer des paquets. Configurez donc l'instance pour qu'elle utilise une adresse IP externe.

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'

Configurer la VM GCE dans VPC3

Vous aurez besoin d'un accès Internet temporaire pour installer des paquets. Configurez donc l'instance pour qu'elle utilise une adresse IP externe.

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. Créer l'instance Cloud SQL

Utilisez les commandes ci-dessous pour créer une instance et activer Private Service Connect .

Cette opération prend quelques minutes.

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

Identifier l'URI du rattachement de service de l'instance Cloud SQL

Utilisez la commande gcloud sql instances describe pour afficher des informations sur une instance sur laquelle Private Service Connect est activé. Notez le champ pscServiceAttachmentLink, qui affiche l'URI qui pointe vers le rattachement de service de l'instance. Nous en aurons besoin dans la section suivante.

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

4. Point de terminaison PSC vers Cloud SQL

Réserver une adresse IP interne pour le point de terminaison PSC

Utilisez la commande ci-dessous pour réserver une adresse IP interne pour le point de terminaison 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

Recherchez le NOM associé à l'adresse IP réservée. Il sera utilisé dans la configuration de la règle de transfert.

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

Créer la règle de transfert Private Service Connect dans VPC1

Utilisez la commande ci-dessous pour créer le point de terminaison Private Service Connect et le faire pointer vers le rattachement de service 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

Utilisez la commande ci-dessous pour vérifier que le rattachement de service cSQL accepte le point de terminaison.

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

Vérifier le chemin de données vers MySQL depuis VPC1

Lorsque vous créez une instance Cloud SQL, vous devez définir un mot de passe pour le compte utilisateur par défaut avant de pouvoir vous connecter à l'instance.

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

Utilisez la commande ci-dessous pour trouver l'adresse IP du point de terminaison PSC associé au rattachement de service Cloud SQL.

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

Se connecter à une instance Cloud SQL à partir d'une VM dans VPC1

Ouvrez une session SSH sur csql-vpc1-vm.

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

Utilisez la commande ci-dessous pour vous connecter à l'instance Cloud SQL. Lorsque vous y êtes invité, saisissez le mot de passe créé à l'étape précédente.

mysql -h 192.168.0.253 -u root -p 

Le résultat ci-dessous s'affiche une fois la connexion réussie.

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

Utilisez la commande show databases; pour vérifier les bases de données créées par défaut dans MySQL.

MySQL [(none)]> show databases;

Se connecter à l'instance Cloud SQL à partir d'une VM dans VPC3

Ouvrez une session SSH sur csql-vpc3-vm.

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

Utilisez la commande ci-dessous pour vous connecter à l'instance Cloud SQL. Lorsque vous y êtes invité, saisissez le mot de passe créé à l'étape précédente.

mysql -h 192.168.0.253 -u root -p 

La session de la VM résidant sur VPC3 échoue, car il n'existe aucun chemin de données entre VPC3 et le point de terminaison Private Service Connect. Utilisez les combinaisons de touches pour quitter la session.

Ctrl + C

5. Hub Network Connectivity Center

Présentation

Dans cette section, nous allons configurer un hub NCC à l'aide de commandes gcloud. Le hub NCC servira de plan de contrôle chargé de créer le chemin de données entre les spokes VPC et le point de terminaison Private Service Connect.

b615efa4bad5f86.png

Activer les services d'API

Activez l'API Network Connectivity si elle n'est pas encore activée:

gcloud services enable networkconnectivity.googleapis.com

Créer un hub NCC

Utilisez la commande gcloud ci-dessous pour créer un hub NCC. L'indicateur "–export-psc" indique au hub NCC de propager les points de terminaison PSC connus à tous les spokes VPC.

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

Décrivez le hub NCC nouvellement créé. Notez le nom et le chemin d'accès associé.

gcloud network-connectivity hubs describe ncc-hub

Configurer VPC1 en tant que 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

Configurer VPC3 en tant que 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

Utilisez la commande ci-dessous pour rechercher une route vers le sous-réseau PSC dans la table de routage du hub NCC.

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

6. Vérifier le chemin d'accès aux données du NCC

À cette étape, nous allons valider le chemin de données entre le NCC hybride et le rayon du VPC.

Vérifier le chemin de données configuré par le NCC vers le point de terminaison PSC des instances Cloud SQL

Utilisez la sortie de ces commandes gcloud pour vous connecter à la VM sur site.

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

Connectez-vous à l'instance de VM située sur le réseau sur site.

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

Utilisez la commande mysql ci-dessous pour vous connecter à l'instance Cloud SQL. Lorsque vous y êtes invité, saisissez le mot de passe créé à l'étape précédente.

mysql -h 192.168.0.253 -u root -p 

Le résultat ci-dessous s'affiche une fois la connexion réussie.

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)

Utiliser la commande "show databases" pour vérifier les bases de données créées par défaut dans MySQL

MySQL [(none)]> show databases;

7. Effectuer un nettoyage

Se connecter à Cloud Shell et supprimer des ressources GCP

Supprimer les points de terminaison PSC 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

Supprimez l'instance Cloud SQL.

gcloud sql instances delete mysql-instance --quiet

Supprimer des règles de pare-feu

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

Supprimer les instances GCE dans VPC1 et 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

Supprimer les spokes du 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

Supprimer le hub NCC

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

Supprimez les sous-réseaux de tous les 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

Supprimer VPC1 et VPC3

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. Félicitations !

Vous avez terminé l'atelier sur la propagation Private Service Connect avec Network Connectivity Center.

Sujets abordés

  • Propagation des points de terminaison Private Service Connect avec Network Connectivity Center

Étapes suivantes