Развертывание приложения ASP.NET Core в App Engine

1. Обзор

ASP.NET Core — это новая кроссплатформенная платформа с открытым исходным кодом для создания современных облачных и подключенных к Интернету приложений с использованием языка программирования C#.

В ходе этой лабораторной работы вы развернете простое приложение ASP.NET Core в гибкой среде App Engine. Эта лаборатория кода основана на сборке и запуске приложения ASP.NET Core из лаборатории кода Google Cloud Shell . Возможно, вы захотите сначала выполнить эту лабораторную работу, прежде чем приступать к этой лабораторной работе.

Приложения Google App Engine легко создавать, поддерживать и масштабировать по мере изменения потребностей в трафике и хранилище данных. Благодаря App Engine вам не придется управлять серверами. Вы просто загружаете свое приложение, и оно готово к работе.

Приложения App Engine автоматически масштабируются в зависимости от входящего трафика. App Engine изначально поддерживает балансировку нагрузки, микросервисы, авторизацию, базы данных SQL и NoSQL, Memcache, разделение трафика, ведение журналов, поиск, управление версиями, развертывание и откат, а также сканирование безопасности, причем все эти функции имеют широкие возможности настройки.

Среды App Engine, стандартная среда и гибкая среда , поддерживают множество языков программирования, включая C#, Java, Python, PHP, Node.js, Go и другие. Эти две среды предоставляют пользователям максимальную гибкость в поведении их приложений, поскольку каждая среда имеет определенные сильные стороны. Дополнительную информацию см. в разделе Выбор среды App Engine .

Что вы узнаете

  • Как упаковать простое приложение ASP.NET Core в контейнер Docker.
  • Как развернуть простое приложение ASP.NET Core в App Engine.

Что вам понадобится

  • Проект облачной платформы Google
  • Браузер, например Chrome или Firefox.

Как вы будете использовать этот урок?

Прочтите только до конца Прочитайте его и выполните упражнения.

Как бы вы оценили свой опыт работы с Google Cloud Platform?

Новичок Средний Опытный

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
  • Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как PROJECT_ID ), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта.
  • Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

Активировать Cloud Shell

  1. В Cloud Console нажмите «Активировать Cloud Shell». 4292cbf4971c9786.png .

bce75f34b2c53987.png

Если вы никогда раньше не запускали Cloud Shell, вам будет представлен промежуточный экран (ниже сгиба) с описанием того, что это такое. В этом случае нажмите «Продолжить» (и вы больше никогда этого не увидите). Вот как выглядит этот одноразовый экран:

70f315d7b402b476.png

Подготовка и подключение к Cloud Shell займет всего несколько минут.

fbe3a0674c982259.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью просто браузера или Chromebook.

После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта.

  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что вы прошли аутентификацию:
gcloud auth list

Вывод команды

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project

Вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить это с помощью этой команды:

gcloud config set project <PROJECT_ID>

Вывод команды

Updated property [core/project].

3. Создайте приложение ASP.NET Core в Cloud Shell.

В командной строке Cloud Shell вы можете убедиться, что инструмент командной строки dotnet уже установлен, перечислив установленные пакеты SDK для .NET:

dotnet --list-sdks

Затем создайте новый скелет веб-приложения ASP.NET Core с целевой платформой netcoreapp3.1 :

dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1

Это должно создать проект и восстановить его зависимости. Вы должны увидеть сообщение, подобное приведенному ниже.

Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.

Restore succeeded.

4. Запустите приложение ASP.NET Core.

Мы почти готовы запустить наше приложение. Перейдите в папку приложения.

cd HelloWorldAspNetCore

Наконец, запустите приложение.

dotnet run --urls=http://localhost:8080

Приложение начинает прослушивать порт 8080.

Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.

Чтобы убедиться, что приложение работает, нажмите кнопку веб-предварительного просмотра в правом верхнем углу и выберите «Просмотр на порту 8080».

Захват.PNG

Вы увидите веб-страницу ASP.NET Core по умолчанию:

f579a9baedc108a9.png

Убедившись, что приложение запущено, нажмите Ctrl+C, чтобы закрыть приложение.

5. Опубликуйте приложение ASP.NET Core.

Теперь опубликуйте приложение, чтобы получить автономную DLL, с помощью команды dotnet publish .

