1. Przegląd
ASP.NET Core to nowa platforma typu open source i na wielu platformach, która umożliwia tworzenie nowoczesnych aplikacji działających w chmurze i połączonych z internetem przy użyciu języka programowania C#.
W tym module wdrożysz prostą aplikację ASP.NET Core w elastycznym środowisku App Engine. To ćwiczenie jest kontynuacją ćwiczenia Tworzenie i uruchamianie aplikacji ASP.NET Core za pomocą Google Cloud Shell. Zanim rozpoczniesz ten moduł, możesz najpierw wykonać tamten.
Aplikacje Google App Engine można łatwo tworzyć, utrzymywać i skalować w miarę zmian w ruchu i potrzebach związanych z przechowywaniem danych. W App Engine nie musisz zarządzać serwerami. Wystarczy przesłać aplikację, aby była gotowa do użycia.
Aplikacje App Engine automatycznie skalują się na podstawie ruchu przychodzącego. App Engine natywnie obsługuje równoważenie obciążenia, mikrousługi, autoryzację, bazy danych SQL i NoSQL, Memcache, dzielenie ruchu, rejestrowanie, wyszukiwanie, obsługę wersji, wdrażanie i wycofywanie zmian oraz skanowanie pod kątem bezpieczeństwa. Wszystkie te funkcje można w dużym stopniu dostosowywać.
Środowiska App Engine, czyli środowisko standardowe i środowisko elastyczne, obsługują wiele języków programowania, w tym C#, Java, Python, PHP, Node.js, Go i inne. Dzięki tym 2 środowiskom użytkownicy mają maksymalną elastyczność w zakresie działania aplikacji, ponieważ każde z nich ma określone zalety. Więcej informacji znajdziesz w artykule Wybór środowiska App Engine.
Czego się nauczysz
- Jak spakować prostą aplikację ASP.NET Core jako kontener Dockera.
- Jak wdrożyć prostą aplikację ASP.NET Core w App Engine.
Czego potrzebujesz
Jak zamierzasz wykorzystać ten samouczek?
Jak oceniasz korzystanie z Google Cloud Platform?
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail lub Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa dla uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz go w dowolnym momencie zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości przewodników programistycznych musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”. - Istnieje też trzecia wartość, czyli numer projektu, którego używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczenia opłat po zakończeniu tego samouczka, postępuj zgodnie z instrukcjami „czyszczenia” na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchom Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni (poniżej linii podziału) z opisem tego środowiska. W takim przypadku kliknij Dalej, a ten ekran nie będzie się już wyświetlać. Ten wyświetlany jednorazowo ekran wygląda tak:

Uzyskanie dostępu do środowiska Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Większość zadań w tym laboratorium, a być może wszystkie, możesz wykonać w przeglądarce lub na Chromebooku.
Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu.
- Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list
Wynik polecenia
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli nie, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Wynik polecenia
Updated property [core/project].
3. Tworzenie aplikacji ASP.NET Core w Cloud Shell
W wierszu poleceń Cloud Shell możesz sprawdzić, czy narzędzie wiersza poleceń dotnet jest już zainstalowane, wyświetlając listę zainstalowanych pakietów SDK .NET:
dotnet --list-sdks
Następnie utwórz nową szkieletową aplikację internetową ASP.NET Core z platformą docelową netcoreapp3.1:
dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1
Spowoduje to utworzenie projektu i przywrócenie zależności. Wyświetli się komunikat podobny do tego poniżej.
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. Uruchamianie aplikacji ASP.NET Core
Już niedługo będzie można uruchomić aplikację. Otwórz folder aplikacji.
cd HelloWorldAspNetCore
Na koniec uruchom aplikację.
dotnet run --urls=http://localhost:8080
Aplikacja zacznie nasłuchiwać na porcie 8080.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
Aby sprawdzić, czy aplikacja działa, kliknij przycisk podglądu w przeglądarce w prawym górnym rogu i wybierz „Podejrzyj na porcie 8080”.

Zobaczysz domyślną stronę ASP.NET Core:

