1. Descripción general
En este lab, crearás un activador de Eventarc que conecte un tema de Pub/Sub al servicio de Workflows. Eventarc te permite desacoplar la comunicación entre servicios, lo que hace que tu solución sea más extensible y basada en eventos. Crearás un flujo de trabajo que incluye varios pasos para ejecutar un proceso comercial que calcula los puntos de recompensa del cliente por hacer pedidos en Cymbal Eats. El flujo de trabajo enviará varias solicitudes a una aplicación que se ejecuta en GKE Autopilot y publicará un mensaje en el tema de Pub/Sub para notificar a la aplicación Order Service sobre los puntos de recompensa calculados.

¿Qué es GKE Autopilot?
GKE Autopilot es un modo de operación en GKE en el que Google administra la configuración de tu clúster, incluidos los nodos, el escalamiento, la seguridad y otros parámetros de configuración ya establecidos. Los clústeres de Autopilot están optimizados para ejecutar la mayoría de las cargas de trabajo de producción y aprovisionar recursos de procesamiento según tus manifiestos de Kubernetes. La configuración optimizada sigue las prácticas recomendadas y las recomendaciones de GKE para la configuración de clústeres, cargas de trabajo, escalabilidad y seguridad. Para obtener una lista de los parámetros de configuración integrados, consulta la tabla de comparación de Autopilot y Standard.
Con GKE Standard, los usuarios son responsables de administrar los nodos trabajadores y la configuración del grupo de nodos, mientras que GKE se encarga del resto.
Responsabilidades del cliente y de Google cuando se ejecuta en el modo GKE Standard

Con GKE Autopilot, la configuración y la administración del grupo de nodos son responsabilidad de Google. Esto te permite enfocarte en las aplicaciones y los servicios que se ejecutan sobre el clúster.
¿Qué es Eventarc?
Eventarc te permite compilar arquitecturas basadas en eventos sin tener que implementar, personalizar ni mantener la infraestructura subyacente. Eventarc ofrece una solución estandarizada para administrar el flujo de cambios de estado, llamados eventos, entre microservicios separados. Cuando se activa, Eventarc enruta estos eventos a través de suscripciones de Pub/Sub a varios destinos (p. ej., Workflows y Cloud Run) mientras administra la entrega, la seguridad, la autorización, la observabilidad y el manejo de errores por ti.
Proveedores de eventos de Google
- Más de 90 proveedores de Google Cloud Estos proveedores envían eventos directamente desde la fuente (por ejemplo, Cloud Storage) o a través de las entradas de Registros de auditoría de Cloud.
- Proveedores de Pub/Sub. Estos proveedores envían eventos a Eventarc a través de mensajes de Pub/Sub.
Proveedores externos
Los proveedores externos son entidades que no son de Google y que ofrecen una fuente de Eventarc.
Activadores de Eventarc
- Eventos de Cloud Pub/Sub. Eventarc se puede activar mediante mensajes publicados en temas de Pub/Sub.
- Eventos de Registros de auditoría de Cloud (CAL). Los registros de auditoría de Cloud proporcionan registros de auditoría de actividad del administrador y acceso a los datos para cada proyecto, carpeta y organización de Cloud.
- Eventos directos: Eventarc se puede activar mediante varios eventos directos, como una actualización de un bucket de Cloud Storage o una actualización de una plantilla de Firebase Remote Config.
Destinos de eventos
- Workflows
- Cloud Run
- GKE
- Cloud Functions( 2nd gen)

