1. Visão geral
Neste laboratório, você vai criar um gatilho do Eventarc que conecta um tópico do Pub/Sub ao serviço do Workflows. Com o Eventarc, é possível separar a comunicação entre serviços, tornando sua solução mais extensível e orientada a eventos. Você vai criar um fluxo de trabalho com várias etapas para executar um processo de negócios e calcular os pontos de recompensa do cliente por fazer pedidos no Cymbal Eats. O fluxo de trabalho vai enviar várias solicitações para um aplicativo em execução no GKE Autopilot e publicar uma mensagem no tópico do Pub/Sub para notificar o aplicativo Order Service sobre os pontos de recompensa calculados.

O que é o Autopilot do GKE?
O GKE Autopilot é um modo de operação no GKE em que o Google gerencia a configuração do cluster, incluindo nós, escalonamento, segurança e outras configurações predefinidas. Os clusters do Autopilot são otimizados para executar a maioria das cargas de trabalho de produção e provisionar recursos de computação com base nos manifestos do Kubernetes. A configuração simplificada segue as práticas recomendadas e recomendações do GKE para configuração, escalonabilidade e segurança do cluster e da carga de trabalho. Para conferir uma lista de configurações integradas, consulte a tabela de Comparação entre Autopilot e Standard.
Com o GKE Standard, os usuários são responsáveis por gerenciar os nós de trabalho e a configuração do pool de nós, enquanto o restante é cuidado pelo GKE.
Responsabilidades do cliente e do Google ao executar no modo GKE Standard

Com o GKE Autopilot, a configuração e o gerenciamento do pool de nós são responsabilidade do Google. Assim, você pode se concentrar em aplicativos e serviços executados no cluster.
O que é o Eventarc?
Com o Eventarc, é possível criar arquiteturas orientadas a eventos sem precisar implementar, personalizar ou manter a infraestrutura subjacente. O Eventarc oferece uma solução padronizada para gerenciar o fluxo de mudanças de estado, chamadas de eventos, entre microsserviços separados. Quando acionado, o Eventarc encaminha esses eventos por meio de assinaturas do Pub/Sub para vários destinos (por exemplo, Workflows, Cloud Run) e gerencia entrega, segurança, autorização, observabilidade e tratamento de erros para você.
Provedores de eventos do Google
- Mais de 90 provedores do Google Cloud. Esses provedores enviam eventos diretamente da origem (por exemplo, Cloud Storage) ou usando entradas de registros de auditoria do Cloud.
- Provedores do Pub/Sub. Esses provedores enviam eventos para o Eventarc usando mensagens do Pub/Sub.
Provedores terceirizados
Provedores terceirizados são entidades que não são do Google e oferecem uma origem do Eventarc.
Gatilhos do Eventarc
- Eventos do Cloud Pub/Sub. O Eventarc pode ser acionado por mensagens publicadas nos tópicos do Pub/Sub.
- Eventos de registros de auditoria do Cloud (CAL). Os Registros de auditoria do Cloud fornecem registros de auditoria de atividade do administrador e acesso a dados para cada projeto na nuvem, pasta e organização.
- Eventos diretos. O Eventarc pode ser acionado por vários eventos diretos, como uma atualização de um bucket do Cloud Storage ou de um modelo da Configuração remota do Firebase.
Destinos de eventos
- Fluxos de trabalho
- Cloud Run
- GKE
- Cloud Functions( 2ª geração)

O que é o Workflows?
O Workflows é um serviço totalmente gerenciado que permite integrar microsserviços, tarefas e APIs. O Workflows é um serviço sem servidor que será escalonado para atender à sua demanda.
Casos de uso dos fluxos de trabalho:
- Os fluxos de trabalho orientados a eventos são executados em acionadores definidos. Por exemplo, quando um novo pedido é enviado e você quer calcular os pontos de fidelidade do cliente. Ou quando um pedido é cancelado, o evento pode ser publicado, e todos os serviços interessados vão processá-lo.
- Os fluxos de trabalho de jobs em lote executam jobs regularmente usando o Cloud Scheduler. Por exemplo, um job noturno para verificar itens de menu com falha e excluí-los.
O Workflows é ideal para fluxos de trabalho que orquestram serviços. Você pode automatizar processos que incluem espera e novas tentativas por até um ano.
Benefícios dos fluxos de trabalho:
- Configuração em vez de código:reduza o débito técnico movendo a lógica para a configuração em vez de escrever código.
- Simplifique sua arquitetura. Os fluxos de trabalho com estado permitem visualizar e monitorar integrações de serviço complexas sem outras dependências.
- Incorpore confiabilidade e tolerância a falhas. Controle falhas com a lógica de repetição padrão ou personalizada e com o tratamento de erros mesmo quando outros sistemas falharem, estabelecendo pontos de verificação em cada etapa do Cloud Spanner para ajudar no acompanhamento do progresso.
- Manutenção zero Escalone conforme a necessidade: não há nada para corrigir ou manter. Pague apenas quando seus fluxos de trabalho forem executados. Não há cobranças durante o tempo de espera ou inatividade.
Neste laboratório, você vai configurar um fluxo de trabalho orientado a eventos.
O que você vai aprender
Neste laboratório, você vai aprender a:
- Configurar o tópico do Pub/Sub e o Eventarc para acionar fluxos de trabalho
- Configurar o Workflow para fazer chamadas de API para o aplicativo em execução no GKE Autopilot
- Configurar o Workflow para publicar mensagens no Pub/Sub
- Como consultar registros estruturados de fluxos de trabalho no Cloud Logging e usando a CLI gcloud
Pré-requisitos
- Para fazer este laboratório, é preciso saber usar o console do Cloud e os ambientes do Cloud Shell.
- Ter experiência com o GKE e o Cloud Pub/Sub é útil, mas não obrigatório.
2. Configuração e requisitos
Configuração do projeto do Cloud
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google É possível atualizar o local a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para desligar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Configuração do ambiente
Clique no ícone à direita da barra de pesquisa para ativar o Cloud Shell.

Clone o repositório e navegue até o diretório. Copie e cole o comando abaixo no terminal e pressione "Enter":
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Implante as dependências necessárias executando o gke-lab-setup.sh
Os seguintes recursos serão criados:
- Cluster e instância do AlloyDB
- Cluster do Autopilot do GKE
./gke-lab-setup.sh
Se for preciso autorizar, clique em "Autorizar" para continuar.

A configuração leva cerca de 10 minutos.
Aguarde até que o script seja concluído e a saída abaixo apareça antes de executar outras etapas.
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. Cluster do Autopilot do GKE
Analisar o cluster do Autopilot do GKE
Defina as variáveis de ambiente do projeto:
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)')
Como parte da configuração inicial, o cluster foi criado usando o comando abaixo (não é necessário executar esse comando):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Execute o comando para conferir o cluster do GKE Autopilot criado:
gcloud container clusters list
Exemplo de resposta:

Execute o comando para armazenar as credenciais do cluster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Implementar um aplicativo
Em seguida, você vai implantar um aplicativo de atendimento ao cliente. É um microsserviço baseado em Java que usa o framework Quarkus.
Acesse a pasta cymbal-eats/customer-service e execute os comandos abaixo para criar e fazer upload da imagem do contêiner:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Defina o endereço IP particular do 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
Execute os comandos abaixo para criar um objeto de secrets do Kubernetes que armazena as credenciais do banco de dados usadas pelo aplicativo de atendimento ao cliente para se conectar ao banco de dados:
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
Execute o comando para substituir CUSTOMER_SERVICE_IMAGE no arquivo deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Execute o comando para implantar o aplicativo:
kubectl apply -f customer-service-deployment.yaml
A transição do aplicativo para o estado "EM EXECUÇÃO" leva alguns instantes.
Revise o arquivo de especificação da implantação:
deployment.yaml.tmpl
Esta é a parte da configuração que especifica os recursos necessários para executar o aplicativo.
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
Execute o comando para criar o IP externo que será usado no fluxo de trabalho:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Execute o comando para verificar os recursos criados:
kubectl get all
Exemplo de resposta:

4. Fluxo de trabalho de revisão
Conceitos básicos do Workflows
Um fluxo de trabalho consiste em uma série de etapas descritas usando a sintaxe do Workflows( YAML ou JSON).
Depois que um fluxo de trabalho é criado, ele é implantado, ficando pronto para execução.
Uma execução é uma única execução da lógica contida na definição de um fluxo de trabalho. Um fluxo de trabalho que não foi executado não gera cobranças. Todas as execuções de fluxo de trabalho são independentes, e o escalonamento rápido do produto permite um grande número de execuções simultâneas.
Controles de execução
- Etapas: para criar um fluxo de trabalho, defina as
stepse a ordem de execução desejadas usando a sintaxe do Workflows. Cada fluxo de trabalho precisa ter pelo menos uma etapa. - Condições: é possível usar um bloco
switchcomo um mecanismo de seleção que permite que o valor de uma expressão controle o fluxo da execução de um fluxo de trabalho. - Iterações: use uma repetição
forpara iterar uma sequência de números ou uma coleção de dados, como uma lista ou um mapa. - Subfluxos de trabalho: um subfluxo de trabalho funciona de maneira semelhante a uma rotina ou função em uma linguagem de programação, permitindo encapsular uma etapa ou um conjunto de etapas que serão repetidas várias vezes pelo fluxo de trabalho.
Como acionar execuções
- Manual: é possível gerenciar fluxos de trabalho no console do Google Cloud ou na linha de comando usando a CLI do Google Cloud.
- Programático: as bibliotecas de cliente do Cloud para a API Workflows ou a API REST podem ser usadas para gerenciar fluxos de trabalho.
- Programado: use o Cloud Scheduler para executar um fluxo de trabalho em uma programação específica.
Argumentos de ambiente de execução
Os dados transmitidos no ambiente de execução podem ser acessados adicionando um campo params ao fluxo de trabalho principal (posicionado em um bloco principal). O bloco principal aceita um único argumento que seja qualquer tipo de dados JSON válido. O campo "params" nomeia a variável que o fluxo de trabalho usa para armazenar os dados transmitidos.
Lógica do fluxo de trabalho
Se um cliente não existir, o fluxo de trabalho fará uma chamada de API para criar um cliente primeiro e depois atualizar os pontos de recompensa. Com base no valor total do pedido, o fluxo de trabalho vai selecionar um multiplicador para calcular os pontos de recompensa do cliente. Confira um exemplo abaixo para mais detalhes.
- 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. Configurar e implantar o fluxo de trabalho
Execute o comando para ver o endereço IP externo do serviço:
kubectl get svc
Exemplo de resposta:

Defina a variável de ambiente abaixo usando o valor do IP externo da saída anterior.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Substitua o URL do aplicativo de atendimento ao cliente no modelo de fluxo de trabalho:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Defina o local para as variáveis de ambiente do serviço Workflows e do projeto:
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)')
Crie uma conta de serviço personalizada para o fluxo de trabalho com as seguintes permissões:
- Chamar APIs Logging
- Publicar mensagens no tópico do Pub/Sub
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"
Implante o fluxo de trabalho. O fluxo de trabalho está configurado para usar a conta de serviço criada na etapa anterior:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
Revise a origem do fluxo de trabalho e outros detalhes(guia "Gatilhos"). No momento, não há gatilhos configurados para executar este fluxo de trabalho. Você vai configurar isso na próxima etapa.

