1. Einführung

Cloud Run ist eine verwaltete Plattform, mit der Sie zustandslose Container ausführen können, die über HTTP-Anfragen aufgerufen werden. Cloud Run arbeitet serverlos und benötigt keine Infrastrukturverwaltung. So können Sie sich ganz auf das Programmieren von Anwendungen konzentrieren.
Mit der auf Knative basierenden Plattform können Sie Container wahlweise vollständig verwaltet mit Cloud Run oder in Ihrem Google Kubernetes Engine-Cluster mit Cloud Run in GKE ausführen.
Ziel dieses Codelabs ist es, ein Container-Image zu erstellen und in Cloud Run bereitzustellen.
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- 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 eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er 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
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Google Cloud Shell
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell ist eine Umgebung für Online-Entwicklung und ‑Betrieb, auf die Sie mit Ihrem Browser von jedem Standort aus zugreifen können. Sie können Ihre Ressourcen mit dem Online-Terminal verwalten, auf dem Dienstprogramme wie unter anderem das gcloud-Befehlszeilentool und kubectl vorinstalliert sind. Mit dem Cloud Shell Editor können Sie außerdem cloudbasierte Anwendungen entwickeln, erstellen, debuggen und bereitstellen.
Auf dieser virtuellen Maschine sind alle Entwicklungstools installiert, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft direkt in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Für dieses Codelab benötigen Sie also nur einen Browser (es funktioniert auch auf einem Chromebook).
- Klicken Sie zum Aktivieren von Cloud Shell in der Cloud Console einfach auf Cloud Shell aktivieren :

Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall auf Weiter.

Die Bereitstellung der Umgebung sollte nur wenige Sekunden dauern :

Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind :
gcloud auth list
Befehlsausgabe
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
Das Projekt sollte auch bereits auf Ihre PROJECT_ID festgelegt sein (vorausgesetzt, Sie haben ein Projekt in der Webkonsole ausgewählt) :
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Wenn das Projekt aus irgendeinem Grund nicht festgelegt ist, führen Sie einfach den folgenden Befehl aus:
gcloud config set project <PROJECT_ID>
Suchst du nach deinem PROJECT_ID? Sehen Sie sich das Drop-down-Menü oben in der Cloud Console an :

Sie können sich die Projektdetails auch im Bereich „Einstellungen und Dienstprogramme“ ansehen:

In Cloud Shell werden auch einige Umgebungsvariablen standardmäßig festgelegt, die für zukünftige Befehle nützlich sein können.
echo $GOOGLE_CLOUD_PROJECT
Befehlsausgabe
<PROJECT_ID>
- Schließlich können Sie die Standardzone festlegen :
gcloud config set compute/zone us-central1-f
Sie können verschiedene Zonen auswählen. Weitere Informationen finden Sie unter Regionen und Zonen.
Aktivieren Sie die Cloud Run API.
Aktivieren Sie in Cloud Shell die Cloud Run API:
gcloud services enable run.googleapis.com
Wenn die Aktivierung erfolgreich war, erhalten Sie eine Meldung, die ungefähr so aussieht :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Beispielanwendung schreiben
Wir erstellen eine einfache ASP.NET C#-Anwendung, die auf HTTP-Anfragen reagiert.
Verwenden Sie zum Erstellen der Anwendung das dotnet-Befehlszeilentool in Cloud Shell:
dotnet new web -o helloworld-csharp
Wechseln Sie in das Verzeichnis helloworld-csharp:
cd helloworld-csharp
Aktualisieren Sie dann Program.cs so, dass es dem Folgenden entspricht:
var builder = WebApplication.CreateBuilder(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var url = $"http://0.0.0.0:{port}";
builder.WebHost.UseUrls(url);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable PORT definierten Port überwacht und mit Hello World antwortet.
Sie können die App testen, indem Sie sie lokal in Cloud Shell ausführen. Sie sollten sehen, dass der Dienst Port 8080 überwacht:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. In Cloud Run bereitstellen
Stellen Sie Ihre Anwendung mit dem folgenden Befehl in Cloud Run bereit:
gcloud run deploy hello-world \
--allow-unauthenticated \
--region us-central1 \
--source .
hello-worldist der Name des Diensts.- Das Flag
allow-unauthenticatedstellt den Dienst als öffentlich verfügbaren Dienst ohne Authentifizierungsanforderungen bereit. us-central1ist die Region, in der die App bereitgestellt wird.- Das Flag
sourcebestimmt den Speicherort der zu erstellenden Quelle. Cloud Run verwendet Buildpacks, um automatisch einen Container aus dem Quellcode zu erstellen.
Warten Sie einige Minuten, bis die Bereitstellung abgeschlossen ist. Bei Erfolg wird in der Befehlszeile die Dienst-URL angezeigt :
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
Sie können jetzt den bereitgestellten Container aufrufen. Dazu öffnen Sie die Dienst-URL in einem Webbrowser :

Glückwunsch! Sie haben eine in einem Container-Image verpackte Anwendung in Cloud Run bereitgestellt. Cloud Run skaliert das Container-Image automatisch horizontal, damit die empfangenen Anfragen bearbeitet werden können, und skaliert es wieder herunter, wenn der Bedarf sinkt. Es fallen nur Kosten für die CPU-, Arbeitsspeicher- und Netzwerkressourcen an, die während der Anfrageverarbeitung verbraucht werden.
5. Zeit zum Aufräumen
Um Gebühren zu vermeiden, können Sie entweder Ihr GCP-Projekt löschen und so die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beenden oder einfach den Cloud Run-Dienst löschen:
gcloud run services delete helloworld
6. Nächste Schritte
Ein guter nächster Schritt wäre die Bereitstellung in Cloud Run in GKE.
Lesen Sie, wie Sie einen zustandslosen, für Cloud Run geeigneten HTTP-Container aus einer Codequelle erstellen und in Container Registry hochladen: