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 Workflows. O Eventarc permite desacoplar 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 na Cymbal Eats. O fluxo de trabalho vai enviar várias solicitações para um aplicativo em execução no Autopilot do GKE e publicar uma mensagem no tópico do Pub/Sub para notificar o aplicativo do serviço de pedidos sobre os pontos de recompensa calculados.
O que é o Autopilot do GKE?
O Autopilot do GKE é um modo de operação 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 do GKE e as recomendações para configuração de clusters e cargas de trabalho, escalonabilidade e segurança. Para conferir uma lista de configurações integradas, consulte a tabela Comparação entre o Autopilot e o 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 é feito pelo GKE.
Responsabilidades do cliente e do Google na execução no modo GKE Standard
No GKE Autopilot, a configuração e o gerenciamento do pool de nós é responsabilidade do Google. Isso permite que você se concentre em aplicativos e serviços executados no cluster.
O que é o Eventarc?
O Eventarc permite que você crie 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 alterações de estado, chamadas de eventos, entre microsserviços separados. Quando acionado, o Eventarc encaminha esses eventos usando assinaturas do Pub/Sub para vários destinos (por exemplo, Workflows, Cloud Run) enquanto gerencia a entrega, a segurança, a autorização, a observabilidade e o tratamento de erros para você.
Provedores de eventos do Google
- Mais de 90 provedores do Google Cloud. Esses provedores enviam eventos diretamente da origem (Cloud Storage, por exemplo) ou pelas entradas dos Registros de auditoria do Cloud.
- provedores do Pub/Sub. Esses provedores enviam eventos ao Eventarc usando mensagens do Pub/Sub.
Provedores terceirizados
Provedores terceirizados são entidades que não são do Google que oferecem uma fonte do Eventarc.
Acionadores do Eventarc
- Eventos do Cloud Pub/Sub. O Eventarc pode ser acionado por mensagens publicadas em 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, pasta e organização do Cloud.
- 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 evento
- Fluxos de trabalho
- Cloud Run
- GKE
- Cloud Functions( 2nd gen)
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 e será escalonado para atender à sua demanda.
Casos de uso dos fluxos de trabalho:
- Fluxos de trabalho orientados por 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 o processarão.
- Os fluxos de trabalho de jobs em lote executam jobs regularmente usando o Cloud Scheduler. Por exemplo, um job noturno para verificar se há itens de menu com status de falha e excluí-los.
O Workflows é ideal para fluxos de trabalho que orquestram serviços. É possível automatizar processos que incluem espera e novas tentativas por até um ano.
Benefícios do Workflows:
- Configuração sobre 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ços complexas sem outras dependências.
- Incorporar confiabilidade e tolerância a falhas. Controle as falhas com lógica de repetição padrão ou personalizada e tratamento de erros, mesmo quando outros sistemas falharem, marcando cada etapa para o Cloud Spanner para ajudar você a acompanhar o progresso.
- Manutenção zero. Escalone conforme necessário: não é necessário corrigir nem manter nada. Pague somente quando seus fluxos de trabalho forem executados, sem custo enquanto você aguarda ou está inativo.
Neste laboratório, você vai configurar um fluxo de trabalho orientado por eventos.
O que você vai aprender
Você vai aprender a:
- Configurar o tópico do Pub/Sub e o Eventarc para acionar fluxos de trabalho
- Configure o fluxo de trabalho para fazer chamadas de API a um aplicativo em execução no Autopilot do GKE
- Configurar o fluxo de trabalho para publicar mensagens no Pub/Sub
- Como consultar registros estruturados do Workflows no Cloud Logging e usar a gcloud CLI.
Pré-requisitos
- Para fazer este laboratório, é preciso ter familiaridade com o console do Cloud e os ambientes do Cloud Shell.
- Ter experiência anterior com o GKE e o Cloud Pub/Sub é útil, mas não é obrigatório.
2. Configuração e requisitos
Configuração do projeto do Google 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 Você pode atualizar 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. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como
PROJECT_ID
. Se você não gostar do ID gerado, poderá gerar outro ID aleatório. Como alternativa, você pode tentar o seu próprio e ver se ele está disponível. Ela não pode ser alterada após essa etapa e permanecerá durante a duração do projeto. - Para sua informação, há um terceiro valor, um Número de 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 encerrar os recursos e não gerar faturamento além deste tutorial, exclua os recursos criados ou exclua 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
Ative o Cloud Shell clicando no ícone à direita da barra de pesquisa.
Clone o repositório, acesse 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 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 levará cerca de 10 minutos.
Aguarde a conclusão do script e a saída abaixo 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. Você não precisa executar este comando:
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Execute o comando para visualizar o cluster do Autopilot do GKE 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
Agora você implantará um aplicativo de atendimento ao cliente. Esse é um microsserviço baseado em Java que usa o framework Quarkus (em inglês).
Navegue até 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 o objeto de secrets do Kubernetes e armazenar as credenciais do banco de dados que serão 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
Levará alguns instantes para o aplicativo passar para o estado RUNNING.
Revise o arquivo de especificação de implantação:
deployment.yaml.tmpl
Esta é a parte da configuração que especifica os recursos necessários para executar este 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 principais 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, o que o deixa 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 alto número de execuções simultâneas.
Controles de execução
- Etapas: para criar um fluxo de trabalho, defina o
steps
desejado e a ordem de execução usando a sintaxe do Workflows. Todo fluxo de trabalho precisa ter pelo menos uma etapa. - Condições: é possível usar um bloco
switch
como mecanismo de seleção que permite que o valor de uma expressão controle o fluxo de execução de um fluxo de trabalho. - Iterações: use uma repetição
for
para iterar em uma sequência de números ou em uma coleção de dados, como uma lista ou um mapa. - Subfluxos de trabalho: funcionam 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 seu fluxo de trabalho repetirá várias vezes.
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ática: as bibliotecas de cliente do Cloud para a API Workflows ou a API REST podem ser usadas para gerenciar fluxos de trabalho.
- Programado: é possível usar o Cloud Scheduler para executar um fluxo de trabalho em uma programação específica.
Argumentos do ambiente de execução
Para acessar os dados transmitidos no momento da execução, adicione um campo params
ao seu fluxo de trabalho principal (colocado em um bloco principal). O bloco principal aceita um único argumento, que é 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 vai fazer uma chamada de API para criar um cliente e depois atualizar os pontos de recompensa. Com base no valor total do pedido, o fluxo de trabalho seleciona um multiplicador para calcular os pontos de recompensa para o cliente. Confira o 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 de 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 do fluxo de trabalho:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Defina o local do serviço do Workflows e das variáveis de ambiente 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:
- APIs de registro de chamadas
- Publicar mensagens no tópico do 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"
Implantar fluxo de trabalho. O fluxo de trabalho é 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á acionadores configurados para executar esse fluxo de trabalho. Você vai configurar isso na próxima etapa.
6. Configurar tópicos do Pub/Sub e o gatilho do Eventarc
Em seguida, você vai criar dois tópicos do Pub/Sub e configurar um gatilho do Eventarc.
O aplicativo do serviço de pedidos publicará mensagens em order-topic
com informações sobre novos pedidos.
O fluxo de trabalho publicará mensagens em order-points-topic
com informações sobre os pontos de recompensa do pedido e o valor total. O serviço de pedidos(parte não implantada deste laboratório) expõe um endpoint usado pela assinatura push de order-points-topic,
para 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"
Criar 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 acionador do Eventarc criado.
Analise a assinatura criada para o acionador.
Analisar as mudanças no fluxo de trabalho. Um novo acionador foi adicionado.
7. Fluxo de trabalho de teste
Para simular o serviço de pedido, envie mensagens para o tópico do Pub/Sub pelo Cloud Shell e verifique os registros do 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 e os registros de execução do fluxo de trabalho.
8. Geração de registros estruturados de fluxo de trabalho
O fluxo de trabalho está 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 com o nome de registro projects/${PROJECT_ID}/logs/Workflows
.
Revise a configuração da 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 a 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 os 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 os registros do cliente
(Etapas opcionais)
Execute os comandos abaixo para definir a variável de ambiente do URL de 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 um comando para publicar um novo pedido várias vezes e verificar os pontos de recompensa do cliente com o comando curl.
Publicar nova mensagem do 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 a um aplicativo em execução no Autopilot do GKE
- Como configurar o fluxo de trabalho para publicar mensagens no Pub/Sub
- Como consultar registros estruturados do Workflows no Cloud Logging e usar a gcloud CLI.
O que vem em seguida:
Conheça outros codelabs da Cymbal Eats:
- Como acionar fluxos de trabalho do Cloud com o Eventarc
- Como acionar o processamento de eventos no Cloud Storage
- Como se conectar ao CloudSQL particular pelo Cloud Run
- Como se conectar a bancos de dados totalmente gerenciados pelo Cloud Run
- Aplicativo seguro sem servidor com o Identity Aware Proxy (IAP)
- Como acionar jobs do Cloud Run com o Cloud Scheduler
- Como implantar 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.