1. Übersicht
ASP.NET Core ist ein neues, plattformübergreifendes Open-Source-Framework zum Entwickeln moderner cloudbasierter und mit dem Internet verbundener Anwendungen mithilfe der Programmiersprache C#.
In diesem Lab stellen Sie eine einfache ASP.NET Core-App in der flexiblen App Engine-Umgebung bereit. Dieses Codelab baut auf dem Codelab ASP.NET Core-App mit Google Cloud Shell erstellen und starten auf. Es empfiehlt sich, dieses Lab zuerst zu absolvieren, bevor Sie mit diesem Lab beginnen.
Google App Engine-Anwendungen lassen sich einfach erstellen, pflegen und skalieren, wenn sich Traffic und Datenspeicheranforderungen ändern. Mit App Engine müssen keine Server verwaltet werden. Sie laden einfach Ihre Anwendung hoch und es kann losgehen.
App Engine-Anwendungen werden auf der Basis des eingehenden Traffics automatisch skaliert. Load-Balancing, Mikrodienste, Autorisierung, SQL- und NoSQL-Datenbanken, Memcache, Traffic-Aufteilung, Logging, Suche, Versionsverwaltung, Rollouts und Rollbacks sowie Sicherheitsscans werden in App Engine nativ unterstützt und können individuell angepasst werden.
In den App Engine-Umgebungen – Standardumgebung und flexible Umgebung – wird eine Vielzahl von Programmiersprachen unterstützt, z. B. C#, Java, Python, PHP, Node.js und Go. Beide Umgebungen bieten Nutzern maximale Flexibilität für die Bereitstellung von Anwendungen, wobei jede ihre spezifischen Vorteile hat. Weitere Informationen finden Sie unter App Engine-Umgebung auswählen.
Lerninhalte
- Eine einfache ASP.NET Core-App als Docker-Container verpacken
- Eine einfache ASP.NET Core-App für App Engine bereitstellen
Voraussetzungen
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit der Google Cloud Platform bewerten?
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 Projekt. 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 und den Sie jederzeit aktualisieren können.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als
PROJECT_IDangegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Nachdem das Projekt erstellt wurde, wird es „eingefroren“. - 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 verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie den Bereinigungsanweisungen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.
Cloud Shell starten
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 aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.

Wenn Sie die Cloud Shell zuvor noch nicht gestartet haben, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter. So sieht dieses Fenster aus:

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

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 in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser oder Ihrem Chromebook erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist.
- Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. ASP.NET Core-App in Cloud Shell erstellen
Sie können in der Cloud Shell-Eingabeaufforderung prüfen, ob das dotnet-Befehlszeilentool bereits installiert ist, indem Sie die installierten .NET SDKs auflisten:
dotnet --list-sdks
Erstellen Sie als Nächstes das Grundgerüst für eine neue ASP.NET Core-Web-App mit dem Zielframework netcoreapp3.1:
dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1
Dadurch sollte ein Projekt mit wiederhergestellten Abhängigkeiten erstellt werden, was durch eine Meldung wie die folgende bestätigt wird.
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. ASP.NET Core-App ausführen
Die Anwendung ist fast einsatzbereit. Rufen Sie den App-Ordner auf.
cd HelloWorldAspNetCore
Führen Sie die App zum Schluss aus.
dotnet run --urls=http://localhost:8080
Die Anwendung überwacht nun Port 8080.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
Klicken Sie oben rechts auf die Schaltfläche „Webvorschau“ und wählen Sie „Vorschau auf Port 8080“ aus, um zu prüfen, ob die App ausgeführt wird.

Sie sehen die ASP.NET Core-Standardwebseite:

