1. Обзор
В этой лабораторной работе вы создадите триггер Eventarc, который свяжет тему Pub/Sub со службой Workflows. Eventarc позволяет разделить взаимодействие между службами, делая ваше решение более расширяемым и событийно-ориентированным. Вы создадите рабочий процесс, включающий несколько шагов для выполнения бизнес-процесса по расчету бонусных баллов клиентов за заказы в Cymbal Eats. Рабочий процесс будет отправлять несколько запросов в приложение, работающее на GKE Autopilot, и публиковать сообщение в тему Pub/Sub, чтобы уведомить приложение Order Service о рассчитанных бонусных баллах.

Что такое автопилот GKE?
GKE Autopilot — это режим работы в GKE, в котором Google управляет конфигурацией вашего кластера, включая узлы, масштабирование, безопасность и другие предварительно настроенные параметры. Кластеры Autopilot оптимизированы для работы с большинством производственных нагрузок и выделяют вычислительные ресурсы на основе ваших манифестов Kubernetes. Упрощенная конфигурация соответствует передовым методам и рекомендациям GKE по настройке кластера и рабочих нагрузок, масштабируемости и безопасности. Список встроенных параметров см. в сравнительной таблице Autopilot и Standard .
В GKE Standard пользователи сами управляют рабочими узлами и конфигурацией пула узлов, а обо всем остальном позаботится GKE.
Обязанности клиента и Google при работе в режиме GKE Standard

В GKE Autopilot настройка и управление пулом узлов переходят в руки Google. Это позволяет вам сосредоточиться на приложениях и сервисах, работающих на кластере.
Что такое Eventarc?
Eventarc позволяет создавать архитектуры, управляемые событиями, без необходимости внедрения, настройки или обслуживания базовой инфраструктуры. Eventarc предлагает стандартизированное решение для управления потоком изменений состояния, называемых событиями, между децентрализованными микросервисами. При срабатывании Eventarc направляет эти события через подписки Pub/Sub в различные места назначения (например, рабочие процессы, Cloud Run), одновременно управляя доставкой, безопасностью, авторизацией, наблюдаемостью и обработкой ошибок.
Поставщики событий Google
- Более 90 провайдеров Google Cloud. Эти провайдеры отправляют события либо напрямую из источника (например, Cloud Storage), либо через записи в журналах аудита Cloud.
- Поставщики Pub/Sub. Эти поставщики отправляют события в Eventarc, используя сообщения Pub/Sub.
Сторонние поставщики
Сторонние поставщики — это организации, не входящие в Google, которые предоставляют источник данных Eventarc.
Триггеры Eventarc
- События Cloud Pub/Sub. Eventarc может запускаться сообщениями, опубликованными в темы Pub/Sub.
- События журналов аудита облака (CAL). Журналы аудита облака предоставляют журналы аудита действий администратора и доступа к данным для каждого облачного проекта, папки и организации.
- Прямые события. Eventarc может запускаться различными прямыми событиями, такими как обновление хранилища Cloud Storage или обновление шаблона Firebase Remote Config.
Места проведения мероприятий
- Рабочие процессы
- Cloud Run
- ГКЕ
- Облачные функции ( 2-го поколения )

Что такое рабочие процессы?
Workflows — это полностью управляемый сервис, позволяющий интегрировать микросервисы, задачи и API. Workflows — это бессерверный сервис, масштабируемый в соответствии с вашими потребностями.
Варианты использования рабочих процессов:
- Рабочие процессы, управляемые событиями, выполняются по заданным триггерам. Например, когда оформляется новый заказ и вы хотите рассчитать баллы лояльности клиента. Или когда заказ отменяется, событие может быть опубликовано, и все заинтересованные сервисы обработают его.
- Пакетные задания запускают задачи на регулярной основе с помощью Cloud Scheduler. Например, ночное задание для проверки пунктов меню на наличие ошибок и их удаления.
Workflows идеально подходит для рабочих процессов, которые управляют сервисами. Вы можете автоматизировать процессы, включающие ожидание и повторные попытки, на срок до одного года.
Преимущества рабочих процессов:
- Конфигурация важнее кода: сократите технический долг, перенеся логику в конфигурацию, а не в написание кода.
- Упростите свою архитектуру. Stateful Workflows позволяют визуализировать и отслеживать сложные интеграции сервисов без дополнительных зависимостей.
- Обеспечьте надежность и отказоустойчивость. Контролируйте сбои с помощью стандартной или пользовательской логики повторных попыток и обработки ошибок, даже если другие системы дают сбой — сохраняя контрольные точки на каждом этапе в Cloud Spanner, вы сможете отслеживать ход выполнения.
- Никакого обслуживания. Масштабирование по мере необходимости: ничего не нужно обновлять или обслуживать. Платите только тогда, когда ваши рабочие процессы выполняются, без каких-либо затрат во время ожидания или простоя.
В этой лабораторной работе вы настроите рабочий процесс, управляемый событиями.
Что вы узнаете
В этой лабораторной работе вы научитесь выполнять следующие действия:
- Настройте тему Pub/Sub и Eventarc для запуска рабочих процессов.
- Настройте рабочий процесс для выполнения вызовов API к приложению, работающему в GKE Autopilot.
- Настройте рабочий процесс для публикации сообщений в систему публикации/подписки (Pub/Sub).
- Как запрашивать структурированные журналы рабочих процессов в Cloud Logging и с помощью CLI gcloud.
Предварительные требования
- Для выполнения этой лабораторной работы предполагается знакомство со средами Cloud Console и Cloud Shell.
- Опыт работы с GKE и Cloud Pub/Sub приветствуется, но не является обязательным.
2. Настройка и требования
Настройка облачного проекта
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

Клонируйте репозиторий, перейдите в нужную директорию, скопируйте и вставьте приведенную ниже команду в терминал и нажмите Enter:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Для развертывания необходимых зависимостей запустите скрипт gke-lab-setup.sh
Будут созданы следующие ресурсы:
- Кластер и экземпляр AlloyDB
- Кластер автопилота GKE
./gke-lab-setup.sh
Если появится запрос на авторизацию, нажмите «Авторизовать», чтобы продолжить.

Настройка займет около 10 минут.
Дождитесь завершения выполнения скрипта и появления приведенного ниже результата, прежде чем приступать к следующим шагам.
NAME: client-instance ZONE: us-central1-c MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.9 EXTERNAL_IP: 35.232.109.233 STATUS: RUNNING
3. Кластер автопилота GKE
Обзор кластера автопилота GKE
Установите переменные среды проекта:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
В рамках первоначальной настройки кластер был создан с помощью приведенной ниже команды (запускать эту команду необязательно):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Выполните команду, чтобы просмотреть созданный кластер GKE Autopilot:
gcloud container clusters list
Пример выходных данных:

Выполните команду для сохранения учетных данных для кластера:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Развернуть приложение
Далее вам предстоит развернуть приложение для обслуживания клиентов. Это микросервис на Java, использующий фреймворк Quarkus .
Перейдите в папку cymbal-eats/customer-service и выполните следующие команды для сборки и загрузки образа контейнера:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Установите частный IP-адрес AlloyDB:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Выполните приведенные ниже команды, чтобы создать объект секретов Kubernetes для хранения учетных данных базы данных, которые будут использоваться приложением службы поддержки клиентов для подключения к базе данных:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
Выполните команду для замены переменной CUSTOMER_SERVICE_IMAGE в файле deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Выполните команду для развертывания приложения:
kubectl apply -f customer-service-deployment.yaml
Для перехода приложения в состояние RUNNING потребуется несколько секунд.
Просмотрите файл спецификации развертывания:
deployment.yaml.tmpl
Вот часть конфигурации, которая определяет ресурсы, необходимые для запуска этого приложения.
spec:
containers:
- name: customer-service
image: CUSTOMER_SERVICE_IMAGE
resources:
requests:
cpu: 250m
memory: 512Mi
ephemeral-storage: 512Mi
limits:
cpu: 500m
memory: 1024Mi
ephemeral-storage: 1Gi
Выполните команду для создания внешнего IP-адреса, который будет использоваться в рабочем процессе:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Выполните команду для проверки созданных ресурсов:
kubectl get all
Пример выходных данных:

4. Проверка рабочего процесса
Основные концепции рабочих процессов
Рабочий процесс состоит из последовательности шагов, описанных с использованием синтаксиса рабочих процессов ( YAML или JSON ).
После создания рабочего процесса он развертывается , что делает его готовым к выполнению.
Выполнение — это однократный запуск логики, содержащейся в определении рабочего процесса. Рабочий процесс, который не был выполнен, не влечет за собой никаких затрат. Все выполнения рабочих процессов независимы друг от друга, а быстрое масштабирование продукта позволяет осуществлять большое количество одновременных выполнений.
Контроль исполнения
- Этапы — Для создания рабочего процесса необходимо определить желаемые
stepsи порядок выполнения, используя синтаксис «Рабочие процессы». Каждый рабочий процесс должен содержать как минимум один этап. - Условия — Вы можете использовать блок
switchв качестве механизма выбора, позволяющего значению выражения управлять ходом выполнения рабочего процесса. - Итерации — Вы можете использовать цикл
forдля перебора последовательности чисел или набора данных, таких как список или карта. - Вложенные рабочие процессы — Вложенный рабочий процесс работает аналогично подпрограмме или функции в языке программирования, позволяя инкапсулировать шаг или набор шагов, которые ваш рабочий процесс будет повторять несколько раз.
Запуск выполнения
- Ручной режим — Вы можете управлять рабочими процессами как из консоли Google Cloud, так и из командной строки с помощью Google Cloud CLI.
- Программное управление — для управления рабочими процессами можно использовать облачные клиентские библиотеки для API рабочих процессов или REST API.
- Запланированные запуски — Вы можете использовать Cloud Scheduler для запуска рабочего процесса по заданному расписанию.
Аргументы времени выполнения
Данные, передаваемые во время выполнения, можно получить доступ, добавив поле params в основной рабочий процесс (размещенный в главном блоке). Главный блок принимает один аргумент, представляющий собой любой допустимый тип данных JSON. Поле params задает имя переменной, которую рабочий процесс использует для хранения передаваемых данных.
Логика рабочего процесса
Если клиент отсутствует, рабочий процесс выполнит вызов API для создания клиента, а затем обновит бонусные баллы. В зависимости от общей суммы заказа рабочий процесс выберет множитель для расчета бонусных баллов для клиента. Подробности см. в примере ниже.
- calculate_multiplier:
switch:
- condition: ${totalAmount < 10}
steps:
- set_multiplier1:
assign:
- multiplier: 2
- condition: ${totalAmount >= 10 and totalAmount < 25}
steps:
- set_multiplier2:
assign:
- multiplier: 3
- condition: ${totalAmount >= 25}
steps:
- set_multiplier3:
assign:
- multiplier: 5
- calculate_rewards:
assign:
- rewardPoints: ${customerRecord.rewardPoints + multiplier}

5. Настройка и развертывание рабочего процесса
Выполните команду, чтобы просмотреть внешний IP-адрес службы:
kubectl get svc
Пример выходных данных:

Установите указанную ниже переменную среды, используя значение внешнего IP-адреса из предыдущего вывода.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Замените URL-адрес приложения «Служба поддержки клиентов» в шаблоне рабочего процесса:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Укажите местоположение переменных среды службы и проекта Workflows:
gcloud config set workflows/location ${REGION}
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
Создайте пользовательскую учетную запись службы для рабочего процесса со следующими правами доступа:
- API для регистрации звонков
- Публиковать сообщения в тему PubSub
export WORKFLOW_SERVICE_ACCOUNT=workflows-sa
gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/pubsub.publisher"
Разверните рабочий процесс. Рабочий процесс настроен на использование учетной записи службы, созданной на предыдущем шаге:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
Проверьте источник рабочего процесса и другие детали (вкладка «Триггеры»). В данный момент для выполнения этого рабочего процесса не настроены триггеры. Вы настроите их на следующем шаге.

6. Настройте темы Pub/Sub и триггер Eventarc.
Далее вам нужно будет создать две темы Pub/Sub и настроить один триггер Eventarc.
Приложение Order Service будет публиковать сообщения в order-topic с информацией о новых заказах.
Рабочий процесс будет публиковать сообщения в order-points-topic с информацией о бонусных баллах за заказ и общей сумме. Сервис заказов (не являющийся частью данной лабораторной работы) предоставляет конечную точку, которая используется подпиской Push на order-points-topic, для обновления бонусных баллов и общей суммы по каждому заказу.
Создание новых тем Pub/Sub:
export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID
Укажите местоположение для сервиса Eventarc:
gcloud config set eventarc/location ${REGION}
Создайте пользовательскую учетную запись службы, которая будет использоваться триггером Eventarc для выполнения рабочих процессов.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
Предоставьте учетной записи службы доступ для выполнения рабочих процессов.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Создайте триггер Eventarc для прослушивания сообщений Pub/Sub и их доставки в рабочие процессы.
gcloud eventarc triggers create new-orders-trigger \
--destination-workflow=${WORKFLOW_NAME} \
--destination-workflow-location=${REGION} \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--transport-topic=$TOPIC_ID
Пример выходных данных:
Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done. Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow]. WARNING: It may take up to 2 minutes for the new trigger to become active.
В обзоре создан триггер Eventarc .