¿Qué es Workflows?
Workflows es un servicio completamente administrado que te permite integrar microservicios, tareas y APIs. Workflows es un servicio sin servidores que se ajustará para satisfacer tu demanda.
Casos de uso de flujos de trabajo:
- Los flujos de trabajo basados en eventos se ejecutan en activadores definidos. Por ejemplo, cuando se envía un pedido nuevo y deseas calcular los puntos de lealtad del cliente. O bien, cuando se cancela un pedido, se puede publicar el evento y todos los servicios interesados lo procesarán.
- Los flujos de trabajo de trabajos por lotes ejecutan trabajos de forma periódica con Cloud Scheduler. Por ejemplo, un trabajo nocturno para verificar los elementos del menú en estado de error y borrarlos.
Workflows es ideal para los flujos de trabajo que organizan servicios. Puedes automatizar procesos que incluyen espera y reintentos de hasta un año.
Beneficios de los flujos de trabajo:
- Configuración en lugar de código: Reduce la deuda técnica trasladando la lógica a la configuración en lugar de escribir código.
- Simplifica tu arquitectura. Los flujos de trabajo con estado te permiten visualizar y supervisar las integraciones de servicios complejas sin dependencias adicionales.
- Incorpora confiabilidad y tolerancia a errores. Controla las fallas con la lógica de reintento predeterminada o personalizada y el manejo de errores, incluso cuando fallan otros sistemas; verifica cada paso en Cloud Spanner para poder realizar un seguimiento del progreso.
- No se requiere mantenimiento. Escala según sea necesario: No tienes que aplicar parches ni mantener nada. Paga solo cuando se ejecutan los flujos de trabajo, sin costo mientras esperas o están inactivos.
En este lab, configurarás un flujo de trabajo basado en eventos.
Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Configura el tema de Pub/Sub y Eventarc para activar Workflows
- Configura el flujo de trabajo para realizar llamadas a la API de la aplicación que se ejecuta en GKE Autopilot
- Configura Workflow para publicar mensajes en Pub/Sub
- Cómo consultar los registros estructurados de Workflows en Cloud Logging y con la CLI de gcloud
Requisitos previos
- Para este lab, se da por sentado que el usuario tiene conocimientos previos sobre los entornos de shell y la consola de Cloud.
- Es útil tener experiencia previa en GKE y Cloud Pub/Sub, pero no es un requisito.
2. Configuración y requisitos
Configuración del proyecto de Cloud
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.



- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla en cualquier momento.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (suele identificarse como
PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usará el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar todo el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.
Configuración del entorno
Para activar Cloud Shell, haz clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

Clona el repositorio y navega al directorio. Copia y pega el siguiente comando en la terminal y presiona Intro:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Ejecuta gke-lab-setup.sh para implementar las dependencias necesarias.
Se crearán los siguientes recursos:
- Clúster e instancia de AlloyDB
- Clúster de GKE Autopilot
./gke-lab-setup.sh
Si se te solicita autorización, haz clic en "Autorizar" para continuar.

La configuración tardará alrededor de 10 minutos.
Espera a que finalice la secuencia de comandos y veas el siguiente resultado antes de ejecutar otros pasos.
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. Clúster de GKE Autopilot
Revisa el clúster de GKE Autopilot
Establece las variables de entorno del proyecto:
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 de la configuración inicial, el clúster se creó con el siguiente comando (no es necesario que ejecutes este comando):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Ejecuta el comando para ver el clúster de GKE Autopilot creado:
gcloud container clusters list
Resultado de muestra:

Ejecuta el comando para almacenar las credenciales del clúster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Implementa una aplicación
A continuación, implementarás una aplicación de servicio al cliente. Este es un microservicio basado en Java que usa el framework de Quarkus.
Navega a la carpeta cymbal-eats/customer-service y ejecuta los siguientes comandos para compilar y subir la imagen del contenedor:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Establece la dirección IP privada de 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
Ejecuta los siguientes comandos para crear el objeto de secretos de Kubernetes que almacenará las credenciales de la base de datos que usará la aplicación de atención al cliente para conectarse a la base de datos:
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
Ejecuta el comando para reemplazar CUSTOMER_SERVICE_IMAGE en el archivo deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Ejecuta el comando para implementar la aplicación:
kubectl apply -f customer-service-deployment.yaml
La aplicación tardará unos minutos en cambiar al estado RUNNING.
Revisa el archivo de especificación de la implementación:
deployment.yaml.tmpl
Esta es la parte de la configuración que especifica los recursos necesarios para ejecutar esta aplicación.
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
Ejecuta el comando para crear la IP externa que se usará en el flujo de trabajo:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Ejecuta el comando para verificar los recursos creados:
kubectl get all
Resultado de muestra:

4. Flujo de trabajo de revisión
Conceptos básicos de Workflows
Un flujo de trabajo consta de una serie de pasos descritos con la sintaxis de Workflows( YAML o JSON).
Después de crear un flujo de trabajo, se implementa, lo que lo deja listo para ejecutarse.
Una ejecución es una ejecución única de la lógica que se incluye en la definición de un flujo de trabajo. Un flujo de trabajo que no se ejecutó no genera cargos. Todas las ejecuciones de flujos de trabajo son independientes, y el escalamiento rápido del producto permite una gran cantidad de ejecuciones simultáneas.
Controles de ejecución
- Pasos: Para crear un flujo de trabajo, debes definir el
stepsy el orden de ejecución deseados con la sintaxis de Workflows. Cada flujo de trabajo debe tener al menos un paso. - Condiciones: Puedes usar un bloque
switchcomo mecanismo de selección que permite que el valor de una expresión controle el flujo de la ejecución de un flujo de trabajo. - Iteraciones: Puedes usar un bucle
forpara iterar sobre una secuencia de números o a través de una colección de datos, como una lista o un mapa. - Subflujos de trabajo: Un subflujo de trabajo funciona de manera similar a una rutina o función en un lenguaje de programación, lo que te permite encapsular un paso o un conjunto de pasos que tu flujo de trabajo repetirá varias veces.
Cómo activar ejecuciones
- Manual: Puedes administrar flujos de trabajo desde la consola de Google Cloud o desde la línea de comandos con Google Cloud CLI.
- Programática: Las bibliotecas cliente de Cloud para la API de Workflows o la API de REST se pueden usar para administrar flujos de trabajo.
- Programado: Puedes usar Cloud Scheduler para ejecutar un flujo de trabajo según un programa en particular.
Argumentos de entorno de ejecución
Puedes acceder a los datos que se pasan en el tiempo de ejecución agregando un campo params a tu flujo de trabajo principal (ubicado en un bloque principal). El bloque principal acepta un solo argumento que puede ser cualquier tipo de datos JSON válido. El campo params nombra la variable que usa el flujo de trabajo para almacenar los datos que pasas.
Lógica del flujo de trabajo
Si no existe un cliente, el flujo de trabajo realizará una llamada a la API para crear primero un cliente y, luego, actualizar los puntos de recompensa. Según el importe total del pedido, el flujo de trabajo seleccionará un multiplicador para calcular los puntos de recompensa del cliente. Consulta el siguiente ejemplo para obtener más detalles.
- 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. Configura e implementa el flujo de trabajo
Ejecuta el comando para ver la dirección IP externa del servicio:
kubectl get svc
Resultado de muestra:

Configura la siguiente variable de entorno con el valor de la IP externa del resultado anterior.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Reemplaza la URL de la aplicación de servicio al cliente en la plantilla de flujo de trabajo:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Configura la ubicación del servicio de Workflows y las variables de entorno del proyecto:
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)')
Crea una cuenta de servicio personalizada para el flujo de trabajo con los siguientes permisos:
- Llama a las APIs de Logging
- Publica mensajes en el tema de 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"
Implementa el flujo de trabajo. El flujo de trabajo está configurado para usar la cuenta de servicio creada en el paso anterior:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
Revisa la fuente del flujo de trabajo y otros detalles(pestaña Triggers). En este momento, no hay activadores configurados para ejecutar este flujo de trabajo. Lo configurarás en el siguiente paso.

