Configurazione di Eventarc per attivare flussi di lavoro che si integrano con GKE Autopilot e Pub/Sub

Configurazione di Eventarc per attivare flussi di lavoro che si integrano con GKE Autopilot e Pub/Sub

Informazioni su questo codelab

subjectUltimo aggiornamento: feb 2, 2023
account_circleScritto da: Andrey Shakirov, Christopher Grant

1. Panoramica

In questo lab creerai un trigger Eventarc che collega un argomento Pub/Sub al servizio Workflows. Eventarc consente di disaccoppiare la comunicazione tra servizi, rendendo la tua soluzione più estensibile e basata su eventi. Dovrai creare un flusso di lavoro che include più passaggi per l'esecuzione di un processo aziendale per calcolare i punti premio dei clienti per gli ordini effettuati presso Cymbal Eats. Il flusso di lavoro invierà più richieste a un'applicazione in esecuzione su GKE Autopilot e pubblicherà un messaggio nell'argomento Pub/Sub per notificare all'applicazione Order Service i punti premio calcolati.

6c0606022b76f79d.png

Che cos'è GKE Autopilot?

GKE Autopilot è una modalità operativa di GKE in cui Google gestisce la configurazione del tuo cluster, inclusi nodi, scalabilità, sicurezza e altre impostazioni preconfigurate. I cluster Autopilot sono ottimizzati per eseguire la maggior parte dei carichi di lavoro di produzione ed eseguire il provisioning delle risorse di calcolo in base ai tuoi manifest Kubernetes. La configurazione semplificata segue le best practice e i suggerimenti di GKE per la configurazione, la scalabilità e la sicurezza di cluster e carichi di lavoro. Per un elenco delle impostazioni integrate, consulta la tabella Confronto tra Autopilot e Standard.

Con GKE Standard, gli utenti sono responsabili della gestione dei nodi worker e della configurazione del pool di nodi, mentre il resto viene gestito da GKE.

Responsabilità del cliente e di Google in caso di esecuzione in modalità GKE Standard

85500aad65f87437.png

Con GKE Autopilot, la configurazione e la gestione del pool di nodi sono responsabilità di Google. Ciò ti consente di concentrarti sulle applicazioni e sui servizi in esecuzione sul cluster.

Che cos'è Eventarc?

Eventarc consente di creare architetture basate su eventi senza dover implementare, personalizzare o gestire l'infrastruttura sottostante. Eventarc offre una soluzione standardizzata per la gestione del flusso delle modifiche dello stato, chiamate eventi, tra microservizi disaccoppiati. Se attivato, Eventarc instrada questi eventi tramite sottoscrizioni Pub/Sub a varie destinazioni (ad es. Workflows, Cloud Run) mentre gestisce per te distribuzione, sicurezza, autorizzazione, osservabilità e gestione degli errori.

Fornitori di eventi Google

  • Più di 90 provider Google Cloud. Questi provider inviano gli eventi direttamente dall'origine (ad esempio Cloud Storage) o tramite le voci Cloud Audit Logs.
  • con i provider Pub/Sub. Questi provider inviano eventi a Eventarc utilizzando messaggi Pub/Sub.

Fornitori di terze parti

I fornitori di terze parti sono entità non Google che offrono un'origine Eventarc.

Trigger Eventarc

  • Eventi Cloud Pub/Sub. Eventarc può essere attivato dai messaggi pubblicati negli argomenti Pub/Sub.
  • Eventi Cloud Audit Logs (CAL). Cloud Audit Logs fornisce audit log per le attività di amministrazione e l'accesso ai dati per ogni progetto, cartella e organizzazione Cloud.
  • Eventi diretti. Eventarc può essere attivato da vari eventi diretti, ad esempio un aggiornamento di un bucket Cloud Storage o di un modello Firebase Remote Config.

Destinazioni degli eventi

c7ca054200edf1b3.png

Che cos'è Workflows?

Workflows è un servizio completamente gestito che consente di integrare microservizi, attività e API. Workflows è un servizio serverless e scala per soddisfare la tua domanda.

Casi d'uso di Workflows:

  • I flussi di lavoro basati su eventi vengono eseguiti su trigger definiti. Ad esempio, quando viene inviato un nuovo ordine e vuoi calcolare i punti fedeltà dei clienti. Oppure, quando un ordine viene annullato, l'evento può essere pubblicato e tutti i servizi interessati elaboreranno l'evento.
  • I flussi di lavoro dei job in batch eseguono job regolarmente utilizzando Cloud Scheduler. Ad esempio, un job notturno per controllare le voci di menu con stato Non riuscito ed eliminarle.

