Lab: NCC PSC-Weitergabe

1. Einführung

Übersicht

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

Die Hub-Ressource bietet ein zentrales Modell für die Verbindungsverwaltung, um den Traffic von VPC-Spokes mit PSC-Endpunkten zu verbinden.

Umfang

In diesem Codelab erstellen Sie ein NCC-Netzwerk, über das ein Private Service Connect-Endpunkt an die Cloud SQL-Instanz übertragen wird.

74bf390e323ea3bb.png

Lerninhalte

  • Private Service Connect zum Herstellen einer Verbindung zu einer Cloud SQL-Instanz verwenden
  • Verwenden Sie den NCC-Hub, um das PSC-Subnetz an alle VPC-Spokes zu übertragen, um die Netzwerkkonnektivität über mehrere VPC-Netzwerke zu ermöglichen.

Voraussetzungen

6bc606cb34bce7e8.png

Zielsetzungen

  • GCP-Umgebung einrichten
  • Cloud SQL-Instanz für MySQL mit Private Service Connect einrichten
  • Network Connectivity Center-Hub für die Weiterleitung von PSC-Endpunkten konfigurieren
  • Network Connectivity Center mit VPC als Spoke konfigurieren
  • Datenpfad prüfen
  • Funktionen zur Wartung von NCC
  • 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 der GCP zu interagieren.

NCC-Hub-Projekt in der Google Cloud Console

Die Cloud Console finden Sie unter https://console.cloud.google.com.

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 unterstützen.

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 den Nutzer mit den erforderlichen NCC-IAM-Rollen.

Rolle/Beschreibung

Berechtigungen

networkconnectivity.networkAdmin: Damit können Netzwerkadministratoren Hubs und Spokes verwalten.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: Hiermit können Spokes in einem Hub hinzugefügt und verwaltet werden. Wird in einer freigegebenen VPC verwendet, in der das Hostprojekt Inhaber des Hubs ist, aber andere Administratoren in anderen Projekten dem Hub Spokes für ihre Anhänge hinzufügen können.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Damit können Netzwerknutzer verschiedene Attribute von Hubs und Spokes aufrufen.

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 einzigen Projekt bereit. Das logische Diagramm zeigt die Netzwerkumgebung, die in diesem Schritt eingerichtet wird.

8884a55988881e17.png

VPC1 und ein Subnetz erstellen

Das VPC-Netzwerk enthält Subnetze, in denen Sie eine GCE-VM zur 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-EP 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

Mit diesen Regeln wird die Netzwerkverbindung aus den Bereichen RFC 1918 und Identity Access Proxy zugelassen.

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

VPC-Routing- 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 vorübergehenden 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 vorübergehenden 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. Beachten Sie das Feld „pscServiceAttachmentLink“, das den URI enthält, der auf den Dienstanhang der Instanz verweist. Diese Informationen benötigen wir im nächsten Abschnitt.

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

4. PSC-Endpunkt zu 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

Rufen Sie den NAMEN ab, der mit der reservierten IP-Adresse verknüpft ist. Dieser 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 Dienstanhang für cSQL den Endpunkt akzeptiert:

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

Prüfen Sie den Datenpfad zu MySQL von VPC1

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

Verbindung von einer VM in VPC1 zu einer Cloud SQL-Instanz herstellen

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

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 auf Aufforderung das Passwort ein, das Sie im vorherigen Schritt erstellt haben.

mysql -h 192.168.0.253 -u root -p 

Nach 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 Standarddatenbanken in MySQL zu prüfen.

MySQL [(none)]> show databases;

Verbindung von einer VM in VPC3 zur Cloud SQL-Instanz herstellen

Öffnen Sie eine SSH-Sitzung mit 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 auf Aufforderung das Passwort ein, das Sie im vorherigen Schritt erstellt haben.

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 Steuerebene, die für das Erstellen 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 weiterzuleiten.

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 den 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

Mit dem folgenden Befehl kannst du in der Routingtabelle des NCC-Hubs nach einer Route zum PSC-Subnetz suchen.

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

6. NCC-Datenpfad prüfen

In diesem Schritt prüfen wir den Datenpfad zwischen dem NCC-Hybrid und dem VPC-Spoke.

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

Verwenden Sie die Ausgabe dieser gcloud-Befehle, um sich auf der On-Premises-VM anzumelden.

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

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

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 auf Aufforderung das Passwort ein, das Sie im vorherigen Schritt erstellt haben.

mysql -h 192.168.0.253 -u root -p 

Nach 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 Standarddatenbanken in MySQL prüfen.

MySQL [(none)]> show databases;

7. Bereinigen

Melden Sie sich in Cloud Shell an und löschen Sie die 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 zur Private Service Connect-Weitergabe mit dem Network Connectivity Center abgeschlossen.

Behandelte Themen

  • Private Service Connect-Endpunktweitergabe mit dem Network Connectivity Center

Nächste Schritte