6. Configura temas de Pub/Sub y el activador de Eventarc
A continuación, crearás dos temas de Pub/Sub y configurarás un activador de Eventarc.
La aplicación Order Service publicará mensajes en order-topic con información sobre los pedidos nuevos.
El flujo de trabajo publicará mensajes en order-points-topic con información sobre los puntos de recompensa del pedido y el importe total. El servicio de pedidos(que no se implementa como parte de este lab) expone un extremo que usa la suscripción push para que order-points-topic, actualice los puntos de recompensa y el importe total por pedido.
Crea temas de Pub/Sub nuevos:
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
Establece la ubicación del servicio de Eventarc:
gcloud config set eventarc/location ${REGION}
Crea una cuenta de servicio personalizada que usará el activador de Eventarc para ejecutar flujos de trabajo.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
Otorga acceso a la cuenta de servicio para ejecutar flujos de trabajo.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Crea un activador de Eventarc para detectar los mensajes de Pub/Sub y entregarlos a 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
Resultado de muestra:
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.
Revisa el activador de Eventarc creado.

Revisa la suscripción creada para el activador.

Revisa los cambios en el lado del flujo de trabajo. Se agregó un activador nuevo.

7. Flujo de trabajo de prueba

Para simular el servicio de pedidos, enviarás mensajes al tema de Pub/Sub desde Cloud Shell y verificarás los registros del servicio de atención al cliente en la consola de 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}]}'
Resultado de muestra:
messageIds: - '5063709859203105'
Revisa los detalles de la ejecución del flujo de trabajo y los registros.


8. Registro estructurado del flujo de trabajo
El flujo de trabajo está configurado para escribir registros estructurados en formato JSON. Los registros se escriben con la API de Cloud Logging, el recurso workflows.googleapis.com/Workflow y el nombre de registro projects/${PROJECT_ID}/logs/Workflows.
Revisa la configuración de registro a continuación.
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
Abre el Explorador de registros en la consola de Cloud y ejecuta una consulta para encontrar pedidos procesados con un importe total superior a USD 2.
Para mostrar el campo de búsqueda, haz clic en "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"
Resultado de muestra:

Abre Cloud Shell y usa la CLI de gcloud para leer los registros con los siguientes comandos.
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)"
Ejemplo de salida con el formato table:

Ejecuta el siguiente comando para devolver registros en 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
Ejemplo de salida con el formato json:

9. Revisa los registros de clientes
(Pasos opcionales)
Ejecuta los siguientes comandos para establecer la variable de entorno de la URL de atención al cliente.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
Resultado de muestra:
[
{
"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"
}
]
Ejecuta el comando para publicar un pedido nuevo varias veces y verifica los puntos de recompensa del cliente con el comando curl.
Publica un mensaje de pedido nuevo:
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}]}'
Verifica los puntos de recompensa del cliente:
curl $CUSTOMER_SERVICE_URL/customer | jq
Ejecuta el siguiente comando para verificar los registros más recientes:
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. ¡Felicitaciones!
¡Felicitaciones! Completaste el codelab.
Temas abordados:
- Cómo configurar un tema de Pub/Sub y Eventarc para activar Workflows
- Cómo configurar Workflow para realizar llamadas a la API a la aplicación que se ejecuta en GKE Autopilot
- Cómo configurar Workflow para publicar mensajes en Pub/Sub
- Cómo consultar los registros estructurados de Workflows en Cloud Logging y con la CLI de gcloud
Pasos siguientes:
Explora otros codelabs de Cymbal Eats:
- Activación de Cloud Workflows con Eventarc
- Cómo activar el procesamiento de eventos desde Cloud Storage
- Cómo conectarse a Cloud SQL privado desde Cloud Run
- Cómo conectarse a bases de datos completamente administradas desde Cloud Run
- Protege una aplicación sin servidores con Identity-Aware Proxy (IAP)
- Cómo activar trabajos de Cloud Run con Cloud Scheduler
- Implementación segura en Cloud Run
- Protección del tráfico de entrada de Cloud Run
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.