In dieser Anleitung erfahren Sie, wie Sie einen internen HTTP-Endpunkt in einem VPC-Netzwerk (Virtual Private Cloud) erstellen, das Pub/Sub-Nachrichtenereignisse mithilfe von Eventarc empfängt. Weitere Informationen zu diesem Ereignisziel finden Sie unter Ereignisse an einen internen HTTP-Endpunkt in einem VPC-Netzwerk weiterleiten.
Sie können die folgenden Befehle über das Google Cloud CLI entweder in Ihrem Terminal oder in Cloud Shell ausführen.
Erstellen Sie ein VPC-Netzwerk im benutzerdefinierten Modus.
Ein VPC-Netzwerk ist eine virtuelle Version eines physischen Netzwerks, die innerhalb des Produktionsnetzwerks von Google implementiert wurde. Sie ermöglicht eine Verbindung für Ihre Compute Engine-VM-Instanzen.
Wenn ein VPC-Netzwerk im benutzerdefinierten Modus erstellt wird, werden keine Subnetze automatisch erstellt. Diese Art von Netzwerk bietet Ihnen vollständige Kontrolle über die Subnetze und IP-Bereiche.
gcloud compute networks create NETWORK_NAME \ --subnet-mode=custom \ --bgp-routing-mode=regional \ --mtu=1460
Ersetzen Sie NETWORK_NAME
durch einen Namen für das VPC-Netzwerk.
Wichtige Hinweise:
- Jedes neu erstellte Netzwerk muss einen Namen haben, der innerhalb desselben Projekts nur einmal vorkommt.
- Der Routingmodus
Border Gateway Protocol (BGP) steuert das Verhalten von Cloud Routern im Netzwerk und kann entweder
global
oderregional
sein. Der Standardwert istregional
. - Die maximale Übertragungseinheit (MTU) ist die größte Paketgröße des Netzwerks.
MTU kann auf einen beliebigen Wert zwischen
1300
und8896
gesetzt werden. Der Standardwert ist1460
. Bevor Sie die MTU auf einen höheren Wert als1460
setzen, lesen Sie die Informationen unter Maximale Übertragungseinheit.
Weitere Informationen finden Sie unter VPC-Netzwerke erstellen und verwalten.
Nur-IPv4-Subnetz erstellen
Ein Netzwerk kann erst verwendet werden, wenn es mindestens ein Subnetz hat.
Legen Sie einen Namen, eine Region und mindestens einen primären IPv4-Adressbereich gemäß den Subnetzregeln fest, wenn Sie ein Subnetz erstellen. Beachten Sie, dass Sie keine Instanzen in einer Region erstellen können, für die kein Subnetz definiert ist.
gcloud compute networks subnets create SUBNET_NAME \ --region=$REGION \ --network=NETWORK_NAME \ --range=10.10.10.0/24
Geben Sie für SUBNET_NAME
einen Namen für das neue Subnetz an.
Weitere Informationen finden Sie unter Subnetze.
VPC-Firewallregeln erstellen
Mit Firewallregeln können Sie den Traffic zwischen Ressourcen in einem VPC-Netzwerk auf Grundlage der Portnummer, des Tags oder des Protokolls zulassen oder ablehnen.
VPC-Firewallregeln werden auf Netzwerkebene definiert und gelten nur für das Netzwerk, in dem sie erstellt werden. Der Name für jede Regel muss jedoch für das Projekt eindeutig sein.
Erstellen Sie eine Firewallregel für Ihr VPC-Netzwerk, die eingehenden Traffic von jeder IPv4-Adresse (
0.0.0.0/0
) zu jeder Instanz im Netzwerk über Port 22 zulässt. Diese Regel ist für die Ereignisübermittlung nicht erforderlich. Erstellen Sie jedoch für diese Anleitung die Regel, damit Sie über SSH eine Verbindung zur VM herstellen können und die Zustellung des Ereignisses bestätigen:gcloud compute firewall-rules create RULE_NAME_ONE \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --priority=65534 \ --action=ALLOW \ --source-ranges=0.0.0.0/0 \ --rules=tcp:22
Erstellen Sie eine Firewallregel für Ihr VPC-Netzwerk, die eingehenden Traffic von einem bestimmten IP-Adressbereich zu einer beliebigen Instanz im Netzwerk über Port 80 zulässt, da Sie auf Ihrer VM einen Webserver bereitstellen, der Port 80 überwacht:
gcloud compute firewall-rules create RULE_NAME_TWO \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --priority=1000 \ --action=ALLOW \ --source-ranges=10.10.10.0/24 \ --rules=tcp:80
Ersetzen Sie
RULE_NAME_ONE
undRULE_NAME_TWO
durch eindeutige Namen für Ihre Firewallregeln.Die Verwendung von
--source-ranges
ist optional und gibt eine Liste von IP-Adressblöcken an, die eingehende Verbindungen, die der Firewallregel entsprechen, mit den Instanzen im Netzwerk durchführen dürfen. In diesem Fall entspricht der Bereich dem Bereich, der in dem zuvor erstellten Subnetz verwendet wird.Wir empfehlen, das Flag zu verwenden, um Ihre Firewallregel speziell auf Eventarc-Traffic anzuwenden. Wenn weder
--source-ranges
noch--source-tags
angegeben ist, ist--source-ranges
standardmäßig0.0.0.0/0
. Das bedeutet, dass die Regel für alle eingehenden IPv4-Verbindungen von innerhalb oder außerhalb des netzwerks gilt.
Weitere Informationen finden Sie unter VPC-Firewallregeln verwenden.
Netzwerkanhang erstellen
Ein Netzwerkanhang ist eine Ressource, mit der ein Produzenten-VPC-Netzwerk über eine Private Service Connect-Schnittstelle Verbindungen zu einem Nutzer-VPC-Netzwerk initiieren kann.
Eventarc verwendet zum Veröffentlichen von Ereignissen den Netzwerkanhang, um eine Verbindung zum internen HTTP-Endpunkt herzustellen, der in einem VPC-Netzwerk gehostet wird.
Sie können einen Netzwerkanhang erstellen, der automatisch Verbindungen von jeder Private Service Connect-Schnittstelle akzeptiert, die auf den Netzwerkanhang verweist. Erstellen Sie den Netzwerkanhang im selben Netzwerk und in derselben Region wie der HTTP-Zieldienst.
gcloud compute network-attachments create ATTACHMENT_NAME \ --region=$REGION \ --subnets=SUBNET_NAME \ --connection-preference=ACCEPT_AUTOMATIC
Ersetzen Sie ATTACHMENT_NAME
durch einen Namen für den Netzwerkanhang.
Weitere Informationen finden Sie unter Netzwerkanhänge.
VM-Instanz in einem bestimmten Subnetz erstellen
Eine Compute Engine-VM-Instanz ist eine virtuelle Maschine, die in der Infrastruktur von Google gehostet wird. Die Begriffe Compute Engine-Instanz, VM-Instanz und VM werden synonym verwendet. VM-Instanzen umfassen Google Kubernetes Engine-Cluster (GKE), Instanzen der flexiblen App Engine-Umgebung und andere Google Cloud Produkte, die auf Compute Engine-VMs basieren.
Erstellen Sie eine Compute Engine-VM-Instanz im VPC-Netzwerk, für das Sie einen Ereignisempfängerdienst bereitstellen können.
gcloud compute instances create INSTANCE_NAME \ --zone=$ZONE \ --machine-type=e2-medium \ --subnet=SUBNET_NAME
Ersetzen Sie INSTANCE_NAME
durch einen Namen für die VM.
Weitere Informationen finden Sie unter VM-Instanz erstellen und starten.
Ereignisempfänger auf der VM bereitstellen
Stellen Sie einen Webserver auf Ihrer VM bereit, der Port 80 überwacht und Ereignisse empfängt und protokolliert.
Stellen Sie mithilfe der SSH-Schaltfläche in der Google Cloud Console eine SSH-Verbindung zu Ihrer VM-Instanz her, um eine Verbindung zur VM herzustellen.
Nachdem eine Verbindung zum SSH-Server hergestellt wurde, verwenden Sie das Terminal "SSH im Browser", um Befehle auf der VM-Instanz auszuführen.
Erstellen Sie im "SSH im Browser"-Terminal eine Textdatei mit dem Dateinamen
server.py
, die den folgenden Python-Code enthält:Starten Sie den Server und führen Sie den Server für die verbleibenden Schritte in dieser Anleitung aus:
sudo python3 server.py
Eventarc-Trigger erstellen
Sie erstellen einen Eventarc-Trigger, der ein neues Pub/Sub-Thema erstellt und Ereignisse an den auf der VM bereitgestellten Ereignisempfänger weiterleitet, wenn eine Nachricht im Pub/Sub-Thema veröffentlicht wird.
Nachdem Sie die Compute Engine API aktiviert haben, wird als Standarddienstkonto das Compute Engine-Standarddienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com
) verwendet. Zu Testzwecken verwendet der Trigger das Standarddienstkonto für seine Identität.
gcloud eventarc triggers create TRIGGER_NAME \ --location=$REGION \ --destination-http-endpoint-uri=http://INSTANCE_NAME.$ZONE.c.PROJECT_ID.internal \ --network-attachment="projects/PROJECT_ID/regions/$REGION/networkAttachments/ATTACHMENT_NAME" \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ersetzen Sie PROJECT_NUMBER
durch die Google CloudProjektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud -Konsole oder durch Ausführen des folgenden Befehls:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Weitere Informationen zum Konfigurieren des Triggers finden Sie unter Ereignisse an einen internen HTTP-Endpunkt in einem VPC-Netzwerk weiterleiten.
Generieren Sie ein Pub/Sub-Thema und rufen Sie es auf.
Sie können ein Ereignis generieren, indem Sie eine Nachricht in einem Pub/Sub-Thema veröffentlichen.
Suchen Sie das Pub/Sub-Thema und legen Sie es als Umgebungsvariable fest:
export MY_TOPIC=$(gcloud eventarc triggers describe TRIGGER_NAME \ --location=$REGION \ --format='value(transport.pubsub.topic)')
Senden Sie eine Nachricht an das Pub/Sub-Thema, um ein Ereignis zu generieren:
gcloud pubsub topics publish $MY_TOPIC --message "Hello World"
Der Eventarc-Trigger leitet das Ereignis an den internen HTTP-Endpunkt in Ihrem VPC-Netzwerk weiter. Im SSH-Terminal im Browser wird der Text des Ereignisses ausgegeben. Er sollte in etwa so aussehen:
Body: { "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "8795720366614192", "publishTime": "2023-08-26T13:09:48Z" } } 10.10.10.3 - - [26/Aug/2023 13:09:49] "POST / HTTP/1.1" 200 -
Beachten Sie, dass wenn Sie den
data
-Wert vonSGVsbG8gV29ybGQ=
aus seinem Base64-Format decodieren, "Hello World" zurückgegeben wird.
Sie haben einen Ereignisempfängerdienst an einem internen HTTP-Endpunkt in einem VPC-Netzwerk bereitgestellt, einen Eventarc-Trigger erstellt sowie ein Ereignis über Pub/Sub generiert und bestätigt, dass das Ereignis wie erwartet vom Trigger zum Zielendpunkt weitergeleitet wurde.