1. Introduzione
Cloud Run consente di eseguire container stateless in un ambiente completamente gestito. È basato su Knative open source, per consentirti di scegliere di eseguire i container in modo completamente gestito con Cloud Run o nel tuo cluster Google Kubernetes Engine con Cloud Run for Anthos.
Eventarc semplifica la connessione di vari servizi (Cloud Run, Cloud Functions, Workfklows) a eventi provenienti da una varietà di origini. Consente di creare architetture basate su eventi in cui i microservizi sono a basso accoppiamento e distribuiti. Si occupa anche dell'importazione, della distribuzione, della sicurezza, dell'autorizzazione e della gestione degli errori degli eventi per te, migliorando l'agilità degli sviluppatori e la resilienza delle applicazioni.
In questo codelab, imparerai a conoscere Eventarc. In particolare, ascolterai eventi da Pub/Sub, Cloud Storage e Cloud Audit Logs con Eventarc e li passerai a un servizio Cloud Run.
Cosa imparerai a fare
- Visione di Eventarc
- Scopri gli eventi in Eventarc
- Crea un sink Cloud Run
- Crea un trigger per Pub/Sub
- Crea un trigger per Cloud Storage
- Crea un trigger per Cloud Audit Logs
- Esplora la UI Eventarc
2. Visione di Eventarc
Eventarc mira a fornire eventi da varie origini eventi Google, Google Cloud e di terze parti alle destinazioni degli eventi Google Cloud.
Origini Google Cloud | Origini evento che sono prodotti di proprietà di Google Cloud |
Fonti Google | Origini eventi che sono prodotti di proprietà di Google, come Gmail, Hangouts, Android Management e altri ancora |
Origini personalizzate | Origini evento che non sono prodotti di proprietà di Google e sono create dagli utenti finali |
Origini di terze parti | Origini eventi non di proprietà di Google né prodotte dai clienti. Sono incluse fonti di eventi popolari come Check Point CloudGuard, Datadog, ForgeRock, Lacework e così via, di proprietà e gestite da fornitori e partner di terze parti. |
Gli eventi sono normalizzati nel formato CloudEvents v1.0 per l'interoperabilità tra servizi. CloudEvents è una specifica aperta indipendente dal fornitore che descrive i dati degli eventi in formati comuni, consentendo l'interoperabilità tra servizi, piattaforme e sistemi.
3. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- 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.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google e può essere aggiornata in qualsiasi momento.
- L'ID progetto deve essere 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, devi fare riferimento all'ID progetto (che solitamente è identificato come
PROJECT_ID
), quindi, se non ti piace, generane un altro a caso oppure puoi fare un tentativo personalizzato e controllare se è disponibile. Poi c'è "congelato" dopo la creazione del progetto. - C'è un terzo valore, il numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le risorse/le API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, segui eventuali "pulizie" istruzioni riportate alla fine del codelab. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in questo lab può essere svolto semplicemente con un browser.
Prima di iniziare
All'interno di Cloud Shell, assicurati che l'ID progetto sia configurato:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Esegui il deployment di un servizio Cloud Run
Eseguire il deployment di un servizio Cloud Run per ricevere eventi. Eseguirai il deployment del container Hello di Cloud Run che registra i contenuti di CloudEvents.
Innanzitutto, abilita i servizi richiesti per Cloud Run:
gcloud services enable run.googleapis.com
Esegui il deployment del container hello in Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Se l'operazione riesce, la riga di comando visualizza l'URL del servizio. Puoi aprire l'URL del servizio in qualsiasi finestra del browser per verificare che sia stato eseguito il deployment del servizio.
5. scoperta evento
Prima di creare trigger in Eventarc, puoi scoprire quali sono le origini eventi, i tipi di eventi che possono emettere e come configurarne i trigger per utilizzarli.
Per visualizzare l'elenco dei diversi tipi di eventi:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Per ulteriori informazioni su ogni tipo di evento:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Per visualizzare l'elenco dei servizi che emettono un determinato tipo di evento:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Per visualizzare l'elenco dei nomi dei metodi (eventi secondari) che ogni servizio può emettere:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Crea un trigger Pub/Sub
Un modo per ricevere eventi è tramite Cloud Pub/Sub. Qualsiasi applicazione può pubblicare messaggi in Pub/Sub e questi messaggi possono essere consegnati a Cloud Run tramite Eventarc.
Configurazione
Prima di creare qualsiasi trigger, abilita i servizi richiesti per Eventarc:
gcloud services enable eventarc.googleapis.com
Devi anche avere un account di servizio che venga utilizzato dai trigger. Crea un account di servizio:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Crea
Crea un trigger per filtrare gli eventi pubblicati nell'argomento Pub/Sub nel servizio Cloud Run di cui è stato eseguito il deployment:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Il trigger Pub/Sub crea un argomento nascosto. Scopriamolo e assegniamo a una variabile:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Usa gcloud
per pubblicare un messaggio nell'argomento:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Il servizio Cloud Run registra il corpo del messaggio in arrivo. Puoi visualizzarlo nella sezione Log della tua istanza Cloud Run:
Crea con un argomento Pub/Sub esistente
Per impostazione predefinita, quando crei un trigger Pub/Sub, Eventarc crea un argomento sotto le coperte per consentirti di utilizzare come argomento di trasporto tra la tua applicazione e un servizio Cloud Run. Questo è utile per creare facilmente e rapidamente un trigger supportato da Pub/Sub, ma a volte potresti voler usare un argomento esistente. Eventarc consente di specificare un argomento Pub/Sub esistente nello stesso progetto con il flag gcloud --transport-topic
.
Per vedere come funziona, crea un argomento Pub/Sub da utilizzare come argomento di trasporto:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Crea un attivatore:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Puoi testare il trigger inviando un messaggio all'argomento:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. crea un trigger di Cloud Storage
In questo passaggio creerai un trigger per ascoltare eventi da Cloud Storage.
Configurazione
Per prima cosa, crea un bucket per ricevere eventi da:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Concedi il ruolo eventarc.eventReceiver
in modo che l'account di servizio possa essere utilizzato in un trigger di Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Devi inoltre aggiungere il ruolo pubsub.publisher
all'account di servizio Cloud Storage per i trigger di Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
Crea
Crea un trigger per instradare eventi di creazione di nuovi file dal bucket al tuo servizio:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Elenca tutti i trigger per confermare che sia stato creato correttamente:
gcloud eventarc triggers list
Carica un file nel bucket Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Se controlli i log del servizio Cloud Run in Cloud Console, dovresti vedere l'evento ricevuto:
8. Crea un trigger di Cloud Audit Logs
Sebbene il trigger di Cloud Storage sia il modo migliore per ascoltare gli eventi di Cloud Storage, in questo passaggio creerai un trigger di Cloud Audit Log per fare lo stesso.
Configurazione
Per ricevere eventi da un servizio, devi abilitare Cloud Audit Logs. Dalla console Cloud, seleziona IAM & Admin
e Audit Logs
dal menu in alto a sinistra. Nell'elenco dei servizi, controlla Google Cloud Storage
:
Sul lato destro, assicurati che Admin
, Read
e Write
siano selezionati e fai clic su Save
:
Crea
Crea un trigger per instradare eventi di creazione di nuovi file dal bucket al tuo servizio:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
L'inizializzazione dei trigger degli audit log richiede un po' di tempo. Puoi verificare che il trigger venga creato elencando tutti gli attivatori:
gcloud eventarc triggers list
Dovresti vedere che il campo ACTIVE
è Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Carica nel bucket Cloud Storage lo stesso file che hai fatto in precedenza:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Se controlli i log del servizio Cloud Run in Cloud Console, dovresti vedere l'evento ricevuto:
9. Esplora la UI Eventarc
In questo passaggio esplorerai la UI di Eventarc nella console Google Cloud. Nella UI di Eventarc puoi visualizzare una panoramica di tutti i trigger, modificarli ed eliminarli, nonché creare nuovi trigger dalla console Google Cloud.
Vai alla sezione Eventarc di Google Cloud:
Viene visualizzato l'elenco degli attivatori che hai creato in precedenza:
Se fai clic su un attivatore, puoi visualizzarne i dettagli, modificarlo o eliminarlo:
Puoi anche creare un nuovo attivatore selezionando Create trigger
e inserendo i dettagli dell'attivatore:
10. Complimenti!
Complimenti per aver completato il codelab.
Argomenti trattati
- Visione di Eventarc
- Scopri gli eventi in Eventarc
- Crea un sink Cloud Run
- Crea un trigger per Pub/Sub
- Crea un trigger per Cloud Storage
- Crea un trigger per Cloud Audit Logs
- Esplora la UI Eventarc