1. Présentation
Dans cet atelier, vous allez créer un déclencheur Eventarc qui connecte un sujet Pub/Sub au service Workflows. Eventarc vous permet de découpler la communication entre les services, ce qui rend votre solution plus extensible et basée sur des événements. Vous allez créer un workflow comprenant plusieurs étapes pour exécuter un processus métier permettant de calculer les points de fidélité des clients qui commandent sur Cymbal Eats. Workflow enverra plusieurs requêtes à une application exécutée sur GKE Autopilot et publiera un message sur le sujet Pub/Sub pour informer l'application Order Service des points de fidélité calculés.

Qu'est-ce que GKE Autopilot ?
GKE Autopilot est un mode de fonctionnement de GKE dans lequel Google gère la configuration de votre cluster, y compris vos nœuds, le scaling, la sécurité et d'autres paramètres préconfigurés. Les clusters Autopilot sont optimisés pour exécuter la plupart des charges de travail de production et provisionner des ressources de calcul en fonction de vos fichiers manifestes Kubernetes. La configuration simplifiée respecte les bonnes pratiques et recommandations de GKE concernant la configuration, l'évolutivité et la sécurité des clusters et des charges de travail. Pour obtenir la liste des paramètres intégrés, consultez le tableau de comparaison des modes Autopilot et Standard.
Avec GKE Standard, les utilisateurs sont responsables de la gestion des nœuds de calcul et de la configuration des pools de nœuds, tandis que GKE s'occupe du reste.
Responsabilités du client et de Google lors de l'exécution en mode GKE Standard

Avec GKE Autopilot, Google est responsable de la configuration et de la gestion des pools de nœuds. Vous pouvez ainsi vous concentrer sur les applications et les services qui s'exécutent au-dessus du cluster.
Qu'est-ce qu'Eventarc ?
Eventarc vous permet de créer des architectures basées sur des événements sans avoir à implémenter, à personnaliser ni à gérer l'infrastructure sous-jacente. Eventarc offre une solution standardisée pour gérer le flux des changements d'état, appelés événements, entre les microservices découplés. Lorsqu'il est déclenché, Eventarc achemine ces événements via des abonnements Pub/Sub vers différentes destinations (par exemple, Workflows, Cloud Run) tout en gérant la diffusion, la sécurité, les autorisations, l'observabilité et la gestion des erreurs à votre place.
Fournisseurs d'événements Google
- Plus de 90 fournisseurs Google Cloud. Ces fournisseurs envoient des événements directement depuis la source (Cloud Storage, par exemple) ou via des entrées de journaux d'audit Cloud.
- Fournisseurs Pub/Sub. Ces fournisseurs envoient des événements à Eventarc à l'aide de messages Pub/Sub.
Fournisseurs tiers
Les fournisseurs tiers sont des entités autres que Google qui proposent une source Eventarc.
Déclencheurs Eventarc
- Événements Cloud Pub/Sub Eventarc peut être déclenché par les messages publiés dans les sujets Pub/Sub.
- Événements Cloud Audit Logs (CAL) Cloud Audit Logging fournit des journaux d'audit pour les activités d'administration et l'accès aux données pour chaque projet, dossier et organisation Cloud.
- Événements directs : Eventarc peut être déclenché par divers événements directs, tels qu'une mise à jour d'un bucket Cloud Storage ou une mise à jour d'un modèle Firebase Remote Config.
Destinations d'événement
- Workflows
- Cloud Run
- GKE
- Cloud Functions( 2e génération)

