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.
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
- Kenntnisse zu GCP Cloud Networking
- Grundkenntnisse in Cloud SQL
- Google Cloud-Projekt
- Prüfen Sie Ihr Kontingent:Netzwerke und fordern Sie bei Bedarf zusätzliche Netzwerke an (siehe Screenshot unten):
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.
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.
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