6. Configurar tópicos do Pub/Sub e gatilho do Eventarc
Em seguida, crie dois tópicos do Pub/Sub e configure um gatilho do Eventarc.
O aplicativo Order Service vai publicar mensagens em order-topic com informações sobre novos pedidos.
O fluxo de trabalho vai publicar mensagens em order-points-topic com informações sobre os pontos de recompensa do pedido e o valor total. O Order Service(parte não implantada deste laboratório) expõe um endpoint usado pela assinatura por push para order-points-topic, atualizar os pontos de recompensa e o valor total por pedido.
Crie novos tópicos do 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
Defina o local do serviço do Eventarc:
gcloud config set eventarc/location ${REGION}
Crie uma conta de serviço personalizada que será usada pelo gatilho do Eventarc para executar fluxos de trabalho.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
Conceda acesso à conta de serviço para executar fluxos de trabalho.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Crie um gatilho do Eventarc para detectar mensagens do Pub/Sub e entregá-las ao Workflows.
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
Exemplo de resposta:
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.
Revise o gatilho do Eventarc criado.

Revise a assinatura criada para o gatilho.

Revise as mudanças no fluxo de trabalho. Um novo acionador foi adicionado.

7. Fluxo de trabalho de teste

Para simular o serviço de pedidos, você vai enviar mensagens para o tópico do Pub/Sub no Cloud Shell e verificar os registros do serviço de atendimento ao cliente no console do 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}]}'
Exemplo de resposta:
messageIds: - '5063709859203105'
Revise os detalhes da execução do fluxo de trabalho e os registros.


8. Geração de registros estruturados do fluxo de trabalho
O fluxo de trabalho é configurado para gravar registros estruturados no formato JSON. Os registros são gravados usando a API Cloud Logging, o recurso workflows.googleapis.com/Workflow e o nome de registro projects/${PROJECT_ID}/logs/Workflows.
Revise a configuração de geração de registros abaixo.
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
Abra o Análise de registros no console do Cloud e execute uma consulta para encontrar pedidos processados com um valor total superior a US $2.
Para mostrar o campo de consulta de pesquisa, clique em "Mostrar consulta".

resource.type="workflows.googleapis.com/Workflow" AND
jsonPayload.totalAmount > 2 AND
timestamp >= "2023-01-01T00:00:00Z" AND
timestamp <= "2024-12-31T23:59:59Z"
Exemplo de resposta:

Abra o Cloud Shell e use a CLI gcloud para ler registros com os comandos abaixo.
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)"
Exemplo de saída usando o formato table:

Execute o comando abaixo para retornar registros no formato 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
Exemplo de saída usando o formato json:

9. Analisar registros de clientes
(Etapas opcionais)
Execute os comandos abaixo para definir a variável de ambiente do URL do atendimento ao cliente.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
Exemplo de resposta:
[
{
"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"
}
]
Execute o comando para publicar um novo pedido várias vezes e verifique os pontos de recompensa do cliente com o comando curl.
Publicar mensagem de novo pedido:
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}]}'
Verifique os pontos de recompensa do cliente:
curl $CUSTOMER_SERVICE_URL/customer | jq
Execute o comando abaixo para verificar os registros mais recentes:
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. Parabéns!
Parabéns, você concluiu o codelab.
O que aprendemos:
- Como configurar o tópico do Pub/Sub e o Eventarc para acionar fluxos de trabalho
- Como configurar o fluxo de trabalho para fazer chamadas de API para um aplicativo em execução no GKE Autopilot
- Como configurar o Workflow para publicar mensagens no Pub/Sub
- Como consultar registros estruturados de fluxos de trabalho no Cloud Logging e usando a CLI gcloud
Qual é a próxima etapa?
Confira outros codelabs do Cymbal Eats:
- Acionar o Cloud Workflows com o Eventarc
- Acionamento do processamento de eventos do Cloud Storage
- Como se conectar a um Cloud SQL particular pelo Cloud Run
- Como se conectar no Cloud Run a bancos de dados totalmente gerenciados
- Proteger o aplicativo sem servidor com o Identity-Aware Proxy (IAP)
- Como acionar jobs do Cloud Run com o Cloud Scheduler
- Como fazer implantações com segurança no Cloud Run
- Como proteger o tráfego de entrada do Cloud Run
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto ou mantenha o projeto e exclua cada um dos recursos.
Excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para este tutorial.