Qu'est-ce que Workflows ?
Workflows est un service entièrement géré qui vous permet d'intégrer des microservices, des tâches et des API. Workflows est un service sans serveur qui s'adapte à votre demande.
Cas d'utilisation des workflows :
- Les workflows basés sur des événements s'exécutent sur des déclencheurs définis. Par exemple, lorsqu'une nouvelle commande est passée et que vous souhaitez calculer les points de fidélité du client. De même, lorsqu'une commande est annulée, l'événement peut être publié et tous les services intéressés le traiteront.
- Les workflows de jobs par lot exécutent des jobs de manière régulière à l'aide de Cloud Scheduler. Par exemple, une tâche nocturne permettant de rechercher les éléments de menu dont l'état est "Échec" et de les supprimer.
Workflows est idéal pour les workflows qui orchestrent des services. Vous pouvez automatiser les processus, y compris les délais d'attente et les nouvelles tentatives jusqu'à un an.
Avantages des workflows :
- Configuration plutôt que code : réduisez la dette technique en transférant la logique vers la configuration plutôt qu'en écrivant du code.
- Simplifiez votre architecture. Les workflows avec état vous permettent de visualiser et de surveiller des intégrations de services complexes sans dépendances supplémentaires.
- Intégrez la fiabilité et la tolérance aux pannes. Contrôlez les échecs grâce à la logique de nouvelle tentative par défaut ou personnalisée, ainsi qu'à la gestion des erreurs même lorsque d'autres systèmes échouent. Vérifiez chaque étape du transfert vers Cloud Spanner pour suivre votre progression.
- Aucune maintenance nécessaire. Évoluez selon vos besoins : vous n'avez rien à corriger ni à gérer. Vous ne payez que lorsque vos workflows s'exécutent, et non lorsqu'ils sont inactifs ou en attente.
Dans cet atelier, vous allez configurer un workflow événementiel.
Objectifs de l'atelier
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
- Configurer un sujet Pub/Sub et Eventarc pour déclencher des workflows
- Configurer un workflow pour effectuer des appels d'API à une application exécutée sur GKE Autopilot
- Configurer Workflow pour publier des messages dans Pub/Sub
- Interroger les journaux structurés Workflows dans Cloud Logging et à l'aide de la gcloud CLI
Prérequis
- Dans cet atelier, nous considérons que vous connaissez la console Cloud et les environnements Cloud Shell.
- Une expérience préalable avec GKE et Cloud Pub/Sub est utile, mais pas indispensable.
2. Préparation
Configuration du projet Cloud
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)



- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le modifier à tout moment.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID du projet (généralement identifié par
PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.
Configuration de l'environnement
Activez Cloud Shell en cliquant sur l'icône à droite de la barre de recherche.

Clonez le dépôt et accédez au répertoire. Pour ce faire, copiez et collez la commande ci-dessous dans le terminal, puis appuyez sur Entrée :
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Déployez les dépendances requises en exécutant gke-lab-setup.sh.
Les ressources suivantes seront créées :
- Cluster et instance AlloyDB
- Cluster GKE Autopilot
./gke-lab-setup.sh
Si vous êtes invité à donner votre autorisation, cliquez sur "Autoriser" pour continuer.

La configuration prendra environ 10 minutes.
Attendez que le script soit terminé et que le résultat ci-dessous s'affiche avant d'exécuter les autres étapes.
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 GKE Autopilot
Examiner un cluster GKE Autopilot
Définissez les variables d'environnement du projet :
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)')
Lors de la configuration initiale, le cluster a été créé à l'aide de la commande ci-dessous (vous n'avez pas besoin d'exécuter cette commande) :
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Exécutez la commande pour afficher le cluster GKE Autopilot créé :
gcloud container clusters list
Exemple de résultat :

