Ce tutoriel explique comment déployer une application conteneurisée à l'aide d'un service Cloud Run authentifié qui reçoit des événements à l'aide de Pub/Sub. Pub/Sub est un service de messagerie en temps réel entièrement géré qui vous permet d'envoyer et de recevoir des messages entre différentes applications.
Créer un dépôt standard Artifact Registry
Créez un dépôt standard Artifact Registry pour stocker votre image de conteneur :
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Remplacez REPOSITORY
par un nom unique pour le dépôt.
Déployer un récepteur d'événements sur Cloud Run
Déployez un service Cloud Run qui consigne le contenu d'un événement.
Clonez le dépôt GitHub.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire contenant l'exemple de code Cloud Run :
Node.js
cd nodejs-docs-samples/eventarc/pubsub/
Python
cd python-docs-samples/eventarc/pubsub/
Go
cd golang-samples/eventarc/pubsub/
Java
cd java-docs-samples/eventarc/pubsub/
Ruby
cd ruby-docs-samples/eventarc/pubsub/
C#
cd dotnet-docs-samples/eventarc/pubsub/
Créez le conteneur et importez-le dans Cloud Build :
gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
Déployez l'image de conteneur dans Cloud Run :
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
Lorsque l'invite Allow unauthenticated invocations to trigger-pubsub (y/N)? (Autoriser les appels non authentifiés à déclencher-pubsub (y/N) ?) apparaît, répondez
n
pour "Non".
Lorsque l'URL du service Cloud Run s'affiche, le déploiement est terminé.
Créer un déclencheur Eventarc
Lorsqu'un message est publié dans le sujet Pub/Sub, l'événement déclenche le service Cloud Run.
Créez un déclencheur pour écouter les messages Pub/Sub :
Nouveau sujet Pub/Sub
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Cela crée un sujet Pub/Sub et un déclencheur associé nommé
trigger-pubsub
.Sujet Pub/Sub existant
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet Google CloudTOPIC_ID
: ID du sujet Pub/Sub existant
Cela crée un déclencheur nommé
trigger-pubsub
pour le sujet Pub/Sub existant.Notez que lorsque vous créez un déclencheur Eventarc pour la première fois dans un projet Google Cloud , le provisionnement de l'agent de service Eventarc peut prendre quelques instants. Ce problème peut généralement être résolu en essayant à nouveau de créer le déclencheur. Pour en savoir plus, consultez Erreurs d'autorisation refusée.
Vérifiez que le déclencheur a bien été créé. Notez que, bien que votre déclencheur soit créé immédiatement, il peut falloir jusqu'à deux minutes pour qu'il soit pleinement opérationnel.
gcloud eventarc triggers list --location=${REGION}
L'état du déclencheur renvoyé doit être
ACTIVE: Yes
.
Générer et afficher un événement
Publiez un message dans un sujet Pub/Sub pour générer un événement et déclencher le service Cloud Run. Le service Cloud Run consigne les messages dans les journaux de service.
Recherchez et définissez le sujet Pub/Sub en tant que variable d'environnement :
export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \ --format='value(transport.pubsub.topic)')
Envoyez un message au sujet Pub/Sub pour générer un événement :
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
L'événement est envoyé au service Cloud Run, qui consigne le message d'événement.
Pour afficher les entrées de journal liées aux événements créées par votre service, procédez comme suit :
gcloud logging read 'textPayload: "Hello there!"'
L'entrée de journal doit être semblable à ceci :
textPayload: 'Hello, Hello there!'
L'affichage des journaux peut nécessiter quelques instants. S'ils n'apparaissent pas immédiatement, patientez une minute et vérifiez de nouveau.