Wenn Sie bestätigt haben, dass die App ausgeführt wird, drücken Sie Strg + C, um sie zu beenden.
5. ASP.NET Core-App veröffentlichen
Veröffentlichen Sie die Anwendung mithilfe des Befehls dotnet publish, um eine eigenständige DLL zu erhalten.
dotnet publish -c Release
Wenn Sie den Befehl publish ausführen, werden am Ende des Vorgangs einige Nachrichten mit dem Verweis auf die erfolgreiche Veröffentlichung einer DLL angezeigt.
...
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/
6. app.yaml für die flexible App Engine-Umgebung erstellen
In der Datei app.yaml ist beschrieben, wie die App in App Engine, in diesem Fall in der flexiblen Umgebung, bereitgestellt wird.
Rufen Sie zuerst den Ordner publish auf. Das sollte sich im Ordner bin/Release befinden. Der genaue Pfad hängt jedoch von der Version von .NET ab:
cd bin/Release/netcoreapp3.1/publish/
Erstellen Sie im Ordner publish eine app.yaml-Datei:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
Beachten Sie, dass in der Datei app.yaml die Umgebung als flex und die Laufzeit als aspnetcore angegeben sind.
7. In der flexiblen App Engine-Umgebung bereitstellen
Sie können Ihre App jetzt mit gcloud in der flexiblen App Engine-Umgebung bereitstellen. Führen Sie im Verzeichnis publish den folgenden Befehl aus:
gcloud app deploy --version v0
Im Rahmen des Bereitstellungsprozesses werden Sie möglicherweise aufgefordert, eine Region für Ihre Anwendung auszuwählen. Wählen Sie eine Region aus, in der die App ausgeführt werden soll.
Please choose a region for your application. After choosing a region,
you cannot change it. Which region would you like to choose?
[1] europe-west (supports standard and flexible)
[2] us-central (supports standard and flexible)
[3] us-east1 (supports standard and flexible)
[4] asia-northeast1 (supports standard and flexible)
[5] cancel
Dadurch wird ein Image für Ihre Anwendung in der Cloud erstellt, in Google Container Registry gespeichert und in App Engine bereitgestellt. Während des Deployments können Sie sehen, wie das Container-Image erstellt wird:
Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild
Am Ende sollten Sie sehen, dass die App bereitgestellt wurde.
...
Deployed service [default] to [https://<project-id>.appspot.com]
Nachdem Sie die Anwendung bereitgestellt haben,können Sie sie über die URL http://<project-id>.appspot.com in Ihrem Webbrowser aufrufen.
Die ASP.NET Core-Standardwebseite wird in einem neuen Tab angezeigt.

Sie können sich auch das Container-Image ansehen, das für Sie in der Cloud erstellt wurde. Rufen Sie in der Cloud Console „Container Registry“ > „Images“ auf. Im Ordner „appengine“ sollte das Image für Ihre Anwendung angezeigt werden.

8. Neue Dienstversion bereitstellen
Früher oder später sind für die Anwendung, die Sie für die Produktion bereitgestellt haben, Fehlerbehebungen oder zusätzliche Funktionen erforderlich. App Engine unterstützt Sie bei der Bereitstellung einer neuen Version für die Produktion, ohne Ihre Nutzer zu beeinträchtigen.
Ändern wir zuerst die Anwendung. Öffnen Sie den Code-Editor über Cloud Shell.

Rufen Sie Index.cshtml im Ordner Views/Home von HelloWorldAspNetCore auf und aktualisieren Sie die Standardnachricht so:
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!
Speichern Sie die Änderungen und kehren Sie dann zu Cloud Shell zurück. Veröffentlichen Sie die App im Verzeichnis HelloWorldAspNetCore,, um eine eigenständige DLL zu erhalten.
dotnet publish -c Release
Rufen Sie das Verzeichnis "Publish" auf.
cd bin/Release/netcoreapp3.1/publish/
Sie können jetzt eine neue Version Ihrer App bereitstellen, in diesem Fall v1.
gcloud app deploy --version v1
Nachdem Sie die App bereitgestellt haben, können Sie in der Google Cloud Console im Bereich „App Engine-Versionen“ nachsehen, wie die neue App-Version den gesamten Traffic mit der neuen Nachricht weiterleitet.

9. Dashboards und Trafficaufteilung
Im App Engine-Dashboard finden Sie eine Reihe von Dashboards für Ihre Anwendung, z. B. für Latenz und CPU. Sehen Sie sich diese selbst an.

Im Bereich „Versionen“ sehen Sie die bereitgestellten Versionen Ihrer App. Im Bereich „Trafficaufteilung“ können Sie den Traffic zwischen verschiedenen Versionen aufteilen. So teilen Sie den Traffic auf zwei Versionen auf:

10. Glückwunsch!
Cleanup
Es ist an der Zeit, die App herunterzufahren, um Kosten zu sparen und nicht mehr benötigte Ressourcen für andere freizugeben.
Rufen Sie den Bereich „Versionen“ von App Engine auf.

Wählen Sie die Version aus und beenden Sie sie.

Sobald die Version beendet wurde, werden die zugrunde liegenden Instanzen gelöscht und die Anzahl der Instanzen sollte auf null sinken.

Behandelte Themen
Geschafft! Sie haben eine ASP.NET Core-App erstellt, sie als Docker-Container verpackt und in der flexiblen Google App Engine-Umgebung bereitgestellt.
- Eine einfache ASP.NET Core-App als Docker-Container verpacken
- Eine einfache ASP.NET Core-App für App Engine bereitstellen
Nächste Schritte
- Windows auf der Google Cloud Platform
- .NET auf der Google Cloud Platform
- SQL Server auf der Google Cloud Platform
- Cloud Tools for Visual Studio
- Cloud Tools for PowerShell
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.