1. Введение
Cloud Run — это управляемая платформа, которая позволяет запускать контейнеры без отслеживания состояния, которые можно вызвать с помощью HTTP-запросов. Cloud Run не требует серверов: он абстрагирует все управление инфраструктурой, поэтому вы можете сосредоточиться на самом важном — создании отличных приложений.
Он создан на основе Knative , что позволяет вам запускать контейнеры либо под полным управлением с помощью Cloud Run, либо в кластере Google Kubernetes Engine с помощью Cloud Run на GKE.
Цель этой лаборатории кода — создать образ контейнера и развернуть его в Cloud Run.
2. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Google Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории мы будем использовать Google Cloud Shell , среду командной строки, работающую в облаке.
Cloud Shell — это онлайн-среда разработки и эксплуатации, доступная в любом месте с помощью браузера. Вы можете управлять своими ресурсами с помощью онлайн-терминала, в который предварительно загружены такие утилиты, как инструмент командной строки gcloud, kubectl и другие. Вы также можете разрабатывать, создавать, отлаживать и развертывать свои облачные приложения с помощью онлайн -редактора Cloud Shell .
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает непосредственно в Google Cloud, что значительно повышает производительность сети и аутентификацию. Это означает, что все, что вам понадобится для этой лаборатории кода, — это браузер (да, он работает на Chromebook).
- Чтобы активировать Cloud Shell из Cloud Console, просто нажмите «Активировать Cloud Shell» :
Если вы запускаете Cloud Shell впервые, вы увидите промежуточный экран с описанием того, что это такое. Если вам был представлен промежуточный экран, нажмите « Продолжить».
Подготовка среды займет всего несколько секунд:
После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию:
gcloud auth list
Вывод команды
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
Для проекта также должен быть установлен ваш PROJECT_ID
(при условии, что вы выбрали проект в веб-консоли):
gcloud config list project
Вывод команды
[core] project = <PROJECT_ID>
Если по какой-то причине проект не установлен, просто введите следующую команду:
gcloud config set project <PROJECT_ID>
Ищете свой PROJECT_ID
? Посмотрите раскрывающийся список в верхней части Cloud Console:
Вы также можете проверить детали вашего проекта, используя раздел «Настройки и утилиты»:
Cloud Shell также по умолчанию устанавливает некоторые переменные среды, которые могут быть полезны при выполнении будущих команд.
echo $GOOGLE_CLOUD_PROJECT
Вывод команды
<PROJECT_ID>
- Наконец, вы можете установить зону по умолчанию:
gcloud config set compute/zone us-central1-f
Вы можете выбрать разные зоны. Дополнительную информацию см. в разделе «Регионы и зоны» .
Включите API Cloud Run
В Cloud Shell включите Cloud Run API:
gcloud services enable run.googleapis.com
Это должно привести к успешному сообщению, похожему на это:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Напишите пример приложения
Мы создадим простое приложение ASP.NET C#, отвечающее на HTTP-запросы.
Чтобы создать приложение, используйте инструмент командной строки dotnet
в Cloud Shell:
dotnet new web -o helloworld-csharp
Перейдите в каталог helloworld-csharp
:
cd helloworld-csharp
Затем обновите Program.cs
, чтобы он соответствовал следующему:
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();
Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды PORT
, и отвечает сообщением Hello World
.
Вы можете протестировать приложение, запустив его локально в Cloud Shell. Вы должны увидеть, что он прослушивает порт 8080:
$ 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. Развертывание в Cloud Run
Разверните свое приложение в Cloud Run с помощью следующей команды:
gcloud run deploy hello-world \ --allow-unauthenticated \ --region us-central1 \ --source .
hello-world
— это имя службы.- Флагallow
allow-unauthenticated
развертывает службу как общедоступную службу без требований аутентификации. -
us-central1
— это регион, в котором будет развернуто приложение. - Флаг
source
определяет местоположение исходного кода для сборки. Cloud Run использует пакеты сборки для автоматического создания контейнера из исходного кода.
Подождите пару минут, пока развертывание не завершится. В случае успеха в командной строке отображается URL-адрес службы:
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
Теперь вы можете посетить развернутый контейнер, открыв URL-адрес службы в веб-браузере:
Поздравляем! Вы только что развернули приложение, упакованное в образ контейнера, в Cloud Run. Cloud Run автоматически горизонтально масштабирует образ контейнера для обработки полученных запросов, а затем уменьшает масштаб, когда спрос снижается. Вы платите только за процессор, память и сеть, использованные во время обработки запроса.
5. Время навести порядок
Вы можете либо решить удалить свой проект GCP, чтобы избежать взимания платы, что приведет к прекращению выставления счетов за все ресурсы, используемые в этом проекте, либо просто удалить службу Cloud Run:
gcloud run services delete helloworld
6. Что дальше?
Хорошим следующим шагом будет развертывание в Cloud Run на GKE .
Дополнительные сведения о создании HTTP-контейнера без сохранения состояния, подходящего для Cloud Run, из источника кода и его отправке в реестр контейнеров см. в разделе: