О практической работе
1. Обзор
В ходе этой лабораторной работы вы создадите триггер Eventarc, который подключает тему Pub/Sub к службе рабочих процессов. Eventarc позволяет отделить взаимодействие между сервисами, что делает ваше решение более расширяемым и управляемым событиями. Вы создадите рабочий процесс, включающий несколько шагов для выполнения бизнес-процесса для расчета бонусных баллов клиентов за заказы в Cymbal Eats. Рабочий процесс отправит несколько запросов в приложение, работающее на автопилоте GKE, и опубликует сообщение в теме Pub/Sub, чтобы уведомить приложение службы заказов о рассчитанных баллах вознаграждения.
Что такое автопилот GKE?
GKE Autopilot — это режим работы в GKE, в котором Google управляет конфигурацией вашего кластера, включая ваши узлы, масштабирование, безопасность и другие предварительно настроенные параметры. Кластеры автопилота оптимизированы для выполнения большинства производственных рабочих нагрузок и выделения вычислительных ресурсов на основе манифестов Kubernetes. Оптимизированная конфигурация соответствует лучшим практикам и рекомендациям GKE по настройке кластера и рабочей нагрузки, масштабируемости и безопасности. Список встроенных настроек см. в сравнительной таблице «Автопилот» и «Стандарт» .
В GKE Standard пользователи несут ответственность за управление рабочими узлами и конфигурацией пула узлов, а GKE позаботится обо всем остальном.
Обязанности клиента и Google при работе в стандартном режиме GKE
В GKE Autopilot ответственность за настройку и управление пулом узлов лежит на Google. Это позволяет вам сосредоточиться на приложениях и службах, которые работают поверх кластера.
Что такое Эвентарк?
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.
Направления мероприятий
- Рабочие процессы
- Облачный бег
- ГКЭ
- Облачные функции ( 2-го поколения )
Что такое рабочие процессы?
Рабочие процессы — это полностью управляемый сервис, позволяющий интегрировать микросервисы, задачи и API. Workflows — это бессерверная служба, которая масштабируется в соответствии с вашими потребностями.
Варианты использования рабочих процессов:
- Рабочие процессы, управляемые событиями, выполняются по определенным триггерам. Например, когда отправлен новый заказ и вы хотите подсчитать баллы лояльности клиентов. Или при отмене заказа событие можно опубликовать, и все заинтересованные сервисы обработают его.
- Рабочие процессы пакетных заданий регулярно запускают задания с помощью Cloud Scheduler. Например, ночное задание по проверке пунктов меню в статусе сбоя и их удалению.
Рабочие процессы идеально подходят для рабочих процессов, которые координируют службы. Вы можете автоматизировать процессы, включающие ожидание и повторные попытки на срок до одного года.
Преимущества рабочих процессов:
- Конфигурация важнее кода. Уменьшите технический долг, перенеся логику в конфигурацию, а не написав код.
- Упростите свою архитектуру. Рабочие процессы с отслеживанием состояния позволяют визуализировать и отслеживать интеграцию сложных сервисов без дополнительных зависимостей.
- Обеспечьте надежность и отказоустойчивость. Контролируйте сбои с помощью стандартной или настраиваемой логики повторов и обработки ошибок, даже если другие системы выходят из строя, — проверяйте каждый шаг в Cloud Spanner, чтобы помочь вам отслеживать прогресс.
- Нулевое обслуживание. Масштабируйте по мере необходимости: не нужно ничего исправлять или поддерживать. Платите только тогда, когда ваши рабочие процессы выполняются, без каких-либо затрат во время ожидания или неактивности.
В ходе этой лабораторной работы вы настроите рабочий процесс, управляемый событиями.
Что вы узнаете
В этой лабораторной работе вы научитесь делать следующее:
- Настройте тему Pub/Sub и Eventarc для запуска рабочих процессов.
- Настройте рабочий процесс для выполнения вызовов API к приложению, работающему на автопилоте GKE.
- Настройте рабочий процесс для публикации сообщений в Pub/Sub.
- Как запрашивать структурированные журналы рабочих процессов в Cloud Logging и с помощью интерфейса командной строки gcloud
Предварительные условия
- Эта лабораторная работа предполагает знакомство со средами Cloud Console и Cloud Shell.
- Предыдущий опыт работы с GKE и Cloud Pub/Sub будет полезен, но не обязателен.
2. Настройка и требования
Настройка облачного проекта
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы можете обновить его в любое время.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Кроме того, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага, и он останется в силе на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить весь проект. Новые пользователи 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 Autopilot
./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 Autopilot
Установите переменные среды проекта:
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
Приложению потребуется несколько минут, чтобы перейти в состояние РАБОТАЕТ.
Просмотрите файл спецификации развертывания:
развертывание.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.
- Программное обеспечение . Облачные клиентские библиотеки для 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
Установите местоположение для службы рабочих процессов и переменных среды проекта:
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-topic
с информацией о новых заказах.
Workflow будет публиковать сообщения в теме 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. Журналы записываются с использованием Cloud Logging API, ресурса 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
Откройте обозреватель журналов в 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
- Как настроить рабочий процесс для публикации сообщений в Pub/Sub
- Как запрашивать структурированные журналы рабочих процессов в Cloud Logging и с помощью интерфейса командной строки gcloud
Что дальше:
Ознакомьтесь с другими лабораториями Cymbal Eats:
- Запуск облачных рабочих процессов с помощью Eventarc
- Запуск обработки событий из облачного хранилища
- Подключение к частному CloudSQL из Cloud Run
- Подключение к полностью управляемым базам данных из Cloud Run
- Безопасное бессерверное приложение с прокси-сервером с функцией идентификации (IAP)
- Запуск заданий Cloud Run с помощью Cloud Scheduler
- Безопасное развертывание в Cloud Run
- Защита входящего трафика Cloud Run
Очистить
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.
Удаление проекта
Самый простой способ избавиться от выставления счетов — удалить проект, созданный вами для этого руководства.