Workflows è la soluzione ideale per i flussi di lavoro che orchestrano i servizi. Puoi automatizzare i processi che includono attesa e nuovi tentativi fino a un anno.

Vantaggi di Workflows:

  • Configurazione sopra il codice: riduci i problemi tecnici spostando la logica in configurazione anziché scrivendo il codice.
  • Semplifica la tua architettura. I flussi di lavoro stateful consentono di visualizzare e monitorare complesse integrazioni di servizi senza dipendenze aggiuntive.
  • Incorporare l'affidabilità e la tolleranza di errore. Controlla gli errori con la logica predefinita o personalizzata dei nuovi tentativi e la gestione degli errori anche in caso di errore di altri sistemi, controllando ogni passaggio su Cloud Spanner per monitorare l'avanzamento.
  • Nessuna manutenzione. Scalabilità in base alle esigenze: non c'è nulla da correggere o gestire. Paghi solo quando i tuoi flussi di lavoro sono in esecuzione, senza costi in attesa o inattivi.

In questo lab configurerai un flusso di lavoro basato su eventi.

Cosa imparerai a fare

In questo lab imparerai a:

  • Configura un argomento Pub/Sub ed Eventarc per attivare Workflows
  • Configura Workflows per effettuare chiamate API a un'applicazione in esecuzione su GKE Autopilot
  • Configura il flusso di lavoro per pubblicare messaggi in Pub/Sub
  • Come eseguire query sui log strutturati di Workflows in Cloud Logging e utilizzare gcloud CLI

Prerequisiti

  • In questo lab si presuppone che tu abbia familiarità con gli ambienti della console Cloud e Cloud Shell.
  • La precedente esperienza GKE e Cloud Pub/Sub è utile ma non obbligatoria.

2. Configurazione e requisiti

Configurazione del progetto Cloud

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarla in qualsiasi momento.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere è identificato come PROJECT_ID). Se l'ID generato non ti soddisfa, puoi generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto.
  • Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, puoi eliminare le risorse che hai creato o eliminare l'intero progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Configurazione dell'ambiente

Attiva Cloud Shell facendo clic sull'icona a destra della barra di ricerca.

8613854df02635a3.png

Clona il repository, vai alla directory, copia e incolla il comando seguente nel terminale e premi Invio:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

Esegui il deployment delle dipendenze obbligatorie eseguendo gke-lab-setup.sh

Verranno create le seguenti risorse:

  • Cluster e istanza AlloyDB
  • Cluster GKE Autopilot
./gke-lab-setup.sh

Se ti viene richiesta l'autorizzazione, fai clic su "Autorizza". per continuare.

6356559df3eccdda.png

La configurazione richiederà circa 10 minuti.

Attendi il completamento dello script e la visualizzazione dell'output in basso prima di eseguire altri passaggi.

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

Esamina il cluster GKE Autopilot

Imposta le variabili di ambiente del progetto:

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)')

Parte della configurazione iniziale, il cluster è stato creato utilizzando il comando seguente (non è necessario eseguire questo comando):

gcloud container clusters create-auto $CLUSTER_NAME --region $REGION

Esegui il comando per visualizzare il cluster GKE Autopilot creato:

gcloud container clusters list

Esempio di output:

772db9dd58172e0c.png

Esegui il comando per archiviare le credenziali per il cluster:

CLUSTER_NAME=rewards-cluster
REGION=us-central1

gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION

Eseguire il deployment di un'applicazione

Successivamente, eseguirai il deployment di un'applicazione dell'assistenza clienti. Si tratta di un microservizio basato su Java che utilizza il framework Quarkus.

Vai alla cartella cymbal-eats/customer-service ed esegui i comandi in basso per creare e caricare l'immagine container:

./mvnw clean package -DskipTests

export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0

gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .

Imposta l'indirizzo IP privato di 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

Esegui i comandi riportati di seguito per creare un oggetto secret di Kubernetes in cui archiviare le credenziali del database che verranno utilizzate dall'applicazione dell'assistenza clienti per connettersi al database:

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

Esegui il comando per sostituire CUSTOMER_SERVICE_IMAGE nel file deployment.yaml:

sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml

Esegui il comando per eseguire il deployment dell'applicazione:

kubectl apply -f customer-service-deployment.yaml

