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. Ten moduł opiera się na module 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 przychodzącego ruchu. App Engine natywnie obsługuje równoważenie obciążenia, mikroserwisy, 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 korzystać z tego samouczka?
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 ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa 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 modułów z kodem 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 bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać 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 (część strony widoczna po przewinięciu) 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 module, 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 nowy szkielet aplikacji internetowej 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
Nasza aplikacja jest już prawie gotowa do uruchomienia. Otwórz folder aplikacji.
cd HelloWorldAspNetCore
Na koniec uruchom aplikację.
dotnet run --urls=http://localhost:8080
Aplikacja zaczyna 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ę internetową 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
Uruchomienie publish wyświetla na końcu procesu niektóre komunikaty z informacją 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, jak wdrożyć aplikację w App Engine, w tym przypadku w środowisku elastycznym 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 w pliku app.yaml środowisko jest określone 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 powinna pojawić się informacja o wdrożeniu aplikacji.
...
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.
W 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 (Rejestr kontenerów > 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 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 informacyjne i podział 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! Utworzyliśmy aplikację ASP.NET Core, spakowaliśmy ją jako kontener Dockera i wdrożyliśmy 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.