dotnet publish -c Release

При запуске publish в конце процесса отображаются некоторые сообщения с успешно опубликованной 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. Создайте гибкий файл app.yaml для App Engine.

Файл app.yaml описывает, как развернуть приложение в App Engine, в данном случае в гибкой среде App Engine.

Сначала перейдите в папку publish . Он должен находиться в папке bin/Release , но точный путь зависит от версии .NET:

cd bin/Release/netcoreapp3.1/publish/

Создайте файл app.yaml внутри папки publish :

cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT

Обратите внимание, что в файле app.yaml среда указана как flex , а среда выполнения — как aspnetcore .

7. Гибкое развертывание в App Engine

Вы готовы гибко развернуть свое приложение в App Engine с помощью gcloud . Внутри каталога publish выполните следующее:

gcloud app deploy --version v0

Во время развертывания вас могут попросить выбрать регион для вашего приложения. Выберите регион, в котором вы хотите, чтобы ваше приложение работало.

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

Это создаст образ вашего приложения в облаке, сохранит его в реестре контейнеров Google и развернет в App Engine. Во время развертывания вы можете увидеть, как создается образ контейнера:

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

В конце вы должны увидеть, что приложение развернуто.

...
Deployed service [default] to [https://<project-id>.appspot.com]

После развертывания приложения посетите его, открыв URL-адрес http://<project-id>.appspot.com в своем веб-браузере.

Вы увидите веб-страницу ASP.NET Core по умолчанию на новой вкладке.

f579a9baedc108a9.png

Вы также можете просмотреть образ контейнера, созданный для вас в облаке. В облачной консоли перейдите в «Реестр контейнеров» > «Изображения», а затем в папке appengine вы должны увидеть образ вашего приложения.

de788f4949d0c5a.png

8. Разверните новую версию вашего сервиса.

В какой-то момент приложение, которое вы развернули в рабочей среде, потребует исправления ошибок или дополнительных функций. App Engine поможет вам развернуть новую версию в рабочей среде, не затрагивая при этом ваших пользователей.

Во-первых, давайте изменим приложение. Откройте редактор кода из Cloud Shell.

868c4f615e2331fe.png

Перейдите к Index.cshtml в папке Views/Home HelloWorldAspNetCore и обновите сообщение по умолчанию следующим образом:

Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!

Сохраните изменения и вернитесь в Cloud Shell. Внутри HelloWorldAspNetCore, опубликуйте приложение, чтобы получить автономную DLL.

dotnet publish -c Release

Перейдите в каталог публикации.

cd bin/Release/netcoreapp3.1/publish/

Теперь вы можете развернуть новую версию своего приложения (в данном случае v1 ).

gcloud app deploy --version v1

После развертывания вы можете перейти в раздел «Версии App Engine» Google Cloud Console, чтобы увидеть новую версию вашего приложения, обслуживающую весь трафик с новым сообщением.

8cc0cc992b4e07ed.png

9. Дашборды и разделение трафика

В App Engine в разделе «Панель мониторинга» вы можете увидеть несколько панелей мониторинга вашего приложения по задержке, процессору и т. д. Изучите их самостоятельно.

5c879431935b080d.png

В разделе «Версии» вы можете увидеть развернутые версии вашего приложения и разделить трафик между разными версиями в разделе «Разделение трафика». Давайте разделим трафик между двумя версиями:

176a2e22e755b6d3.png

10. Поздравляем!

C -подборка

Пришло время закрыть приложение, чтобы сэкономить на расходах и стать в целом хорошим гражданином облака.

Перейдите в раздел версий App Engine.

7e9b3b4406e785b9.png

Выберите версию и остановите ее.

7f80d9ff2c959e0.png

После остановки версии резервные экземпляры будут удалены, и вы увидите, что количество экземпляров упадет до нуля.

29f3cb5c71225b2d.png

Что мы рассмотрели

Там! Вы создали приложение ASP.NET Core, упаковали его как контейнер Docker и развернули в Google App Engine Flexible.

  • Как упаковать простое приложение ASP.NET Core в контейнер Docker.
  • Как развернуть простое приложение ASP.NET Core в App Engine.

Следующие шаги

Лицензия

Эта работа доступна под лицензией Creative Commons Attribution 2.0 Generic License.