In dieser Anleitung erfahren Sie, wie Sie einen Cloud Run for Anthos-Dienst über ein Pub/Sub-Push-Abo schreiben, bereitstellen und aufrufen.
Lernziele
- Dienst für Cloud Run for Anthos schreiben, erstellen und bereitstellen
- Eine Nachricht in einem Pub/Sub-Thema veröffentlichen, um den Dienst aufzurufen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweise
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- Cloud Run for Anthos API aktivieren
- gcloud CLI installieren und initialisieren
- Installieren Sie die Komponente
kubectl
:gcloud components install kubectl
- Aktualisieren Sie die Komponenten:
gcloud components update
- Wenn Sie Cloud Run for Anthos verwenden, erstellen Sie mithilfe der Anleitung unter Cloud Run for Anthos einrichten einen neuen Cluster.
gcloud-Standardeinstellungen einrichten
So konfigurieren Sie gcloud mit Standardeinstellungen für Ihren Cloud Run for Anthos-Dienst:
Legen Sie ein Standardprojekt fest:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch den Namen des Projekts, das Sie für diese Anleitung verwenden.
Konfigurieren Sie gcloud für Ihren Cluster:
gcloud config set run/platform gke gcloud config set run/cluster CLUSTER-NAME gcloud config set run/cluster_location REGION
Ersetzen Sie:
- CLUSTER-NAME durch den Namen, den Sie für den Cluster verwendet haben, und
- REGION durch den unterstützten Clusterstandort Ihrer Wahl.
Pub/Sub-Thema erstellen
Der Beispieldienst wird durch Nachrichten ausgelöst, die in einem Pub/Sub-Thema veröffentlicht werden. Daher müssen Sie in Pub/Sub ein Thema erstellen.
Verwenden Sie den folgenden Befehl, um ein neues Pub/Sub-Thema zu erstellen:
gcloud pubsub topics create myRunTopic
Sie können myRunTopic verwenden oder durch einen Themennamen ersetzen, der in Ihrem Google Cloud-Projekt nur einmal vorkommt.
Codebeispiel abrufen
So rufen Sie das gewünschte Codebeispiel ab:
Klonen Sie das Repository der Beispiel-App auf Ihren lokalen Computer:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Beispielcode für Cloud Run for Anthos enthält:
Node.js
cd nodejs-docs-samples/run/pubsub/
Python
cd python-docs-samples/run/pubsub/
Go
cd golang-samples/run/pubsub/
Java
cd java-docs-samples/run/pubsub/
Codebeispiel
Der Code dieser Anleitung besteht aus folgenden Elementen:
Einem Server, der eingehende Anfragen verarbeitet.
Node.js
Für einen einfacheren Test des Dienstes Node.js ist die Serverkonfiguration vom Serverstart getrennt.Der Node.js-Webserver wird in
Der Webserver wird inapp.js
eingerichtet.index.js
gestartet:Python
Go
Java
Ein Handler, der die Pub/Sub-Nachricht verarbeitet und eine Begrüßung protokolliert.
Node.js
Python
Go
Java
Sie müssen den Dienst so programmieren, dass ein genauer HTTP-Antwortcode zurückgegeben wird. Erfolgscodes wie HTTP
200
oder204
bestätigen die vollständige Verarbeitung der Pub/Sub-Nachricht. Fehlercodes wie HTTP400
oder500
zeigen an, dass der Versand der Nachricht noch einmal versucht wird. Weitere Informationen finden Sie unter Nachrichten mit Push empfangen.Einem
Dockerfile
, das die Betriebsumgebung für den Dienst definiert. Der Inhalt desDockerfile
variiert je nach Sprache.Node.js
Python
Go
Java
In diesem Beispiel wird Jib verwendet, um Docker-Images mit gängigen Java-Tools zu erstellen. Jib optimiert Container-Builds, ohne dass ein Dockerfile erforderlich ist oder Docker installiert sein muss. Weitere Informationen zum Erstellen von Java-Containern mit Jib
Weitere Informationen dazu, wie Sie den Ursprung von Cloud Pub/Sub-Anfragen authentifizieren können, finden Sie unten im Abschnitt In Pub/Sub integrieren.
Code versenden
Das Versenden von Code erfolgt in drei Schritten: ein Container-Image mit Cloud Build erstellen, in die Container Registry hochladen und in Cloud Run for Anthos bereitstellen.
So versenden Sie den Code:
Erstellen Sie einen Container und veröffentlichen Sie ihn in Container Registry.
Node.js
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Python
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Go
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Java
mvn compile jib:build -Dimage=gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg sollte die Nachricht „BUILD SUCCESS“ angezeigt werden. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Stellen Sie die Anwendung mit dem folgenden Befehl bereit:
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID.
pubsub
ist der Containername undpubsub-tutorial
der Name des Dienstes. Das Container-Image wird für den Dienst und den Cluster bereitgestellt, den Sie zuvor unter gcloud-Standardeinstellungen einrichten konfiguriert haben.Warten Sie, bis die Bereitstellung abgeschlossen ist. Dies kann ungefähr eine halbe Minute dauern. Bei Erfolg wird in der Befehlszeile die Dienst-URL angezeigt. Diese URL wird zum Konfigurieren eines Pub/Sub-Abos verwendet.
Wenn Sie eine Codeaktualisierung für den Dienst bereitstellen möchten, wiederholen Sie die vorherigen Schritte. Bei jeder Bereitstellung für einen Dienst wird eine neue Version erstellt und der Traffic wird automatisch verarbeitet, sobald der Dienst bereit ist.
In Pub/Sub integrieren
Nach der Bereitstellung des Cloud Run for Anthos-Diensts konfigurieren wir Pub/Sub dafür, Push-Nachrichten an den Dienst zu senden.
So integrieren Sie den Dienst in Pub/Sub:
Aktivieren Sie Pub/Sub, um Authentifizierungstokens in Ihrem Projekt zu erstellen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Ersetzen Sie
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID.
- PROJECT-NUMBER durch Ihre Google Cloud-Projektnummer.
Erstellen oder wählen Sie ein Dienstkonto, das die Pub/Sub-Abo-Identität darstellen soll.
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run for Anthos Pub/Sub Invoker"
Sie können
cloud-run-pubsub-invoker
verwenden oder durch einen Namen ersetzen, der in Ihrem Google Cloud-Projekt nur einmal vorkommt.Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto:
Aktivieren Sie Auto-TLS und HTTPS für Ihren Cluster und fügen Sie Ihrem Dienst eine Domainzuordnung hinzu.
Fügen Sie Code hinzu, um das Authentifizierungstoken zu validieren, das an Pub/Sub-Nachrichten angehängt ist. Beispielcode finden Sie unter Authentifizierung und Autorisierung durch den Push-Endpunkt.
Mit der Authentifizierung wird geprüft, ob das Token gültig ist und mit dem erwarteten Dienstkonto verknüpft ist. Im Gegensatz zu Cloud Run hat Cloud Run for Anthos keine integrierte Autorisierungsprüfung, die feststellt, ob das Token gültig ist oder ob das Dienstkonto berechtigt ist, den Cloud Run for Anthos-Dienst aufzurufen.
Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto:
gcloud pubsub subscriptions create myRunSubscription --topic myRunTopic \ --push-endpoint=SERVICE-URL/ \ --push-auth-service-account=cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie
- myRunTopic durch das zuvor erstellte Thema.
- SERVICE-URL durch Ihre benutzerdefinierte Dienst-URL.
Geben Sie
https
als Protokoll an. - PROJECT_ID durch Ihre Google Cloud-Projekt-ID.
Das Flag
--push-auth-service-account
aktiviert die Pub/Sub-Push-Funktion für die Authentifizierung und Autorisierung.
Ihr Dienst ist jetzt vollständig in Pub/Sub integriert.
Testen
So testen Sie die durchgängige Lösung:
Senden Sie eine Pub/Sub-Nachricht an das Thema:
gcloud pubsub topics publish myRunTopic --message "Runner"
Anstatt über die in dieser Anleitung beschriebene Befehlszeile können Sie Nachrichten auch programmatisch veröffentlichen. Weitere Informationen finden Sie unter Nachrichten veröffentlichen.
Rufen Sie die Dienstlogs auf:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run for Anthos” auf:
Klicken Sie auf den Dienst
pubsub-tutorial
.Wählen Sie den Tab Logs aus.
Es kann einige Momente dauern, bis Logs angezeigt werden. Falls sie nicht sofort angezeigt werden, warten Sie kurz ab und sehen Sie dann noch einmal nach.
Suchen Sie nach der Nachricht „Hello Runner!“.
Bereinigen
Wenn Sie einen Anwendungsfall durchgehen möchten, in dem die Verwendung von Pub/Sub mit Cloud Run for Anthos ausführlicher beschrieben wird, überspringen Sie vorerst die Bereinigung und fahren mit der Anleitung Bildverarbeitung fort.
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Anleitungsressourcen löschen
Löschen Sie den Cloud Run for Anthos-Dienst, den Sie in dieser Anleitung bereitgestellt haben:
gcloud run services delete SERVICE-NAME
Dabei ist SERVICE-NAME der von Ihnen ausgewählte Dienstname.
Sie können Cloud Run for Anthos-Dienste auch über die Google Cloud Console löschen:
Entfernen Sie die gcloud-Standardkonfigurationen, die Sie während der Einrichtung der Anleitung hinzugefügt haben.
gcloud config unset run/platform gcloud config unset run/cluster gcloud config unset run/cluster_location
Entfernen Sie die Projektkonfiguration:
gcloud config unset project
Löschen Sie sonstige Google Cloud-Ressourcen, die in dieser Anleitung erstellt wurden:
- Löschen Sie das Pub/Sub-Thema
myRunTopic
. - Löschen Sie das Pub/Sub-Abo
myRunSubscription
. - Löschen Sie das Container-Image mit dem Namen
gcr.io/PROJECT_ID/pubsub
aus Container Registry. - Löschen Sie das Aufrufer-Dienstkonto
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
. - Wenn Sie einen Cluster für diese Anleitung erstellt haben, löschen Sie den Cluster.
- Löschen Sie das Pub/Sub-Thema
Nächste Schritte
- Erweitern Sie den in dieser Anleitung bereitgestellten Beispieldienst durch Hinzufügen der Funktionalität zur Image-Verarbeitung, mit der in Cloud Storage hochgeladene Images geändert werden.
- Erfahren Sie mehr über Themen in der Pub/Sub-Architektur und wie Sie Themen verwalten.
- Erfahren Sie mehr über Pub/Sub-Abos unter Abos verwalten.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center