Questo tutorial mostra come scrivere, eseguire il deployment e chiamare un servizio Cloud Run for Anthos da una iscrizione push di Pub/Sub.
Obiettivi
- Scrivi, crea ed esegui il deployment di un servizio su Cloud Run for Anthos
- Chiama il servizio pubblicando un messaggio in un argomento Pub/Sub.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Abilita l'API Cloud Run for Anthos
- Installa e inizializza l'interfaccia alla gcloud CLI.
- Installa il componente
kubectl
:gcloud components install kubectl
- Aggiorna i componenti:
gcloud components update
- Se utilizzi Cloud Run for Anthos, crea un nuovo cluster seguendo le istruzioni della configurazione di Cloud Run for Anthos.
Configurazione dei valori predefiniti gcloud
Per configurare gcloud con i valori predefiniti per il servizio Cloud Run for Anthos:
Imposta il progetto predefinito:
gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID con il nome del progetto che utilizzi per questo tutorial.
Configura gcloud per il tuo cluster:
gcloud config set run/platform gke gcloud config set run/cluster CLUSTER-NAME gcloud config set run/cluster_location REGION
Sostituisci:
- CLUSTER-NAME con il nome utilizzato per il cluster,
- REGION con la località del cluster supportata di tua scelta.
Creazione di un argomento Pub/Sub
Il servizio di esempio viene attivato dai messaggi pubblicati in un argomento Pub/Sub, quindi devi creare un argomento in Pub/Sub.
Per creare un nuovo argomento Pub/Sub, utilizza il comando:
gcloud pubsub topics create myRunTopic
Puoi utilizzare myRunTopic o sostituirlo con un nome argomento univoco all'interno del tuo progetto Google Cloud.
Recupero dell'esempio di codice
Per recuperare l'esempio di codice da utilizzare:
Clona il repository dell'app di esempio nella macchina locale:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Passa alla directory che contiene il codice campione di Cloud Run for Anthos:
Node.js
cd nodejs-docs-samples/run/pubsub/
Python
cd python-docs-samples/run/pubsub/
Go
cd golang-samples/run/pubsub/
Java
cd java-docs-samples/run/pubsub/
Guardando il codice
Il codice di questo tutorial è costituito dai seguenti elementi:
Un server che gestisce le richieste in entrata.
Node.js
Per mantenere il servizio Node.js facile da testare, la configurazione del server è separata dall'avvio del server.Il server web Node.js è configurato in
Il server web è avviato inapp.js
.index.js
:Python
Go
Java
Un gestore che elabora il messaggio Pub/Sub e registra un annuncio.
Node.js
Python
Go
Java
Devi programmare il servizio in modo che restituisca un codice di risposta HTTP accurato. I codici di operazione riuscita, come HTTP
200
o204
, confermano l'elaborazione completa del messaggio Pub/Sub. I codici di errore, come HTTP400
o500
, indicano che verrà eseguito un nuovo tentativo sul messaggio, come descritto nella sezione Ricevere messaggi tramite la guida push.Un
Dockerfile
che definisce l'ambiente operativo per il servizio. I contenuti diDockerfile
variano in base alla lingua.Node.js
Python
Go
Java
Questo esempio utilizza Jib per creare immagini Docker utilizzando strumenti Java comuni. Jib ottimizza le build dei container senza bisogno di un Dockerfile o senza installare Docker. Scopri di più sulla creazione di container Java con Jib.
Per dettagli su come autenticare l'origine delle richieste Pub/Sub, leggi la sezione seguente su integrazione con Pub/Sub.
Spedizione del codice
Il codice di spedizione è composto da tre passaggi: la creazione di un'immagine container con Cloud Build, il caricamento dell'immagine container in Container Registry e il deployment dell'immagine container su Cloud Run for Anthos.
Per spedire il codice:
Crea il container e pubblicalo su Container Registry:
Node.js
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dove PROJECT_ID è l'ID progetto Google Cloud e
pubsub
è il nome che vuoi assegnare al servizio.In caso di esito positivo, dovresti vedere un messaggio di operazione riuscita contenente l'ID, l'ora di creazione e il nome dell'immagine. L'immagine è archiviata in Container Registry e, se necessario, può essere riutilizzata.
Python
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dove PROJECT_ID è l'ID progetto Google Cloud e
pubsub
è il nome che vuoi assegnare al servizio.In caso di esito positivo, dovresti vedere un messaggio di operazione riuscita contenente l'ID, l'ora di creazione e il nome dell'immagine. L'immagine è archiviata in Container Registry e, se necessario, può essere riutilizzata.
Go
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dove PROJECT_ID è l'ID progetto Google Cloud e
pubsub
è il nome che vuoi assegnare al servizio.In caso di esito positivo, dovresti vedere un messaggio di operazione riuscita contenente l'ID, l'ora di creazione e il nome dell'immagine. L'immagine è archiviata in Container Registry e, se necessario, può essere riutilizzata.
Java
mvn compile jib:build -Dimage=gcr.io/PROJECT_ID/pubsub
Dove PROJECT_ID è l'ID progetto Google Cloud e
pubsub
è il nome che vuoi assegnare al servizio.In caso di esito positivo, dovresti visualizzare un messaggio BUILD SUCCESS (Stabilisci edificio). L'immagine è archiviata in Container Registry e, se lo desideri, può essere riutilizzata.
Esegui questo comando per eseguire il deployment dell'app:
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud.
pubsub
è il nome del container epubsub-tutorial
è il nome del servizio. Tieni presente che viene eseguito il deployment dell'immagine container sul servizio e sul cluster configurati in precedenza in Configurazione di gcloudAttendi il completamento del deployment: questa operazione può richiedere circa mezzo minuto. Se l'operazione riesce, la riga di comando visualizza l'URL del servizio. Questo URL viene utilizzato per configurare una sottoscrizione Pub/Sub.
Se vuoi eseguire il deployment di un aggiornamento del codice al servizio, ripeti i passaggi precedenti. Ogni deployment in un servizio crea una nuova revisione e avvia automaticamente la gestione del traffico quando è pronto.
Integrazione con Pub/Sub
Ora che abbiamo eseguito il deployment del nostro servizio Cloud Run for Anthos, configureremo Pub/Sub in modo che esegua il push dei messaggi.
Per integrare il servizio con Pub/Sub:
Abilita Pub/Sub per creare token di autenticazione nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Sostituisci
- PROJECT_ID con il tuo ID progetto Google Cloud.
- PROJECT-NUMBER con il tuo numero di progetto Google Cloud.
Crea o seleziona un account di servizio per rappresentare l'identità della sottoscrizione Pub/Sub.
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run for Anthos Pub/Sub Invoker"
Puoi utilizzare
cloud-run-pubsub-invoker
o sostituirlo con un nome univoco all'interno del tuo progetto Google Cloud.Crea una sottoscrizione Pub/Sub con l'account di servizio:
Abilita TLS e HTTPS automatici per il tuo cluster e aggiungi una mappatura di dominio al tuo servizio.
Registra la proprietà del dominio per Pub/Sub.
Aggiungi codice per convalidare il token di autenticazione associato ai messaggi Pub/Sub. Il codice campione è fornito in Autenticazione e autorizzazione da parte dell'endpoint push.
L'autenticazione deve assicurare che il token sia valido e associato all'account di servizio previsto. A differenza di Cloud Run, Cloud Run for Anthos non ha un controllo dell'autorizzazione integrato che il token sia valido o che l'account di servizio abbia l'autorizzazione per richiamare il servizio Cloud Run for Anthos.
Crea una sottoscrizione Pub/Sub con l'account di servizio:
gcloud pubsub subscriptions create myRunSubscription --topic myRunTopic \ --push-endpoint=SERVICE-URL/ \ --push-auth-service-account=cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
Sostituisci
- myRunTopic con l'argomento creato in precedenza.
- SERVICE-URL con il tuo URL di servizio personalizzato.
Specifica
https
come protocollo. - PROJECT_ID con il tuo ID progetto Google Cloud.
Il flag
--push-auth-service-account
attiva la funzionalità di push di Pub/Sub per Autenticazione e autorizzazione.
Il tuo servizio è ora completamente integrato con Pub/Sub.
Prova in corso
Per testare la soluzione end-to-end:
Invia un messaggio Pub/Sub all'argomento:
gcloud pubsub topics publish myRunTopic --message "Runner"
Puoi anche pubblicare i messaggi in modo programmatico anziché utilizzare la riga di comando come mostrato in questo tutorial. Per ulteriori informazioni, consulta la pagina Pubblicare messaggi.
Accedi ai log del servizio:
Vai alla pagina Cloud Run for Anthos nella console Google Cloud:
Fai clic sul servizio
pubsub-tutorial
.Seleziona la scheda Log.
La visualizzazione dei log potrebbe richiedere alcuni istanti. Se non le vedi immediatamente, ricontrolla dopo qualche istante.
Cerca il messaggio "Hello Runner!".
Esegui la pulizia
Per analizzare un caso d'uso più approfondito utilizzando Cloud Run for Anthos con Pub/Sub, salta ora la pulizia e continua con il tutorial Elaborazione delle immagini.
Se hai creato un nuovo progetto per questo tutorial, elimina il progetto. Se hai utilizzato un progetto esistente e vuoi mantenerlo senza le modifiche aggiunte in questo tutorial, elimina le risorse create per il tutorial.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Eliminazione delle risorse del tutorial
Elimina il servizio Cloud Run for Anthos di cui hai eseguito il deployment in questo tutorial:
gcloud run services delete SERVICE-NAME
Dove SERVICE-NAME è il nome del servizio che hai scelto.
Puoi anche eliminare i servizi Cloud Run for Anthos dalla console Google Cloud:
Rimuovi le configurazioni gcloud predefinite che hai aggiunto durante la configurazione del tutorial:
gcloud config unset run/platform gcloud config unset run/cluster gcloud config unset run/cluster_location
Rimuovi la configurazione del progetto:
gcloud config unset project
Elimina altre risorse Google Cloud create in questo tutorial:
- Elimina l'argomento Pub/Sub
myRunTopic
- Elimina la sottoscrizione Pub/Sub
myRunSubscription
- Elimina l'immagine container denominata
gcr.io/PROJECT_ID/pubsub
da Container Registry. - Elimina l'account di servizio dell'invoker
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
- Se hai creato un cluster per questo tutorial, elimina il cluster
- Elimina l'argomento Pub/Sub
Passaggi successivi
- Espandi il servizio di esempio di cui è stato eseguito il deployment in questo tutorial per aggiungere funzionalità di elaborazione delle immagini che modifica le immagini caricate in Cloud Storage.
- Scopri di più su come gli argomenti si adattano all'architettura Pub/Sub e su come gestire gli argomenti
- Scopri di più sugli abbonamenti Pub/Sub nella gestione degli abbonamenti.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro di architettura cloud.