1. Введение
Cloud Run позволяет запускать контейнеры без сохранения состояния в полностью управляемой среде. Он создан на основе Knative с открытым исходным кодом, что позволяет вам запускать контейнеры либо под полным управлением с помощью Cloud Run, либо в кластере Google Kubernetes Engine с помощью Cloud Run для Anthos .
Eventarc позволяет легко подключать различные сервисы (Cloud Run, Cloud Functions, Workfklows) к событиям из различных источников. Он позволяет создавать управляемые событиями архитектуры, в которых микросервисы слабо связаны и распределены. Он также позаботится о приеме событий, их доставке, безопасности, авторизации и обработке ошибок, что повышает гибкость разработчиков и устойчивость приложений.
В этой лаборатории вы узнаете о Eventarc. В частности, вы будете прослушивать события из журналов Pub/Sub, Cloud Storage и Cloud Audit с помощью Eventarc и передавать их в службу Cloud Run.
Что вы узнаете
- Видение Eventarc
- Откройте для себя события в Eventarc
- Создайте приемник Cloud Run
- Создайте триггер для Pub/Sub
- Создайте триггер для Cloud Storage
- Создайте триггер для журналов облачного аудита.
- Изучите пользовательский интерфейс Eventarc
2. Видение Eventarc
Цель Eventarc — доставлять события из различных источников событий Google, Google Cloud и сторонних источников в места назначения событий Google Cloud.
Источники Google Cloud | Источники событий, являющиеся продуктами Google Cloud. |
Источники Google | Источниками событий являются продукты, принадлежащие Google, такие как Gmail, Hangouts, Android Management и другие. |
Пользовательские источники | Источники событий, которые не являются продуктами Google и создаются самими конечными пользователями. |
Сторонние источники | Источники событий, которые не принадлежат Google и не созданы клиентами. Сюда входят популярные источники событий, такие как Check Point CloudGuard, Datadog, ForgeRock, Lacework и т. д., которые принадлежат и обслуживаются сторонними поставщиками и партнерами. |
События нормализуются в формате CloudEvents v1.0 для обеспечения совместимости между сервисами. CloudEvents — это независимая от поставщика открытая спецификация, описывающая данные о событиях в общих форматах, обеспечивающая совместимость между сервисами, платформами и системами.
3. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта. - Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Далее вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.
В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.
Прежде чем начать
В Cloud Shell убедитесь, что идентификатор вашего проекта настроен:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Развертывание службы Cloud Run
Разверните службу Cloud Run для получения событий. Вы развернете контейнер Hello Cloud Run , который записывает содержимое CloudEvents.
Сначала включите необходимые службы для Cloud Run:
gcloud services enable run.googleapis.com
Разверните контейнер hello в Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
В случае успеха в командной строке отображается URL-адрес службы. Вы можете открыть URL-адрес службы в любом окне браузера, чтобы дважды проверить, развернута ли служба.
5. Обнаружение событий
Прежде чем создавать триггеры в Eventarc, вы можете узнать, каковы источники событий, типы событий, которые они могут генерировать, и как настроить триггеры для их использования.
Чтобы просмотреть список различных типов событий:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Чтобы получить дополнительную информацию о каждом типе событий:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Чтобы просмотреть список служб, генерирующих события определенного типа:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Чтобы просмотреть список имен методов (подсобытий), которые может генерировать каждая служба:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Создайте триггер Pub/Sub.
Один из способов получения событий — через Cloud Pub/Sub. Любое приложение может публиковать сообщения в Pub/Sub, и эти сообщения можно доставлять в Cloud Run через Eventarc.
Настраивать
Прежде чем создавать какие-либо триггеры, включите необходимые службы для Eventarc:
gcloud services enable eventarc.googleapis.com
Вам также понадобится учетная запись службы, которая будет использоваться триггерами. Создайте учетную запись службы:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Создавать
Создайте триггер для фильтрации событий, опубликованных в теме Pub/Sub в нашем развернутом сервисе Cloud Run:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Тест
Триггер Pub/Sub создает скрытую тему. Давайте выясним это и присвоим переменной:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Используйте gcloud
, чтобы опубликовать сообщение в теме:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Служба Cloud Run записывает тело входящего сообщения. Вы можете просмотреть это в разделе «Журналы» вашего экземпляра Cloud Run:
Создать с использованием существующей темы Pub/Sub
По умолчанию, когда вы создаете триггер Pub/Sub, Eventarc создает тему под обложками, которую вы можете использовать в качестве темы транспорта между вашим приложением и службой Cloud Run. Это полезно для простого и быстрого создания триггера с поддержкой Pub/Sub, но иногда вам может потребоваться использовать существующую тему. Eventarc позволяет указать существующую тему Pub/Sub в том же проекте с помощью флага --transport-topic
gcloud.
Чтобы увидеть, как это работает, создайте тему Pub/Sub, которая будет использоваться в качестве темы транспорта:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Создайте триггер:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Вы можете протестировать триггер, отправив сообщение в тему:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Создайте триггер облачного хранилища.
На этом этапе вы создадите триггер для прослушивания событий из Cloud Storage.
Настраивать
Сначала создайте корзину для получения событий от:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Предоставьте роль eventarc.eventReceiver
, чтобы учетную запись службы можно было использовать в триггере Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Вам также необходимо добавить роль pubsub.publisher
в учетную запись службы Cloud Storage для триггеров Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
Создавать
Создайте триггер для маршрутизации событий создания новых файлов из корзины в ваш сервис:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Тест
Перечислите все триггеры, чтобы подтвердить, что триггер был успешно создан:
gcloud eventarc triggers list
Загрузите файл в корзину Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Если вы проверите журналы службы Cloud Run в Cloud Console, вы должны увидеть полученное событие:
8. Создайте триггер журналов облачного аудита.
Хотя триггер Cloud Storage — лучший способ прослушивания событий Cloud Storage, на этом этапе вы создаете триггер журнала аудита Cloud, чтобы делать то же самое.
Настраивать
Чтобы получать события от службы, вам необходимо включить журналы облачного аудита. В облачной консоли выберите IAM & Admin
и Audit Logs
в верхнем левом меню. В списке сервисов отметьте Google Cloud Storage
:
С правой стороны убедитесь, что выбраны Admin
, Read
и Write
, и нажмите Save
:
Создавать
Создайте триггер для маршрутизации событий создания новых файлов из корзины в ваш сервис:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Тест
Инициализация триггеров журналов аудита занимает немного времени. Вы можете проверить, что триггер создан, перечислив все триггеры:
gcloud eventarc triggers list
Вы должны увидеть, что поле ACTIVE
имеет Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Загрузите тот же файл в корзину Cloud Storage, что и ранее:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Если вы проверите журналы службы Cloud Run в Cloud Console, вы должны увидеть полученное событие:
9. Изучите пользовательский интерфейс Eventarc
На этом этапе вы изучите пользовательский интерфейс Eventarc в Google Cloud Console. В пользовательском интерфейсе Eventarc вы можете получить обзор всех триггеров, редактировать и удалять их, а также создавать новые триггеры из Google Cloud Console.
Перейдите в раздел Eventarc в Google Cloud:
Вы увидите список триггеров, которые вы создали ранее:
Если нажать на триггер, то можно просмотреть подробную информацию о триггере, отредактировать или удалить его:
Вы также можете создать новый триггер, выбрав Create trigger
и заполнив сведения о триггере:
10. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Видение Eventarc
- Откройте для себя события в Eventarc
- Создайте приемник Cloud Run
- Создайте триггер для Pub/Sub
- Создайте триггер для Cloud Storage
- Создайте триггер для журналов облачного аудита.
- Изучите пользовательский интерфейс Eventarc