1. Einführung
Private Service Connect mit automatischer DNS-Konfiguration erstellt mithilfe von Service Directory und Cloud DNS automatisch DNS-Einträge, die mit den IP-Adressen des Private Service Connect-Endpunkts programmiert sind.
Inhalt
In diesem Codelab erstellen Sie eine umfassende Private Service Connect-Architektur, die die Verwendung von automatischem DNS veranschaulicht, wie in Abbildung 1 dargestellt.
Das automatische DNS wird durch Folgendes ermöglicht:
- Der Anhang des Producer-Dienstes stammt vom automatischen DNS, indem eine eigene Public Domain mit dem Parameter „– domain-names“ bereitgestellt wird. beim Erstellen des Private Service Connect-Dienstanhangs.
- Der Nutzer definiert einen Endpunktnamen.
- Das automatische DNS erstellt sowohl eine DNS-Zone goog-psc-default-us-central1 als auch einen DNS-Namen „cosmopup.net“ sowie einen Service Directory-Eintrag, der aus dem Namen des Nutzerendpunkts besteht.
Der Vorteil des automatischen DNS wird in (4) veranschaulicht, wo ein Endnutzer über DNS, FQDN stargazer.cosmopup.net, mit dem Nutzerendpunkt kommunizieren kann.
Abbildung 1
Aufgaben in diesem Lab
- Internen HTTP(S)-Load-Balancer erstellen
- Dienstanhang mit automatischem DNS erstellen
- Private Service Connect Producer-Dienst einrichten
- Mit automatischem DNS auf einen Nutzerendpunkt zugreifen
Voraussetzungen
- Google Cloud-Projekt
- Urheberrechtsfreie Inhalte („Public Domain“), die dir gehört
2. Hinweis
Projekt zur Unterstützung des Codelab aktualisieren
In diesem Codelab wird $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu unterstützen.
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. Producer-Einrichtung
Producer-VPC erstellen
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute networks create producer-vpc --project=$projectname --subnet-mode=custom
Producer-Subnetze erstellen
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute networks subnets create gce-subnet --project=$projectname --range=172.16.20.0/28 --network=producer-vpc --region=us-central1
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute networks subnets create load-balancer-subnet --project=$projectname --range=172.16.10.0/28 --network=producer-vpc --region=us-central1
IP-Adresse für den internen Load-Balancer reservieren
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute addresses create lb-ip \
--region=us-central1 \
--subnet=load-balancer-subnet \
--purpose=GCE_ENDPOINT
Zugewiesene IP-Adresse ansehen
Verwenden Sie den Befehl „compute names description“, um die zugewiesene IP-Adresse aufzurufen.
gcloud compute addresses describe lb-ip --region=us-central1 | grep address:
Regionale Proxy-Subnetze erstellen
Die Proxy-Zuweisung erfolgt auf VPC-Netzwerkebene, nicht auf der Load-Balancer-Ebene. Sie müssen in jeder Region eines virtuellen Netzwerks (VPC), in dem Sie Envoy-basierte Load Balancer verwenden, ein Nur-Proxy-Subnetz erstellen. Wenn Sie mehrere Load-Balancer in derselben Region und demselben VPC-Netzwerk bereitstellen, nutzen sie für das Load-Balancing dasselbe Nur-Proxy-Subnetz.
- Ein Client stellt eine Verbindung zur IP-Adresse und zum Port der Weiterleitungsregel des Load-Balancers her.
- Jeder Proxy überwacht die IP-Adresse und den Port, die in der Weiterleitungsregel des entsprechenden Load-Balancers angegeben sind. Einer der Proxys empfängt und beendet die Netzwerkverbindung des Clients.
- Der Proxy stellt eine Verbindung zur entsprechenden Back-End-VM her, die über die URL-Zuordnung und die Back-End-Dienste des Load-Balancers bestimmt wird.
Nur-Proxy-Subnetze müssen unabhängig davon erstellt werden, ob sich Ihr VPC-Netzwerk im automatischen oder benutzerdefinierten Modus befindet. Ein Nur-Proxy-Subnetz muss mindestens 64 IP-Adressen bereitstellen. Das entspricht einer Präfixlänge von maximal /26. Als Subnetzgröße wird /23 (512 Nur-Proxy-Adressen) empfohlen.
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute networks subnets create proxy-subnet-us-central \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-central1 \
--network=producer-vpc \
--range=172.16.0.0/23
Private Service Connect-NAT-Subnetze erstellen
Erstellen Sie ein oder mehrere dedizierte Subnetze zur Verwendung mit Private Service Connect. Wenn Sie die Google Cloud Console zum Veröffentlichen eines Dienstes verwenden, können Sie die Subnetze dabei erstellen. Erstellen Sie das Subnetz in derselben Region wie den Load-Balancer des Dienstes. Sie können ein reguläres Subnetz nicht in ein Private Service Connect-Subnetz umwandeln.
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute networks subnets create psc-nat-subnet \
--project $projectname \
--network producer-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
Firewallregeln für Ersteller erstellen
Konfigurieren Sie Firewallregeln, um Traffic zwischen dem NAT-Subnetz von Private Service Connect und dem Subnetz „Nur ILB-Proxy“ zuzulassen.
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute --project=$projectname firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24
Erstellen Sie in Cloud Shell die Firewallregel fw-allow-health-check, damit die Google Cloud-Systemdiagnosen den Producer-Dienst (Back-End-Dienst) über TCP-Port 80 erreichen können.
gcloud compute firewall-rules create fw-allow-health-check \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:80
Erstellen Sie eine Firewallregel zum Zulassen von eingehendem Traffic für das Nur-Proxy-Subnetz, damit der Load-Balancer mit Back-End-Instanzen über TCP-Port 80 kommunizieren kann.
gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=172.16.0.0/23 \
--rules=tcp:80
Cloud Router und NAT-Konfiguration
Im Codelab für die Installation von Softwarepaketen wird Cloud NAT verwendet, da die VM-Instanz keine externe IP-Adresse hat.
Erstellen Sie den Cloud Router in Cloud Shell.
gcloud compute routers create cloud-router-for-nat --network producer-vpc --region us-central1
Erstellen Sie das NAT-Gateway in Cloud Shell.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Konfiguration der Instanzgruppe
Im folgenden Abschnitt erstellen Sie die Compute Engine-Instanz und einer nicht verwalteten Instanzgruppe. In späteren Schritten wird die Instanzgruppe als Back-End-Dienst für den Load-Balancer verwendet.
Erstellen Sie in Cloud Shell die regionale Systemdiagnose, die an den Producer-Dienst übergeben wurde.
gcloud compute instances create app-server-1 \
--project=$projectname \
--machine-type=e2-micro \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=gce-subnet \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'Welcome to App-Server-1 !!' | tee /var/www/html/index.html
EOF"
Erstellen Sie in Cloud Shell die nicht verwaltete Instanzgruppe.
gcloud compute instance-groups unmanaged create psc-instance-group --zone=us-central1-a
gcloud compute instance-groups unmanaged set-named-ports psc-instance-group --project=$projectname --zone=us-central1-a --named-ports=http:80
gcloud compute instance-groups unmanaged add-instances psc-instance-group --zone=us-central1-a --instances=app-server-1
Load-Balancer konfigurieren
In den folgenden Schritten konfigurieren Sie den internen HTTP- Load-Balancer , der in einem späteren Schritt als Dienstanhang veröffentlicht wird
Erstellen Sie in Cloud Shell die regionale Systemdiagnose.
gcloud compute health-checks create http http-health-check \
--region=us-central1 \
--use-serving-port
Erstellen Sie in Cloud Shell den Back-End-Dienst.
gcloud compute backend-services create l7-ilb-backend-service \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=http-health-check \
--health-checks-region=us-central1 \
--region=us-central1
Fügen Sie in Cloud Shell dem Back-End-Dienst Back-Ends hinzu.
gcloud compute backend-services add-backend l7-ilb-backend-service \
--balancing-mode=UTILIZATION \
--instance-group=psc-instance-group \
--instance-group-zone=us-central1-a \
--region=us-central1
Erstellen Sie in Cloud Shell die URL-Zuordnung, um eingehende Anfragen an den Back-End-Dienst weiterzuleiten.
gcloud compute url-maps create l7-ilb-map \
--default-service l7-ilb-backend-service \
--region=us-central1
Erstellen Sie den HTTP-Zielproxy.
gcloud compute target-http-proxies create l7-ilb-proxy\
--url-map=l7-ilb-map \
--url-map-region=us-central1 \
--region=us-central1
Erstellen Sie eine Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten. Verwenden Sie zum Erstellen der Weiterleitungsregel nicht das Nur-Proxy-Subnetz.
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=load-balancer-subnet \
--address=lb-ip \
--ports=80 \
--region=us-central1 \
--target-http-proxy=l7-ilb-proxy \
--target-http-proxy-region=us-central1
4. Load-Balancer validieren
Gehen Sie in der Cloud Console zu Netzwerkdienste → Load-Balancing → Load-Balancer. Prüfen Sie die erfolgreiche Systemdiagnose für den Back-End-Dienst
Durch Auswahl von 'l7-ilb-map' wird die Frontend-IP-Adresse ermittelt, die mit der IP-Adresse übereinstimmen sollte, die Sie in einem vorherigen Schritt mit grep erstellt haben. Außerdem wird damit der Backend-Dienst identifiziert.
5. Private Service Connect-Dienstanhang erstellen
Dienstanhang erstellen
Erstellen Sie den Dienstanhang in Cloud Shell. Vergessen Sie nicht, den Punkt am Ende des Domainnamens.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet --domain-names=cosmopup.net.
Optional: Wenn Sie eine freigegebene VPC verwenden, erstellen Sie den Dienstanhang im Dienstprojekt.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/us-central1/subnetworks/psc-nat-subnet --domain-names=cosmopup.net.
Gehen Sie zu Netzwerkdienste → Private Service Connect, um den neu erstellten Dienstanhang anzusehen.
Wenn Sie published-service auswählen, sind weitere Details verfügbar, einschließlich des URI des Dienstanhangs, der vom Nutzer zum Herstellen einer privaten Dienstverbindung verwendet wird. den Domainnamen.
Details zum Dienstanhang:
projects/<Projektname>/regions/us-central1/serviceAttachments/publish-service
6. Nutzereinrichtung
Nutzer-APIs aktivieren
In Cloud führt Shell die folgenden Schritte aus:
gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com
VPC-Netzwerk des Nutzers erstellen
Führen Sie in Cloud Shell die folgenden Schritte aus:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
Nutzersubnetze erstellen
Erstellen Sie in Cloud Shell das Subnetz für die Testinstanz.
gcloud compute networks subnets create db1-subnet --project=$projectname --range=10.20.0.0/28 --network=consumer-vpc --region=us-central1
Erstellen Sie in Cloud Shell ein Subnetz für den Nutzerendpunkt.
gcloud compute networks subnets create consumer-ep-subnet --project=$projectname --range=10.10.0.0/28 --network=consumer-vpc --region=us-central1
Nutzerendpunkt erstellen (Weiterleitungsregel)
Erstellen Sie in Cloud Shell die statische IP-Adresse, die für den Nutzerendpunkt verwendet wird.
gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=consumer-ep-subnet --addresses 10.10.0.10
Wir verwenden den zuvor generierten URI des Dienstanhangs, um den Nutzerendpunkt zu erstellen.
Erstellen Sie in Cloud Shell den Nutzerendpunkt.
gcloud compute forwarding-rules create stargazer --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$projectname/regions/us-central1/serviceAttachments/published-service
7. Verbindung im VPC-Netzwerk des Nutzers prüfen
Prüfen Sie im VPC-Netzwerk des Nutzers, ob eine private Dienstverbindung erfolgreich war. Rufen Sie dazu Netzwerkdienste → Private Service Connect → Verbundene Endpunkte auf. Beachten Sie die bestehende Stargazer-Verbindung und die entsprechende IP-Adresse, die wir zuvor erstellt haben.
Bei Auswahl von „psc-consumer-1“ werden Details einschließlich des URI des Dienstanhangs angegeben
8. Verbindung im VPC-Netzwerk des Erstellers prüfen
Prüfen Sie im VPC-Netzwerk des Erstellers, ob die private Dienstverbindung erfolgreich war. Rufen Sie dazu Netzwerkdienste → Private Service Connect → Veröffentlichter Dienst auf. Beachten Sie, dass in der veröffentlichten Dienstverbindung jetzt 1 Weiterleitungsregel (Verbindungsendpunkt) angegeben ist.
9. Automatische DNS-Konfiguration validieren
Bewerten wir die DNS- und Service Directory-Konfiguration.
Cloud DNS-Konfiguration
Gehen Sie zu Netzwerkdienste → Cloud DNS → Zonen. Die Zone goog-psc-default-us-central und der DNS-Name cosmopup.net. werden automatisch generiert.
DNS- und Service Directory-Konfiguration ansehen
Durch die Auswahl des Zonennamens können Sie sehen, wie Service Directory in Cloud DNS eingebunden ist.
Service Directory-Konfiguration
Gehen Sie zu Netzwerkdienste → Service Directory.
Erinnern Sie sich an den Namen des Verbraucherendpunkts Stargazer? Er ist automatisch in Service Directory programmiert, sodass wir den Endpunkt des Nutzers über den FQDN stargazer.goog-psc-default–us-central1 erreichen können.
10. Nutzerzugriff auf den Producer-Dienst validieren
Im VPC-Netzwerk des Nutzers erstellen wir eine VM, um die Konnektivität zum veröffentlichten Dienst zu testen. Dazu greifen wir auf den Nutzerendpunkt stargazer.cosmopup.net zu.
Erstellen Sie in Cloud Shell die Testinstanz auf dem Nutzer-VPC.
gcloud compute instances create db1 \
--zone=us-central1-a \
--image-family=debian-10 \
--image-project=debian-cloud \
--subnet=db1-subnet \
--no-address
Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, müssen Sie eine Firewallregel erstellen, die:
- Gilt für alle VM-Instanzen, die mit IAP zugänglich sein sollen.
- Lässt eingehenden Traffic aus dem IP-Bereich 35.235.240.0/20 zu. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.
Erstellen Sie in Cloud Shell die IAP-Firewallregel.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
Melden Sie sich mit IAP in Cloud Shell bei der Nutzer-VM an, um die Konnektivität zum Producer-Dienst mit einem curl-Befehl zu prüfen. Versuche es bei einer Zeitüberschreitung noch einmal.
gcloud compute ssh db1 --project=$projectname --zone=us-central1-a --tunnel-through-iap
Führen Sie einen curl-Befehl aus, um die Verbindung zum Producer-Dienst zu validieren. Nach dem validierten Exit der VM, der zur Cloud Shell-Eingabeaufforderung zurückkehrt
Führen Sie in Cloud Shell einen curl-Befehl für Ihre benutzerdefinierte Domain aus, z. B. stargazer.[custom-domain.com]. In der folgenden Ausgabe wird ein curl-Befehl für stargazer.cosmopup.net ausgeführt.
user@db1:~$ curl -v stargazer.cosmopup.net
* Trying 10.10.0.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55d3aa8190f0)
* Connected to stargazer.cosmopup.net (10.10.0.10) port 80 (#0)
> GET / HTTP/1.1
> Host: stargazer.cosmopup.net
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< date: Thu, 22 Dec 2022 00:16:25 GMT
< server: Apache/2.4.38 (Debian)
< last-modified: Wed, 21 Dec 2022 20:26:32 GMT
< etag: "1b-5f05c5e43a083"
< accept-ranges: bytes
< content-length: 27
< content-type: text/html
< via: 1.1 google
<
Welcome to App-Server-1 !!
Beenden Sie die VM und kehren Sie zur Cloud Shell-Eingabeaufforderung zurück, um die Bereinigungsaufgaben zu starten
11. Bereinigen
Löschen Sie in Cloud Shell Codelab-Komponenten.
gcloud compute forwarding-rules delete stargazer --region=us-central1 --quiet
gcloud compute instances delete db1 --zone=us-central1-a --quiet
gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet
gcloud compute networks subnets delete consumer-ep-subnet db1-subnet --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute networks delete consumer-vpc --quiet
gcloud compute service-attachments delete published-service --region=us-central1 --quiet
gcloud compute forwarding-rules delete l7-ilb-forwarding-rule --region=us-central1 --quiet
gcloud compute target-http-proxies delete l7-ilb-proxy --region=us-central1 --quiet
gcloud compute url-maps delete l7-ilb-map --region=us-central1 --quiet
gcloud compute backend-services delete l7-ilb-backend-service --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-instance-group --zone=us-central1-a --quiet
gcloud compute instances delete app-server-1 --zone=us-central1-a --quiet
gcloud compute firewall-rules delete allow-to-ingress-nat-subnet fw-allow-health-check fw-allow-proxy-only-subnet --quiet
gcloud compute addresses delete lb-ip --region=us-central1 --quiet
gcloud compute networks subnets delete gce-subnet load-balancer-subnet psc-nat-subnet proxy-subnet-us-central --region=us-central1 --quiet
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet
gcloud compute networks delete producer-vpc --quiet
12. Glückwunsch
Sie haben nun einen Private Service Connect-Endpunkt mit automatischer DNS-Konfiguration konfiguriert und validiert.
Sie haben die Producer-Infrastruktur erstellt und einen Dienstanhang mit einer Public Domain-Registrierung hinzugefügt. Sie haben gelernt, wie Sie im Nutzer-VPC-Netzwerk einen Nutzerendpunkt erstellen, der die Verbindung zum lokalen Dienst über automatisch generiertes DNS ermöglicht.
Cosmopup findet Codelabs super!!
Was liegt als Nächstes an?
Sehen Sie sich einige dieser Codelabs an...
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten mit GKE verwenden
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten verwenden
- Mit Private Service Connect und einem internen TCP-Proxy-Load-Balancer über ein Hybridnetzwerk eine Verbindung zu lokalen Diensten herstellen
Weitere Informationen und Videos
- Private Service Connect – Übersicht
- Was ist Private Service Connect?
- Unterstützte Load-Balancer-Typen