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 aux spokes VPC.

La ressource de hub fournit un modèle de gestion de la connectivité centralisé 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 à une instance Cloud SQL.

74bf390e323ea3bb.png

Points abordés

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

Prérequis

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

6bc606cb34bce7e8.png

Objectifs

  • Configurer l'environnement GCP
  • Configurer une instance Cloud SQL pour MySQL avec Private Service Connect
  • Configurer un 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
  • Découvrir les fonctionnalités de maintenance de NCC
  • Effectuer un nettoyage des ressources

Avant de commencer

Google Cloud Console et Cloud Shell

Pour interagir avec GCP, nous utiliserons à la fois la console Google Cloud 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. Assurez-vous d'attribuer les rôles IAM NCC requis à votre utilisateur.

Rôle/Description

Autorisations

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

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans le VPC partagé où le projet hôte possède le 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 des hubs 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é lors de cette étape.

8884a55988881e17.png

Créer VPC1 et un sous-réseau

Le réseau VPC contient des sous-réseaux dans lesquels vous installerez 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 un 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 VPC de routage 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 les packages. 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 les packages. 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 pointant 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 d'accès aux 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 localiser l'adresse IP du point de terminaison PSC associé au rattachement de service de Cloud SQL.

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

Se connecter à une instance Cloud SQL depuis une VM dans VPC1

Ouvrez une session SSH vers 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 lorsque la connexion est 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 sur MySQL.

MySQL [(none)]> show databases;

Se connecter à l'instance Cloud SQL depuis 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 de VPC3 au point de terminaison Private Service Connect. Utilisez les frappes au clavier 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 ce n'est pas déjà fait :

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 que vous venez de créer. 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 vérifier si la table de routage du hub NCC contient une route vers le sous-réseau PSC.

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

Au cours de cette étape, nous allons valider le chemin de données entre le spoke hybride NCC et le spoke VPC.

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

Utilisez le résultat 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 dans 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 lorsque la connexion est 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)

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

MySQL [(none)]> show databases;

7. Effectuer un nettoyage

Connectez-vous à Cloud Shell et supprimez les 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

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

Supprimer les sous-réseaux dans 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