Il passaggio allo stato IN ESECUZIONE dell'applicazione richiederà qualche istante.

Esamina il file delle specifiche del deployment:

deployment.yaml.tmpl

Questa è la parte della configurazione che specifica le risorse necessarie per eseguire questa applicazione.

    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

Esegui il comando per creare un IP esterno che verrà utilizzato nel flusso di lavoro:

SERVICE_NAME=customer-service

kubectl expose deployment $SERVICE_NAME \
  --type LoadBalancer --port 80 --target-port 8080

Esegui il comando per verificare le risorse create:

kubectl get all

Esempio di output:

179a23bd33793924.png

4. Rivedi flusso di lavoro

Concetti principali di Workflows

Un flusso di lavoro consiste in una serie di passaggi descritti utilizzando la sintassi di Workflows( YAML o JSON).

Una volta creato, un flusso di lavoro viene implementato e pronto per l'esecuzione.

Un'esecuzione è una singola esecuzione della logica contenuta nella definizione di un flusso di lavoro. Un flusso di lavoro che non è stato eseguito non genera alcun addebito. Tutte le esecuzioni dei flussi di lavoro sono indipendenti e la scalabilità rapida del prodotto consente un elevato numero di esecuzioni simultanee.

Controlli di esecuzione

  • Passaggi - Per creare un flusso di lavoro, definisci il steps e l'ordine di esecuzione desiderati utilizzando la sintassi di Workflows. Ogni flusso di lavoro deve includere almeno un passaggio.
  • Condizioni - Puoi utilizzare un blocco switch come meccanismo di selezione che consente al valore di un'espressione di controllare il flusso di esecuzione di un flusso di lavoro.
  • Iterazioni: puoi utilizzare un ciclo for per ripetere una sequenza di numeri o una raccolta di dati come un elenco o una mappa.
  • Flussi di lavoro secondari: un flusso di lavoro secondario funziona in modo simile a una routine o a una funzione in un linguaggio di programmazione, consentendoti di incapsulare un passaggio o un insieme di passaggi che il flusso di lavoro ripeterà più volte.

Attivazione delle esecuzioni

  • Manuale: puoi gestire i flussi di lavoro dalla console Google Cloud o dalla riga di comando utilizzando Google Cloud CLI.
  • Pubblicità programmatica: le librerie client di Cloud per l'API Workflows, o l'API REST, possono essere utilizzate per gestire i flussi di lavoro.
  • Pianificato: puoi utilizzare Cloud Scheduler per eseguire un flusso di lavoro in base a una determinata pianificazione.

Argomenti di runtime

Puoi accedere ai dati trasmessi in fase di runtime aggiungendo un campo params al flusso di lavoro principale (in un blocco principale). Il blocco principale accetta un singolo argomento che è qualsiasi tipo di dati JSON valido. Il campo dei parametri assegna un nome alla variabile utilizzata dal flusso di lavoro per memorizzare i dati trasmessi.

Logica del flusso di lavoro

Se un cliente non esiste, il flusso di lavoro effettuerà una chiamata API per creare prima un cliente e poi aggiornare i punti premio. In base all'importo totale dell'ordine, il flusso di lavoro selezionerà un moltiplicatore per calcolare i punti premio per il cliente. Per ulteriori dettagli, vedi l'esempio di seguito.

    - 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}

99f9cf1076c03fb6.png

5. Configura ed esegui il deployment del flusso di lavoro

Esegui il comando per visualizzare l'indirizzo IP esterno del servizio:

kubectl get svc

Esempio di output:

fe5cfec2bc836a5f.png

Imposta la variabile di ambiente di seguito utilizzando il valore di IP esterno dell'output precedente.

CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')

Sostituisci l'URL dell'applicazione dell'assistenza clienti nel modello di flusso di lavoro:

sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml

Imposta la località per le variabili del servizio Workflows e dell'ambiente del progetto:

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 un account di servizio personalizzato per il flusso di lavoro con le seguenti autorizzazioni:

  • API per la registrazione delle chiamate
  • Pubblica messaggi nell'argomento 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"

Esegui il deployment del flusso di lavoro. Il flusso di lavoro è configurato in modo da utilizzare l'account di servizio creato nel passaggio precedente:

export WORKFLOW_NAME=rewardsWorkflow

gcloud workflows deploy ${WORKFLOW_NAME} \
  --source=gkeRewardsWorkflow.yaml \
  --service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com

