Начало работы с функциями Cloud Run (HTTP)

1. Введение

Обзор

Cloud Run Functions — это новый способ развертывания рабочих нагрузок с использованием привычных парадигм обработки событий GCF и сигнатур функций. Вместо использования нашего жестко регламентированного процесса сборки и конфигураций развертывания, Cloud Run Functions предоставляет вам прямой контроль над базовой службой, созданной в Cloud Run.

С помощью функций Cloud Run мы обеспечиваем простой пользовательский интерфейс развертывания из источника Cloud Run, предоставляя разработчикам полный контроль над своими рабочими нагрузками с помощью конфигураций Cloud Run.

В этом практическом занятии используются примеры на Node.js. Однако вы можете использовать примеры кода Cloud Functions 2-го поколения на любом языке по вашему выбору:

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

  • Как развернуть функцию Cloud Run, запускаемую HTTP-запросом.

2. Установите переменные среды и включите API.

Обновите интерфейс командной строки gcloud.

Для начала вам потребуется установить последнюю версию интерфейса командной строки gcloud. Обновить интерфейс можно, выполнив следующую команду:

gcloud components update

Настройка переменных среды

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

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

Включить API

Прежде чем начать использовать этот практический пример, вам потребуется включить несколько API. Для работы с этим практическим примером необходимы следующие API. Вы можете включить эти API, выполнив следующую команду:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

3. Создайте HTTP-функцию.

Сначала создайте директорию для исходного кода и перейдите в неё с помощью команды `cd`.

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

Затем создайте файл package.json со следующим содержимым:

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

Далее создайте файл index.js со следующим содержимым:

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

4. Разверните функцию.

Теперь вы можете развернуть функцию Cloud Run, выполнив следующую команду:

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

Эта команда использует buildpacks для преобразования исходного кода вашей функции в готовый к использованию в производственной среде образ контейнера.

Обратите внимание на следующее:

  • Флаг –source используется для того, чтобы указать Cloud Run на необходимость встроить функцию в исполняемый контейнерный сервис.
  • Флаг –function (новый) используется для установки точки входа нового сервиса в качестве сигнатуры функции, которую вы хотите вызвать.
  • (необязательно) параметр –no-allow-unauthenticated, чтобы предотвратить публичный вызов вашей функции.

5. Проверьте функцию.

После завершения развертывания вы увидите URL-адрес сервиса. Для вызова функции необходимо отправить аутентифицированный запрос с вашим токеном идентификации или токеном идентификации субъекта, имеющего роль Cloud Run Invoker, как показано ниже:

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

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

Поздравляем с завершением практического занятия!

Мы рекомендуем ознакомиться с документацией по функциям Cloud Run.

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

  • Как развернуть функцию Cloud Run, запускаемую HTTP-запросом.

7. Уборка

Чтобы избежать непреднамеренных списаний средств (например, если сервисы Cloud Run будут случайно запущены больше раз, чем предусмотрено вашим ежемесячным лимитом на запуск Cloud Run в бесплатном тарифе ), вы можете либо удалить Cloud Run, либо удалить проект, созданный на шаге 2.

Чтобы удалить функцию Cloud Run, перейдите в консоль Cloud Run по адресу https://console.cloud.google.com/run и удалите службу crf-http-codelab .

Если вы решите удалить весь проект, перейдите по ссылке https://console.cloud.google.com/cloud-resource-manager , выберите проект, созданный на шаге 2, и нажмите «Удалить». После удаления проекта вам потребуется изменить проекты в вашем Cloud SDK. Список всех доступных проектов можно просмотреть, выполнив gcloud projects list .