Exécutez la commande pour stocker les identifiants du cluster :
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Déployer une application
Vous allez ensuite déployer une application de service client. Il s'agit d'un microservice basé sur Java qui utilise le framework Quarkus.
Accédez au dossier cymbal-eats/customer-service et exécutez les commandes ci-dessous pour créer et importer l'image de conteneur :
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Définissez l'adresse IP privée 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
Exécutez les commandes ci-dessous pour créer un objet secret Kubernetes permettant de stocker les identifiants de base de données qui seront utilisés par l'application de service client pour se connecter à la base de données :
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
Exécutez la commande pour remplacer CUSTOMER_SERVICE_IMAGE dans le fichier deployment.yaml :
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Exécutez la commande pour déployer l'application :
kubectl apply -f customer-service-deployment.yaml
Il faut quelques instants pour que l'application passe à l'état "RUNNING" (En cours d'exécution).
Examinez le fichier de spécification du déploiement :
deployment.yaml.tmpl
Voici la partie de la configuration qui spécifie les ressources nécessaires à l'exécution de cette application.
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
Exécutez la commande pour créer l'adresse IP externe qui sera utilisée dans le workflow :
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Exécutez la commande pour vérifier les ressources créées :
kubectl get all
Exemple de résultat :

4. Workflow d'examen
Concepts de base des workflows
Un workflow se compose d'une série d'étapes décrites à l'aide de la syntaxe Workflows( YAML ou JSON).
Une fois un workflow créé, il est déployé, ce qui le rend prêt à être exécuté.
Une exécution est une exécution unique de la logique contenue dans la définition d'un workflow. Un workflow qui n'a pas été exécuté ne génère aucuns frais. Toutes les exécutions de workflows sont indépendantes, et le scaling rapide du produit permet un grand nombre d'exécutions simultanées.
Contrôles d'exécution
- Étapes : pour créer un workflow, vous devez définir les
stepset l'ordre d'exécution souhaités à l'aide de la syntaxe Workflows. Chaque workflow doit comporter au moins une étape. - Conditions : vous pouvez utiliser un bloc
switchcomme mécanisme de sélection qui permet à la valeur d'une expression de contrôler le flux d'exécution d'un workflow. - Itérations : vous pouvez utiliser une boucle
forpour effectuer une itération sur une séquence de nombres ou sur une collection de données, telle qu'une liste ou une carte. - Sous-workflows : un sous-workflow fonctionne comme une routine ou une fonction dans un langage de programmation, vous permettant d'encapsuler une étape ou un ensemble d'étapes que votre workflow répétera plusieurs fois.
Déclencher des exécutions
- Manuelle : vous pouvez gérer les workflows à partir de la console Google Cloud ou de la ligne de commande à l'aide de la Google Cloud CLI.
- Par programmation : les bibliothèques clientes Cloud pour l'API Workflows ou l'API REST peuvent être utilisées pour gérer les workflows.
- Planifié : vous pouvez utiliser Cloud Scheduler pour exécuter un workflow selon un calendrier spécifique.
Arguments d'exécution
Les données transmises au moment de l'exécution sont accessibles en ajoutant un champ params à votre workflow principal (défini dans un bloc principal). Le bloc principal accepte un argument unique correspondant à n'importe quel type de données JSON valide. Le champ "params" nomme la variable utilisée par le workflow pour stocker les données que vous transmettez.
Logique du workflow
Si un client n'existe pas, le workflow effectue un appel d'API pour le créer, puis met à jour les points de récompense. En fonction du montant total de la commande, le workflow sélectionne un multiplicateur pour calculer les points de récompense du client. Pour en savoir plus, consultez l'exemple ci-dessous.
- 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. Configurer et déployer Workflow
Exécutez la commande pour afficher l'adresse IP externe du service :
kubectl get svc
Exemple de résultat :

Définissez la variable d'environnement ci-dessous en utilisant la valeur de l'adresse IP externe de la sortie précédente.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Remplacez l'URL de l'application de service client dans le modèle de workflow :
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Définissez l'emplacement des variables d'environnement du service Workflows et du projet :
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)')
Créez un compte de service personnalisé pour le workflow avec les autorisations suivantes :
- Appeler les API Logging
- Publier des messages dans un sujet 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"
Déployez le workflow. Le workflow est configuré pour utiliser le compte de service créé à l'étape précédente :
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
Examinez la source du workflow et d'autres détails(onglet "Déclencheurs"). Aucun déclencheur n'est actuellement configuré pour exécuter ce workflow. Vous le configurerez à l'étape suivante.