Проверка создала подписку для триггера.

Проанализированы изменения в рабочем процессе . Добавлен новый триггер.

7. Процесс тестирования

Для имитации работы службы обработки заказов вы будете отправлять сообщения в топик Pub/Sub из Cloud Shell и проверять журналы службы поддержки клиентов в консоли Cloud.
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
Пример выходных данных:
messageIds: - '5063709859203105'
Просмотрите подробные сведения о выполнении рабочего процесса и журналы .


8. Структурированное ведение журналов рабочих процессов
Рабочий процесс настроен на запись структурированных логов в формате JSON. Логи записываются с использованием API Cloud Logging, ресурса workflows.googleapis.com/Workflow и под именем файла projects/${PROJECT_ID}/logs/Workflows .
Ознакомьтесь с настройками ведения журналов ниже.
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
Откройте Logs Explorer в Cloud Console и выполните запрос, чтобы найти обработанные заказы с общей суммой более 2 долларов.
Чтобы отобразить поле для поискового запроса, нажмите кнопку «Показать запрос».

resource.type="workflows.googleapis.com/Workflow" AND
jsonPayload.totalAmount > 2 AND
timestamp >= "2023-01-01T00:00:00Z" AND
timestamp <= "2024-12-31T23:59:59Z"
Пример выходных данных:

Откройте Cloud Shell и используйте интерфейс командной строки gcloud для чтения журналов с помощью приведенных ниже команд.
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
Пример вывода в table формате:

Выполните указанную ниже команду, чтобы получить логи в формате JSON:
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format=json | jq
Пример выходных данных в формате json :

9. Проверка клиентских записей
(Необязательные шаги)
Выполните приведенные ниже команды, чтобы установить переменную среды "URL-адрес службы поддержки клиентов".
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
Пример выходных данных:
[
{
"address": "1845 Denise St",
"city": "Mountain View",
"createDateTime": "2023-01-31T17:22:08.853644",
"email": "ajensen9090+eats@gmail.com",
"id": "id1",
"name": "Angela Jensen",
"rewardPoints": 4,
"state": "CA",
"updateDateTime": "2023-01-31T17:22:09.652117",
"zip": "94043"
}
]
Выполните команду для публикации нового заказа несколько раз и проверьте бонусные баллы клиента с помощью команды curl.
Опубликовать сообщение о новом заказе:
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
Подтверждение начисления бонусных баллов клиентам:
curl $CUSTOMER_SERVICE_URL/customer | jq
Выполните указанную ниже команду, чтобы проверить наличие последних логов:
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
10. Поздравляем!
Поздравляем, вы завершили практическое занятие!
Что мы рассмотрели:
- Как настроить темы Pub/Sub и Eventarc для запуска рабочих процессов
- Как настроить рабочий процесс для выполнения вызовов API к приложению, работающему в GKE Autopilot
- Как настроить рабочий процесс для публикации сообщений в Pub/Sub
- Как запрашивать структурированные журналы рабочих процессов в Cloud Logging и с помощью CLI gcloud.
Что дальше:
Ознакомьтесь с другими обучающими материалами Cymbal Eats:
- Запуск облачных рабочих процессов с помощью Eventarc
- Запуск обработки событий из облачного хранилища.
- Подключение к частному серверу CloudSQL из Cloud Run
- Подключение к полностью управляемым базам данных из Cloud Run
- Защита бессерверного приложения с помощью прокси-сервера с поддержкой идентификации (IAP)
- Запуск заданий Cloud Run с помощью Cloud Scheduler
- Безопасное развертывание в облаке
- Обеспечение безопасности входящего трафика облачных сервисов
Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий эти ресурсы, либо сохраните проект и удалите отдельные ресурсы.
Удаление проекта
Самый простой способ избежать выставления счетов — удалить проект, созданный для этого урока.