Esamina l'origine del flusso di lavoro e altri dettagli(scheda Trigger). Al momento non ci sono trigger configurati per l'esecuzione di questo flusso di lavoro. Lo configurerai nel passaggio successivo.

66ba7ebbde76d5a6.png

6. Configura argomenti Pub/Sub e trigger Eventarc

Poi creerai due argomenti Pub/Sub e configurerai un trigger Eventarc.

L'applicazione Servizio ordini pubblicherà messaggi su order-topic con informazioni sui nuovi ordini.

Il flusso di lavoro pubblicherà messaggi su order-points-topic con informazioni sui punti premio degli ordini e sull'importo totale. Il servizio ordini(non parte di questo lab di cui è stato eseguito il deployment) espone un endpoint utilizzato dall'abbonamento push per order-points-topic, per aggiornare i punti premio e l'importo totale per ordine.

Crea nuovi argomenti 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

Imposta la località per il servizio Eventarc:

gcloud config set eventarc/location ${REGION}

Crea un account di servizio personalizzato che verrà utilizzato dal trigger Eventarc per l'esecuzione di flussi di lavoro.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

Concedi l'accesso all'account di servizio per eseguire i flussi di lavoro.

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/workflows.invoker"

Crea un trigger Eventarc per ascoltare i messaggi Pub/Sub e recapitarli 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

Esempio di output:

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.

Rivedi il trigger Eventarc creato.

bda445561ad5f4.png

Controlla l'abbonamento creato per il trigger.

3fccdda7d5526597.png

Esamina le modifiche sul flusso di lavoro. È stato aggiunto un nuovo trigger.

23d338abc16eaac8.png

7. Testa il flusso di lavoro

6c0606022b76f79d.png

Per simulare il servizio ordini, invierai messaggi all'argomento Pub/Sub da Cloud Shell e verificherai i log dell'assistenza clienti nella 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}]}'

Esempio di output:

messageIds:
- '5063709859203105'

Esamina i dettagli di esecuzione del flusso di lavoro e i log.

1e802826c700cc3e.png

57ff9705bf507fb0.png

8. Logging strutturato del flusso di lavoro

Il flusso di lavoro è configurato per scrivere log strutturati in formato JSON. I log vengono scritti usando l'API Cloud Logging, la risorsa workflows.googleapis.com/Workflow e sotto il nome log projects/${PROJECT_ID}/logs/Workflows.

Rivedi la configurazione del logging di seguito.

    - log_totalAmount:
        call: sys.log
        args:
            json:
              orderNumber: ${order.orderNumber}
              totalAmount: ${totalAmount}
              multiplier: ${multiplier}
              totalRewardPoints: ${rewardPoints}
              orderRewardPoints: ${orderRewardPoints}
            severity: INFO

Apri Esplora log nella console Cloud ed esegui una query per trovare gli ordini elaborati per un importo totale superiore a 2 $.

Per mostrare il campo della query di ricerca, fai clic su "Mostra query".

f0a57ff3d10bad2.png

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

Esempio di output:

9093f87159f1b928.png

Apri Cloud Shell e utilizza gcloud CLI per leggere i log con i comandi riportati di seguito.

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)"

Esempio di output nel formato table:

35d5fd851ecde60.png

Esegui il comando seguente per restituire i log in 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

Esempio di output nel formato json:

ac7421548ea9a9f2.png

9. Esamina i registri dei clienti

(passaggi facoltativi)

Esegui i comandi riportati di seguito per impostare la variabile di ambiente dell'URL dell'assistenza clienti.

CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')

curl $CUSTOMER_SERVICE_URL/customer | jq

Esempio di output:

[
  {
    "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"
  }
]

Esegui il comando per pubblicare un nuovo ordine più volte e verifica i punti premio del cliente con il comando curl.

Pubblica nuovo messaggio di ordine:

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 i punti premio dei clienti:

curl $CUSTOMER_SERVICE_URL/customer | jq

Esegui il comando seguente per verificare i log più recenti:

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. Complimenti

Complimenti, hai completato il codelab.

Argomenti trattati:

  • Configurare un argomento Pub/Sub ed Eventarc per attivare Workflows
  • Come configurare Workflows per effettuare chiamate API a un'applicazione in esecuzione su GKE Autopilot
  • Configurare Workflows per pubblicare messaggi in Pub/Sub
  • Come eseguire query sui log strutturati di Workflows in Cloud Logging e utilizzare gcloud CLI

Passaggi successivi

Esplora altri codelab di Cymbal Eats:

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto che hai creato per il tutorial.