6. Configurer des sujets Pub/Sub et un déclencheur Eventarc
Vous allez ensuite créer deux sujets Pub/Sub et configurer un déclencheur Eventarc.
L'application Order Service publiera des messages dans order-topic contenant des informations sur les nouvelles commandes.
Le workflow publie des messages dans order-points-topic avec des informations sur les points de récompense de la commande et le montant total. Le service de commande(partie non déployée de cet atelier) expose un point de terminaison utilisé par l'abonnement Push pour order-points-topic, afin de mettre à jour les points de récompense et le montant total par commande.
Créez des sujets 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
Définissez l'emplacement du service Eventarc :
gcloud config set eventarc/location ${REGION}
Créez un compte de service personnalisé qui sera utilisé par le déclencheur Eventarc pour exécuter les workflows.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
Accordez au compte de service l'accès à l'exécution des workflows.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Créez un déclencheur Eventarc pour écouter les messages Pub/Sub et les envoyer à 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
Exemple de résultat :
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.
Vérifiez le déclencheur Eventarc créé.

Examinez l'abonnement créé pour le déclencheur.

Examinez les modifications du côté workflow. Un déclencheur a été ajouté.

7. Tester le workflow

Pour simuler le service de commande, vous enverrez des messages au sujet Pub/Sub depuis Cloud Shell et vérifierez les journaux du service client dans la console 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}]}'
Exemple de résultat :
messageIds: - '5063709859203105'
Consultez les détails de l'exécution du workflow et les journaux.


8. Journalisation structurée des workflows
Le workflow est configuré pour écrire des journaux structurés au format JSON. Les journaux sont écrits à l'aide de l'API Cloud Logging, de la ressource workflows.googleapis.com/Workflow et sous le nom de journal projects/${PROJECT_ID}/logs/Workflows.
Examinez la configuration de journalisation ci-dessous.
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
Ouvrez l'explorateur de journaux dans la console Cloud et exécutez une requête pour trouver les commandes traitées dont le montant total est supérieur à 2 $.
Pour afficher le champ de requête de recherche, cliquez sur "Afficher la requête".

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

Ouvrez Cloud Shell et utilisez la gcloud CLI pour lire les journaux avec les commandes ci-dessous.
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)"
Exemple de résultat au format table :

Exécutez la commande ci-dessous pour renvoyer les journaux au format 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
Exemple de résultat au format json :

9. Examiner les fiches client
(Étapes facultatives)
Exécutez les commandes ci-dessous pour définir la variable d'environnement de l'URL du service client.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
Exemple de résultat :
[
{
"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"
}
]
Exécutez la commande pour publier une nouvelle commande plusieurs fois et vérifiez les points de récompense du client avec la commande curl.
Publier un message de nouvelle commande :
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}]}'
Vérifiez les points de récompense du client :
curl $CUSTOMER_SERVICE_URL/customer | jq
Exécutez la commande ci-dessous pour rechercher les journaux les plus récents :
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. Félicitations !
Félicitations, vous avez terminé cet atelier de programmation.
Points abordés
- Configurer un sujet Pub/Sub et Eventarc pour déclencher des workflows
- Configurer un workflow pour effectuer des appels d'API à une application exécutée sur GKE Autopilot
- Configurer Workflow pour publier des messages dans Pub/Sub
- Interroger les journaux structurés Workflows dans Cloud Logging et à l'aide de la gcloud CLI
Étapes suivantes :
Découvrez d'autres ateliers de programmation Cymbal Eats :
- Déclencher des workflows Cloud avec Eventarc
- Déclencher le traitement des événements à partir de Cloud Storage
- Se connecter à CloudSQL privé depuis Cloud Run
- Se connecter à des bases de données entièrement gérées à partir de Cloud Run
- Sécuriser une application sans serveur avec Identity-Aware Proxy (IAP)
- Déclencher des jobs Cloud Run avec Cloud Scheduler
- Déployer de manière sécurisée sur Cloud Run
- Sécuriser le trafic d'entrée Cloud Run
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.