Lab: NCC PSC-Weitergabe

1. Einführung

Übersicht

In diesem Lab erfahren Sie, wie ein Hub von Network Connectivity Center einen Private Service Connect-Endpunkt an VPC-Spokes weiterleitet.

Die Hub-Ressource ist ein Modell für die zentrale Konnektivitätsverwaltung von VPC-Spoke-Traffic zu PSC-Endpunkten.

Umfang

In diesem Codelab erstellen Sie ein NCC-Netzwerk, das einen Private Service Connect-Endpunkt an die Cloud SQL-Instanz weiterleitet.

74bf390e323ea3bb.png

Lerninhalte

  • Verbindung zu einer Cloud SQL-Instanz über Private Service Connect herstellen
  • Verwenden Sie den NCC-Hub, um das PSC-Subnetz an alle VPC-Spokes weiterzugeben, damit die Netzwerkverbindung von mehreren VPC-Netzwerken aus möglich ist.

Voraussetzungen

6bc606cb34bce7e8.png

Ziele

  • GCP-Umgebung einrichten
  • Cloud SQL-Instanz für MySQL mit Private Service Connect einrichten
  • Network Connectivity Center-Hub für die Weitergabe von PSC-Endpunkten konfigurieren
  • Network Connectivity Center mit VPC als Spoke konfigurieren
  • Datenpfad validieren
  • Funktionen für die NCC-Wartung
  • Ressourcen bereinigen

Hinweis

Google Cloud Console und Cloud Shell

In diesem Lab verwenden wir sowohl die Google Cloud Console als auch Cloud Shell, um mit GCP zu interagieren.

NCC-Hub-Projekt in der Google Cloud Console

Die Cloud Console ist unter https://console.cloud.google.com erreichbar.

Richten Sie die folgenden Elemente in Google Cloud ein, um die Konfiguration des Network Connectivity Centers zu vereinfachen:

Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie ein Google Cloud-Projekt.

Starten Sie Cloud Shell. In diesem Codelab werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu erleichtern.

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

IAM-Rollen

Für den Zugriff auf bestimmte APIs sind IAM-Rollen erforderlich. Konfigurieren Sie Ihren Nutzer mit den erforderlichen NCC-IAM-Rollen.

Rolle/Beschreibung

Berechtigungen

networkconnectivity.networkAdmin: Ermöglicht Netzwerkadministratoren, Hubs und Spokes zu verwalten.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: Ermöglicht das Hinzufügen und Verwalten von Spokes in einem Hub. Zur Verwendung in einer freigegebenen VPC, in der das Hostprojekt den Hub besitzt, aber andere Administratoren in anderen Projekten Spokes für ihre Anhänge zum Hub hinzufügen können.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Ermöglicht Netzwerkbenutzern, verschiedene Attribute von Hubs und Spokes anzusehen.

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

2. Netzwerkumgebung einrichten

Übersicht

In diesem Abschnitt stellen wir die beiden VPC-Netzwerke und Firewallregeln in einem einzelnen Projekt bereit. Das logische Diagramm veranschaulicht die Netzwerkumgebung, die in diesem Schritt eingerichtet wird.

8884a55988881e17.png

VPC1 und ein Subnetz erstellen

Das VPC-Netzwerk enthält Subnetze, in denen Sie die GCE-VM für die Validierung des Datenpfads installieren.

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

PSC-Subnetz in VPC erstellen

Verwenden Sie den folgenden Befehl, um ein Subnetz im VPC-Spoke zu erstellen, das dem PSC-Endpunkt zugewiesen wird.

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

VPC3 und ein Subnetz erstellen

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

Firewallregeln für VPC1 konfigurieren

Diese Regeln ermöglichen die Netzwerkverbindung von RFC1918- und Identity Access Proxy-Bereichen.

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

Routing-VPC und VPC-Firewallregeln konfigurieren

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

GCE-VM in VPC1 konfigurieren

Sie benötigen temporären Internetzugriff, um Pakete zu installieren. Konfigurieren Sie die Instanz daher so, dass sie eine externe IP-Adresse verwendet.

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'

GCE-VM in VPC3 konfigurieren

Sie benötigen temporären Internetzugriff, um Pakete zu installieren. Konfigurieren Sie die Instanz daher so, dass sie eine externe IP-Adresse verwendet.

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. Cloud SQL-Instanz erstellen

Verwenden Sie die folgenden Befehle, um eine Instanz zu erstellen und Private Service Connect zu aktivieren .

Dies dauert ein paar Minuten.

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

URI des Dienstanhangs der Cloud SQL-Instanz ermitteln

Verwenden Sie den Befehl „gcloud sql instances describe“, um Informationen zu einer Instanz mit aktiviertem Private Service Connect aufzurufen. Notieren Sie sich das Feld „pscServiceAttachmentLink“, das den URI anzeigt, der auf den Dienstanhang der Instanz verweist. Wir benötigen sie im nächsten Abschnitt.

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

4. PSC-Endpunkt für Cloud SQL

Interne IP-Adresse für den PSC-Endpunkt reservieren

Verwenden Sie den folgenden Befehl, um eine interne IP-Adresse für den Private Service Connect-Endpunkt zu reservieren.

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

Suchen Sie den NAME, der der reservierten IP-Adresse zugeordnet ist. Diese wird in der Konfiguration der Weiterleitungsregel verwendet.

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