Gdy sprawdzisz, czy aplikacja działa, naciśnij Ctrl+C, aby ją wyłączyć.
5. Publikowanie aplikacji ASP.NET Core
Teraz opublikuj aplikację, aby uzyskać samodzielną bibliotekę DLL, używając polecenia dotnet publish.
dotnet publish -c Release
Po uruchomieniu polecenia publish wyświetli się kilka komunikatów, a na końcu procesu informacja o pomyślnym opublikowaniu biblioteki DLL.
...
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. Tworzenie pliku app.yaml dla elastycznego środowiska App Engine
Plik app.yaml opisuje sposób wdrażania aplikacji w App Engine, w tym przypadku w elastycznym środowisku App Engine.
Najpierw otwórz folder publish. Powinien znajdować się w folderze bin/Release, ale dokładna ścieżka zależy od wersji .NET:
cd bin/Release/netcoreapp3.1/publish/
Utwórz plik app.yaml w folderze publish:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
Zwróć uwagę, że plik app.yaml określa środowisko jako flex, a środowisko wykonawcze jako aspnetcore.
7. Wdrażanie w elastycznym środowisku App Engine
Możesz już wdrożyć aplikację w elastycznym środowisku App Engine za pomocą gcloud. W katalogu publish uruchom to polecenie:
gcloud app deploy --version v0
Podczas wdrażania może pojawić się prośba o wybranie regionu dla aplikacji. Wybierz region, w którym ma działać aplikacja.
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
Spowoduje to utworzenie obrazu aplikacji w chmurze, zapisanie go w Google Container Registry i wdrożenie w App Engine. Podczas wdrażania możesz zobaczyć, jak tworzony jest obraz kontenera:
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
Na koniec zobaczysz, że aplikacja została wdrożona.
...
Deployed service [default] to [https://<project-id>.appspot.com]
Po wdrożeniu aplikacji otwórz ją,wpisując adres URL http://<project-id>.appspot.com w przeglądarce.
Na nowej karcie zobaczysz domyślną stronę ASP.NET Core.

Możesz też sprawdzić utworzony dla Ciebie w chmurze obraz kontenera. W konsoli Cloud otwórz Container Registry > Images (Obrazy), a następnie w folderze appengine powinien być widoczny obraz aplikacji.

8. Wdrażanie nowej wersji usługi
W pewnym momencie aplikacja wdrożona w środowisku produkcyjnym będzie wymagać poprawek błędów lub dodatkowych funkcji. App Engine pomoże Ci wdrożyć nową wersję w środowisku produkcyjnym bez wpływu na użytkowników.
Najpierw zmodyfikujemy aplikację. Otwórz edytor kodu w Cloud Shell.

Otwórz Index.cshtml w folderze Views/Home w HelloWorldAspNetCore i zaktualizuj domyślną wiadomość:
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!
Zapisz zmiany i wróć do Cloud Shell. W HelloWorldAspNetCore, opublikuj aplikację, aby uzyskać samodzielną bibliotekę DLL.
dotnet publish -c Release
Przejdź do katalogu publikowania.
cd bin/Release/netcoreapp3.1/publish/
Możesz teraz wdrożyć nową wersję aplikacji (w tym przypadku v1).
gcloud app deploy --version v1
Po wdrożeniu możesz przejść do sekcji wersji App Engine w konsoli Google Cloud, aby zobaczyć nową wersję aplikacji, która obsługuje cały ruch z nowym komunikatem.

9. Panele i dzielenie ruchu
W App Engine w sekcji Panel znajdziesz kilka paneli dotyczących aplikacji, np. opóźnienia czy procesora. Zapoznaj się z nimi.

W sekcji Wersje możesz zobaczyć wdrożone wersje aplikacji, a w sekcji Podział ruchu możesz podzielić ruch między różne wersje. Podzielmy ruch między 2 wersje:

10. Gratulacje!
Czyszczenie
Czas wyłączyć aplikację, aby zaoszczędzić koszty i być dobrym użytkownikiem chmury.
Otwórz sekcję wersji App Engine.

Wybierz wersję i zatrzymaj ją.

Po zatrzymaniu wersji instancje zapasowe zostaną usunięte, a liczba instancji powinna spaść do zera.

Omówione zagadnienia
Gotowe! Aplikacja ASP.NET Core została utworzona, spakowana jako kontener Dockera i wdrożona w elastycznym środowisku Google App Engine.
- Jak spakować prostą aplikację ASP.NET Core jako kontener Dockera.
- Jak wdrożyć prostą aplikację ASP.NET Core w App Engine.
Następne kroki
- Dowiedz się więcej o Windows w Google Cloud Platform.
- Dowiedz się więcej o .NET w Google Cloud Platform.
- Dowiedz się więcej o SQL Server na Google Cloud Platform.
- Dowiedz się więcej o Cloud Tools for Visual Studio.
- Dowiedz się więcej o Cloud Tools for PowerShell.
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.