1. Einführung
Mit Private Service Connect können Dienstersteller Dienste privat von einem VPC-Netzwerk für ein anderes freigeben. Nutzer können über PSC-Endpunkte oder PSC-Back-Ends auf Erstellerdienste zugreifen.
In diesem Codelab liegt der Schwerpunkt auf PSC-Back-Ends. PSC-Back-Ends werden in Verbindung mit Google Cloud-Proxy-Load Balancern (entweder Application oder Network) verwendet. Die Verwendung von PSC-Back-Ends bietet detailliertere Einstellungen auf Seiten der Nutzer, z. B.:
- Verbesserte Beobachtbarkeit und Logging
- Cloud Armor-Integration
- Benutzerdefinierte URLs
- Erweiterte Traffic-Verwaltung
- Benutzerdefinierte TLS-Zertifikate
In diesem Codelab erfahren Sie, wie Sie ein Private Service Connect-Back-End mit dem globalen externen Application Load Balancer erstellen, um privat auf einen Dienstanbieter in einem anderen Netzwerk zuzugreifen.
Lerninhalte
- PSC-Backend erstellen und konfigurieren, das mit dem globalen externen Application Load Balancer verknüpft ist
- Einen von Apache verwalteten Webdienst konfigurieren und über einen Dienstanhang als PSC-Dienst bereitstellen
- SSL-Zertifikate zum Beenden von SSL auf internen und externen Application Load Balancern erstellen
- Öffentliche Cloud DNS-Zone für den Zugriff auf den PSC-Dienst konfigurieren
Voraussetzungen
- Google Cloud-Projekt mit Inhaberberechtigungen
2. Testumgebung
Die von Ihnen erstellte Umgebung besteht aus einer Nutzer-VPC und einer Ersteller-VPC. Im VPC des Produzenten stellen Sie eine verwaltete Instanzgruppe aus einer Instanzvorlage bereit, die einen Open-Source-Apache-Webdienst erstellt. Außerdem stellen Sie eine Test-VM bereit, um die ordnungsgemäße lokale Funktion des Dienstes zu gewährleisten. Sie stellen den Apache-Dienst über einen Dienstanhang als PSC-Produzentdienst bereit.
In der Verbraucher-VPC stellen Sie einen globalen externen Application Load Balancer mit einem PSC-Backenddienst bereit, der auf den Apache-Dienst verweist. Anschließend richten Sie eine öffentliche DNS-Zone ein, um über das öffentliche Internet auf den PSC-Dienst zuzugreifen.
3. Einrichtung und Anforderungen
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie ein Konto erstellen.
- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es ist ein Zeichenstring, der von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach der Festlegung nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. In der Regel spielt es keine Rolle, wie er lautet. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (normalerweise als
PROJECT_ID
gekennzeichnet). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige generieren. Alternativ können Sie Ihr eigenes Konto ausprobieren und prüfen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs ist kostenlos oder kostet nur sehr wenig. Wenn Sie die Ressourcen herunterfahren möchten, um Kosten nach Abschluss dieser Anleitung zu vermeiden, können Sie die von Ihnen erstellten Ressourcen oder das Projekt löschen. Neuen Google Cloud-Nutzern steht das kostenlose Testprogramm mit einem Guthaben von 300$ zur Verfügung.
Cloud Shell starten
Sie können Google Cloud zwar per Fernzugriff von Ihrem Laptop aus nutzen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
4. Hinweis
APIs aktivieren
Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Alle erforderlichen Dienste aktivieren
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. VPC-Einrichtung für Creator
VPC-Netzwerk erstellen
Über Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Subnetze erstellen
In der Producer-VPC werden zwei Subnetze für allgemeine Zwecke bereitgestellt. Das Dienst-Subnetz wird zum Bereitstellen der Apache-Webdienst-VMs sowie der Load Balancer-Weiterleitungsregel verwendet. Das Testclient-Subnetz befindet sich in einer anderen Region und wird zum Bereitstellen einer VM verwendet, um den Apache-Dienst mit aktiviertem globalen Zugriff zu testen.
Über Cloud Shell
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/28 \ --region=$region
Über Cloud Shell
gcloud compute networks subnets create test-client-subnet \ --network=producer-vpc \ --range=10.0.1.0/28 \ --region=us-east4
Außerdem müssen wir ein Nur-Proxy-Subnetz bereitstellen, das mit dem regionalen internen Application Load Balancer verwendet wird.
Über Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \ --network=producer-vpc \ --range=10.100.101.0/24 \ --region=$region \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE
Wenn ein PSC-Dienst bereitgestellt wird, benötigt jeder eindeutige Dienst ein entsprechendes PSC-NAT-Subnetz, das mit dem Dienstanhang verknüpft werden muss. Die Größe dieses Subnetzes sollte je nach Anzahl der erwarteten verbundenen Endpunkte angemessen sein.
Über Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Cloud NAT erstellen
Cloud NAT ist erforderlich, um die richtigen Pakete für unsere Produzentendienste zu installieren.
Über Cloud Shell
gcloud compute routers create central-cr \ --network=producer-vpc \ --region=$region
Über Cloud Shell
gcloud compute routers nats create central-nat \ --router=central-cr \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Richtlinien und Regeln für die Netzwerk-Firewall erstellen
Über Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create \ --firewall-policy producer-vpc-policy \ --network producer-vpc \ --name network-producer-vpc \ --global-firewall-policy
Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:
- Gilt für alle VM-Instanzen, die über 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.
Über Cloud Shell
gcloud compute network-firewall-policies rules create 1000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "SSH with IAP" \ --direction INGRESS \ --src-ip-ranges 35.235.240.0/20 \ --layer4-configs tcp:22 \ --global-firewall-policy
Es sind zwei zusätzliche Firewallregeln erforderlich, um eingehenden Traffic zu den Load Balancer-Back-Ends zuzulassen, der aus dem Nur-Proxy-Subnetz des Load Balancers (2000) stammt, sowie eine Regel, um Load Balancer-Systemdiagnosen auf den Back-End-Instanzen zuzulassen (2001).
Über Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow traffic from load balancer proxy subnet" \ --direction INGRESS \ --src-ip-ranges 10.100.101.0/24 \ --layer4-configs tcp:443 \ --global-firewall-policy gcloud compute network-firewall-policies rules create 2001 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow load balancer health checks" \ --direction INGRESS \ --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \ --layer4-configs tcp:443 \ --global-firewall-policy
6. Apache-Webdienst erstellen
Wir erstellen einen einfachen Apache-Webdienst, der „PSC-Dienst“ anzeigt.
Instanzvorlage erstellen
Über Cloud Shell
gcloud compute instance-templates create apache-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y a2enmod ssl sudo a2ensite default-ssl echo "PSC Service" | \ tee /var/www/html/index.html systemctl restart apache2'
Systemdiagnose für MIG erstellen
Über Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \ --port=443 \ --global
Verwaltete Instanzgruppe erstellen
Über Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \ --region $region \ --size=2 \ --template=apache-service-template \ --health-check=service-mig-healthcheck gcloud compute instance-groups managed set-named-ports psc-service-mig \ --named-ports=https:443 \ --region=$region
7. Selbstsigniertes Zertifikat erstellen
Führen Sie Schritt 1 der Anleitung hier aus, um ein selbst signiertes Zertifikat zu erstellen. Sie können alle Befehle in Cloud Shell ausführen. Kehren Sie zu diesem Abschnitt zurück, wenn Sie Schritt 1 abgeschlossen haben. IHR GEMEINSCHAFTSNAME MUSS MIT beispiel.de KONFIGURIERT WERDEN.
Erstellen Sie eine Zertifikatsressource, die Sie mit Ihrem Load Balancer verknüpfen möchten. Ersetzen Sie die Parameter für das Zertifikat und den privaten Schlüssel durch Ihre spezifischen Dateinamen.
Über Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \ --certificate=<your-producer-certfile.cert> \ --private-key=<your-producer-keyfile.pem> \ --region=$region
8. Regionalen internen Application Load Balancer erstellen
Als Nächstes erstellen wir die Load Balancer-Komponenten für den Dienst. Wir verwenden den regionalen internen Application Load Balancer, Sie können aber jeden internen Google Cloud-Load Balancer verwenden. Folgen Sie der entsprechenden Load Balancer-Dokumentation für die TLS-Verarbeitung.
Erstellen Sie die interne IP-Adresse, die für die Weiterleitungsregel Ihres Load Balancers verwendet wird, und notieren Sie sich die IP-Adresse, die später bei einem Testaufruf des Dienstes verwendet werden soll.
Über Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Erstellen Sie die Systemdiagnose für den Load Balancer.
Über Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \ --region=$region \ --port-name=https
Erstellen Sie den Back-End-Dienst.
Über Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Erstellen Sie die URL-Zuordnung.
Über Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Erstellen Sie die Ziel-HTTPS-Proxys.
Über Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Erstellen Sie die Weiterleitungsregel.
Über Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Test-VM erstellen und Dienst lokal testen
Bevor wir den Dienstanhang erstellen, erstellen wir eine Test-Client-VM in einer anderen Region, um zu prüfen, ob der Load Balancer richtig mit globalem Zugriff und TLS konfiguriert ist.
Über Cloud Shell
gcloud compute instances create vm-client \ --zone=us-east4-a \ --subnet=test-client-subnet \ --no-address
Warten Sie etwa eine Minute, bis die Bereitstellung abgeschlossen ist, und stellen Sie dann eine SSH-Verbindung zur Instanz her.
Über Cloud Shell
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Testen Sie den Apache-Dienst, indem Sie über den Load Balancer eine Verbindung über 443 herstellen. Die interne IP-Adresse ist die, die Sie zuvor reserviert und notiert haben.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
ERWARTETES ERGEBNIS
PSC Service
Beenden Sie die VM.
Über vm-client
exit
10. Dienstanhang erstellen
In diesem Beispiel konfigurieren wir unseren Dienstanhang so, dass nur PSC-Verbindungen von diesem Projekt zugelassen werden. Sie können festlegen, dass ein oder mehrere bestimmte Projekte oder Netzwerke akzeptiert werden, aber nicht beide. Wir haben das maximale Verbindungslimit auf 5 Verbindungen festgelegt. Für jedes Projekt oder Netzwerk muss ein Limit festgelegt sein.
Über Cloud Shell
gcloud compute service-attachments create apache-service-attachment \ --region=$region \ --producer-forwarding-rule=apache-fr \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=$project=5 \ --nat-subnets=psc-nat-subnet
Notieren Sie sich die URI der Dienstanhänge (selfLink), da Sie sie im nächsten Schritt für die PSC-Backendkonfiguration benötigen. Sie können es erhalten, indem Sie in Cloud Shell Folgendes ausführen:
Über Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \ --region $region
Kopieren Sie den URI ab projects.
Beispiel:projects/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Einrichtung eines Nutzer-VPC
VPC-Netzwerk erstellen
Über Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Subnetz erstellen
Auf der Seite des Nutzers ist ein Subnetz erforderlich, in dem die Private Service Connect-Netzwerk-Endpunktgruppe (NEG) bereitgestellt wird.
Über Cloud Shell
gcloud compute networks subnets create consumer-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.0.0.0/28
12. Externe IP-Adresse reservieren und selbst signiertes Zertifikat auf Kundenseite erstellen
Externe IP-Adresse
Erstellen Sie die externe statische IP-Adresse, die später für die Weiterleitungsregel des Load Balancers verwendet wird, und speichern Sie die IP-Adresse in einer Cloud Shell-Variablen.
Über Cloud Shell
gcloud compute addresses create external-psc-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global export externalip=$(gcloud compute addresses describe external-psc-ip \ --format="get(address)" \ --global) echo $externalip
Selbst signiertes Zertifikat für Verbraucher
Führen Sie zum zweiten Mal Schritt 1 der Anleitung hier aus, um ein selbst signiertes Zertifikat zu erstellen. Sie können alle Befehle in Cloud Shell ausführen. Kehren Sie zu diesem Abschnitt zurück, wenn Sie Schritt 1 abgeschlossen haben. Wir verwenden einen öffentlichen Open-Source-Platzhalter-DNS-Dienst namens nip.io, anstatt eine eigene öffentliche DNS-Zone zu haben. Für die öffentliche URL Ihres PSC-Dienstes wird die externe IP-Adresse verwendet, die Sie gerade konfiguriert haben. YOUR COMMON NAME MUST BE CONFIGURED WITH <YOUR-EXTERNAL-IP.nip.io>
Erstellen Sie eine Zertifikatsressource, die Sie mit Ihrem externen Load Balancer verknüpfen möchten. Ersetzen Sie die Parameter für das Zertifikat und den privaten Schlüssel durch Ihre spezifischen Dateinamen.
Über Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \ --certificate=<your-consumer-certfile.cert> \ --private-key=<your-consumer-keyfile.pem> \ --global
13. Load Balancer-Komponenten erstellen
Wir erstellen einen globalen externen Application Load Balancer mit einem PSC-NEG, der auf unsere neu erstellte Dienstverknüpfung als Backenddienst verweist.
Notieren Sie sich den URI des Dienstanhangs, den Sie im letzten Schritt notiert haben. Ersetzen Sie unten psc-target-service durch Ihren URI.
Über Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Erstellen Sie den Back-End-Dienst.
Über Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global gcloud compute backend-services add-backend apache-pscneg-bes \ --network-endpoint-group=apache-psc-neg \ --network-endpoint-group-region=$region \ --global
URL-Zuordnung erstellen
Über Cloud Shell
gcloud compute url-maps create consumer-url-map \ --default-service=apache-pscneg-bes \ --global
Erstellen Sie die Ziel-HTTPS-Proxys.
Über Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \ --url-map=consumer-url-map \ --ssl-certificates=consumer-service-cert
Weiterleitungsregel erstellen
Über Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Öffentliche DNS-Zone erstellen
Über Cloud Shell
gcloud dns managed-zones create "psc-service" \ --dns-name=$externalip.nip.io. \ --description="public dns for psc service" \ --visibility=public
Über Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. PSC-Verbindung des Verbrauchers testen
Warten Sie 7 bis 10 Minuten, bevor Sie mit dem Testen beginnen, damit sich die öffentlichen DNS-Einträge verteilen können.
Über Cloud Shell
curl https://$externalip.nip.io -k
Sie können den Test auch über Ihren Browser durchführen, indem Sie https://<YOUR-EXTERNAL-IP>.nip.io in Ihren Browser oder Ihr Desktop-Terminal eingeben.
ERWARTETES ERGEBNIS
PSC Service
16. Schritte zur Bereinigung
Lab-Komponenten über ein einzelnes Cloud Shell-Terminal löschen
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- PSC-Backend erstellen und mit dem globalen externen Application Load Balancer verknüpfen
- Einen von Apache verwalteten Webdienst konfigurieren und über einen Dienstanhang als PSC-Dienst bereitstellen
- SSL-Zertifikate zum Beenden von SSL auf internen und externen Application Load Balancern erstellen
- Öffentliche Cloud DNS-Zone für den Zugriff auf den PSC-Dienst konfigurieren