Private Service Connect-Weiterleitungsregel in VPC1 erstellen

Verwenden Sie den folgenden Befehl, um den Private Service Connect-Endpunkt zu erstellen und auf den Cloud SQL-Dienstanhang zu verweisen.

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

Prüfen Sie mit dem folgenden Befehl, ob der cSQL-Dienstanhang den Endpunkt akzeptiert.

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

Datenpfad zu MySQL über VPC1 prüfen

Wenn Sie eine neue Cloud SQL-Instanz erstellen, müssen Sie ein Passwort für das Standardnutzerkonto festlegen, bevor Sie eine Verbindung zur Instanz herstellen können.

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

Verwenden Sie den folgenden Befehl, um die IP-Adresse des PSC-Endpunkts zu ermitteln, der dem Dienstanhang von Cloud SQL zugeordnet ist.

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

Von einer VM in VPC1 eine Verbindung zu einer Cloud SQL-Instanz herstellen

SSH-Sitzung zu csql-vpc1-vm öffnen

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

Verwenden Sie den folgenden Befehl, um eine Verbindung zur Cloud SQL-Instanz herzustellen. Geben Sie bei entsprechender Aufforderung das im vorherigen Schritt erstellte Passwort ein.

mysql -h 192.168.0.253 -u root -p 

Bei einer erfolgreichen Anmeldung wird die folgende Ausgabe angezeigt:

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

Verwenden Sie den Befehl „show databases;“, um die Datenbanken zu prüfen, die standardmäßig in MySQL erstellt werden.

MySQL [(none)]> show databases;

Von einer VM in VPC3 eine Verbindung zur Cloud SQL-Instanz herstellen

Öffnen Sie eine SSH-Sitzung zu csql-vpc3-vm.

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

Verwenden Sie den folgenden Befehl, um eine Verbindung zur Cloud SQL-Instanz herzustellen. Geben Sie bei entsprechender Aufforderung das im vorherigen Schritt erstellte Passwort ein.

mysql -h 192.168.0.253 -u root -p 

Die Sitzung von der VM in VPC3 schlägt fehl, da es keinen Datenpfad von VPC3 zum Private Service Connect-Endpunkt gibt. Verwenden Sie die Tastenkombinationen, um die Sitzung zu beenden.

Ctrl + C

5. Network Connectivity Center-Hub

Übersicht

In diesem Abschnitt konfigurieren wir einen NCC-Hub mit gcloud-Befehlen. Der NCC-Hub dient als Steuerungsebene, die für die Erstellung des Datenpfads von VPC-Spokes zum Private Service Connect-Endpunkt verantwortlich ist.

b615efa4bad5f86.png

API-Dienste aktivieren

Aktivieren Sie die Network Connectivity API, falls sie noch nicht aktiviert ist:

gcloud services enable networkconnectivity.googleapis.com

NCC-Hub erstellen

Verwenden Sie den folgenden gcloud-Befehl, um einen NCC-Hub zu erstellen. Das Flag „–export-psc“ weist den NCC-Hub an, bekannte PSC-Endpunkte an alle VPC-Spokes weiterzugeben.

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

Beschreiben Sie den neu erstellten NCC-Hub. Notieren Sie sich den Namen und zugehörigen Pfad.

gcloud network-connectivity hubs describe ncc-hub

VPC1 als NCC-Spoke konfigurieren

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

VPC3 als NCC-Spoke konfigurieren

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

Prüfen Sie mit dem folgenden Befehl die Routingtabelle des NCC-Hubs auf eine Route zum PSC-Subnetz.

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

6. NCC-Datenpfad prüfen

In diesem Schritt validieren wir den Datenpfad zwischen NCC-Hybrid und VPC-Spoke.

Konfigurierten NCC-Datenpfad zum PSC-Endpunkt der Cloud SQL-Instanzen prüfen

Melden Sie sich mit der Ausgabe dieser gcloud-Befehle bei der lokalen VM an.

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

Melden Sie sich bei der VM-Instanz im lokalen Netzwerk an.

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

Verwenden Sie den folgenden mysql-Befehl, um eine Verbindung zur Cloud SQL-Instanz herzustellen. Geben Sie bei entsprechender Aufforderung das im vorherigen Schritt erstellte Passwort ein.

mysql -h 192.168.0.253 -u root -p 

Bei einer erfolgreichen Anmeldung wird die folgende Ausgabe angezeigt:

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)

Mit dem Befehl „show databases;“ können Sie die Datenbanken überprüfen, die standardmäßig in MySQL erstellt werden.

MySQL [(none)]> show databases;

7. Bereinigen

Melden Sie sich in Cloud Shell an und löschen Sie GCP-Ressourcen.

Cloud SQL-PSC-Endpunkte löschen

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

Cloud SQL-Instanz löschen

gcloud sql instances delete mysql-instance --quiet

Firewallregeln löschen

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

GCE-Instanzen in VPC1 und VPC3 löschen

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

NCC-Spokes löschen

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

NCC-Hub löschen

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

Subnetze in allen VPCs löschen

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

VPC1 und VPC3 löschen

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. Glückwunsch!

Sie haben das Lab „Private Service Connect-Weitergabe mit dem Network Connectivity Center“ abgeschlossen.

Behandelte Themen

  • Private Service Connect-Endpunktweitergabe mit dem Network Connectivity Center

Nächste Schritte