Ce tutoriel explique comment écrire, déployer et appeler un service Cloud Run for Anthos à partir d'un abonnement push Pub/Sub.
Objectifs
- Écrire, créer et déployer un service sur Cloud Run for Anthos
- Appeler le service en publiant un message dans un sujet Pub/Sub
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
-
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.
- Activez l'API Cloud Run for Anthos
- Installez et initialisez gcloud CLI.
- Installez le composant
kubectl
:gcloud components install kubectl
- Mettez à jour les composants :
gcloud components update
- Si vous utilisez Cloud Run for Anthos, créez un cluster en suivant les instructions de la section Configurer Cloud Run for Anthos.
Configurer les paramètres par défaut de gcloud
Pour configurer gcloud avec les valeurs par défaut pour votre service Cloud Run pour Anthos, procédez comme suit :
Définissez le projet par défaut :
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID par le nom du projet que vous utilisez pour ce tutoriel.
Configurez gcloud pour votre cluster :
gcloud config set run/platform gke gcloud config set run/cluster CLUSTER-NAME gcloud config set run/cluster_location REGION
Remplacez :
- CLUSTER-NAME par le nom que vous avez utilisé pour votre cluster ;
- REGION par l'emplacement de cluster compatible de votre choix.
Créer un sujet Pub/Sub
L'exemple de service est déclenché par les messages publiés dans un sujet Pub/Sub. Vous devez donc créer un sujet dans Pub/Sub.
Pour créer un sujet Pub/Sub, utilisez la commande suivante :
gcloud pubsub topics create myRunTopic
Vous pouvez conserver le nom myRunTopic ou le remplacer par un nom de sujet unique dans votre projet Google Cloud.
Récupérer l'exemple de code
Pour récupérer l’exemple de code à utiliser, procédez comme suit :
Clonez le dépôt de l'exemple d'application sur votre machine locale :
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.
Accédez au répertoire contenant l'exemple de code 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/
Examiner le code
Le code de ce tutoriel comprend les éléments suivants :
Un serveur qui gère les requêtes entrantes.
Node.js
Pour que le service Node.js reste facile à tester, la configuration du serveur est distincte du démarrage du serveur.Le serveur Web Node.js est configuré dans
Le serveur Web est démarré dansapp.js
.index.js
:Python
Go
Java
Un gestionnaire qui traite le message Pub/Sub et enregistre un message d'accueil.
Node.js
Python
Go
Java
Vous devez coder le service pour renvoyer un code de réponse HTTP précis. Les codes de réussite, tels que HTTP
200
ou204
, confirment le traitement complet du message Pub/Sub. Les codes d'erreur, tels que HTTP400
ou500
, indiquent qu'une nouvelle tentative d'envoi sera effectuée, comme décrit dans le guide Recevoir des messages en mode push.Un fichier
Dockerfile
qui définit l'environnement d'exploitation du service. Le contenu du fichierDockerfile
varie selon le langage.Node.js
Python
Go
Java
Cet exemple utilise Jib pour créer des images Docker à l'aide d'outils Java courants. Jib optimise les builds de conteneurs sans requérir de fichier Dockerfile ni d'installation Docker. Découvrez comment créer des conteneurs Java avec Jib.
Pour en savoir plus sur l'authentification de l'origine des requêtes Pub/Sub, consultez la section ci-dessous Intégrer à Pub/Sub.
Transmettre le code
La transmission du code se déroule en trois étapes : création d'une image de conteneur avec Cloud Build, importation de l'image de conteneur dans Container Registry, puis déploiement de cette image dans Cloud Run pour Anthos.
Pour transmettre votre code, procédez comme suit :
Créez votre conteneur et publiez-le dans Container Registry :
Node.js
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Où PROJECT_ID est l'ID de votre projet Google Cloud et
pubsub
le nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. Celle-ci est stockée dans Container Registry et peut être réutilisée au besoin.
Python
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Où PROJECT_ID est l'ID de votre projet Google Cloud et
pubsub
le nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. Celle-ci est stockée dans Container Registry et peut être réutilisée au besoin.
Go
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Où PROJECT_ID est l'ID de votre projet Google Cloud et
pubsub
le nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. Celle-ci est stockée dans Container Registry et peut être réutilisée au besoin.
Java
mvn compile jib:build -Dimage=gcr.io/PROJECT_ID/pubsub
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
pubsub
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message BUILD SUCCESS apparaît. L'image est stockée dans Container Registry et peut être réutilisée si vous le souhaitez.
Exécutez la commande suivante pour déployer votre application :
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.
pubsub
correspond au nom du conteneur etpubsub-tutorial
au nom du service. Notez que l'image de conteneur est déployée sur le service et le cluster que vous avez configurés précédemment dans la section Configurer les paramètres par défaut de gcloud.Patientez jusqu'à la fin du déploiement, soit environ 30 secondes. En cas de réussite, la ligne de commande affiche l'URL du service. Cette URL est utilisée pour configurer un abonnement Pub/Sub.
Si vous souhaitez déployer une mise à jour de code sur le service, répétez les opérations précédentes. À chaque déploiement sur le service, une révision est créée et le trafic commence automatiquement à être diffusé une fois le déploiement prêt.
Intégrer à Pub/Sub
Maintenant que nous avons déployé notre service Cloud Run for Anthos, nous allons configurer Pub/Sub pour y transférer les messages.
Pour intégrer le service à Pub/Sub, procédez comme suit :
Autorisez Pub/Sub à créer des jetons d'authentification dans votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Remplacez les éléments suivants :
- PROJECT_ID par l'ID de votre projet Google Cloud
- PROJECT-NUMBER par le numéro de votre projet Google Cloud
Créez ou sélectionnez un compte de service pour représenter l'identité de l'abonnement Pub/Sub.
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run for Anthos Pub/Sub Invoker"
Vous pouvez utiliser l'identité
cloud-run-pubsub-invoker
ou la remplacer par un nom unique dans votre projet Google Cloud Platform.Créez un abonnement Pub/Sub avec le compte de service :
Activez les certificats HTTPS et TLS automatiques pour votre cluster, puis ajoutez un mappage de domaine à votre service.
Enregistrez la propriété du domaine pour Pub/Sub.
Ajoutez un code pour valider le jeton d'authentification associé aux messages Pub/Sub. Un exemple de code est indiqué dans la section Authentification et autorisation par le point de terminaison push.
L'authentification doit s'assurer que le jeton est valide et associé au compte de service attendu. Contrairement à Cloud Run, Cloud Run for Anthos ne dispose d'aucune vérification intégrée permettant de vérifier que le jeton est valide ou que le compte de service est autorisé à appeler le service Cloud Run for Anthos.
Créez un abonnement Pub/Sub avec le compte de service :
gcloud pubsub subscriptions create myRunSubscription --topic myRunTopic \ --push-endpoint=SERVICE-URL/ \ --push-auth-service-account=cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
Remplacez
- myRunTopic par le sujet que vous avez créé précédemment.
- SERVICE-URL par l'URL de votre service personnalisé.
Spécifiez
https
comme protocole. - PROJECT_ID par l'ID de votre projet Google Cloud
L'option
--push-auth-service-account
active la fonctionnalité push de Pub/Sub pour l'authentification et l'autorisation.
Votre service est maintenant entièrement intégré à Pub/Sub.
Essayez-le !
Pour tester la solution de bout en bout, procédez comme suit :
Envoyez un message au sujet sur Pub/Sub :
gcloud pubsub topics publish myRunTopic --message "Runner"
Au lieu d'utiliser la ligne de commande comme décrit dans ce tutoriel, vous pouvez programmer la publication des messages. Reportez-vous à la page Publier des messages pour en savoir plus.
Accédez aux journaux du service :
Accédez à la page Cloud Run for Anthos de la console Google Cloud :
Cliquez sur le service
pubsub-tutorial
.Sélectionnez l'onglet Journaux.
L'affichage des journaux peut nécessiter quelques instants. S'ils n'apparaissent pas immédiatement, patientez et vérifiez de nouveau.
Recherchez le message "Hello Runner!".
Effectuer un nettoyage
Pour comprendre plus en détail comment utiliser Cloud Run for Anthos avec Pub/Sub, ignorez le nettoyage pour le moment et poursuivez avec le tutoriel sur le traitement d'images.
Si vous avez créé un projet pour ce tutoriel, supprimez-le. Si vous avez utilisé un projet existant et que vous souhaitez le conserver sans les modifications du présent tutoriel, supprimez les ressources créées pour ce tutoriel.
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.
Pour supprimer le projet :
- 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.
Supprimer les ressources du tutoriel
Supprimez le service Cloud Run pour Anthos que vous avez déployé dans ce tutoriel :
gcloud run services delete SERVICE-NAME
Où SERVICE-NAME est le nom de service que vous avez choisi.
Vous pouvez également supprimer des services Cloud Run for Anthos depuis la console Google Cloud :
Supprimez les configurations gcloud par défaut que vous avez ajoutées lors de la configuration du tutoriel :
gcloud config unset run/platform gcloud config unset run/cluster gcloud config unset run/cluster_location
Supprimez la configuration du projet :
gcloud config unset project
Supprimez les autres ressources Google Cloud créées dans ce tutoriel :
- Supprimez le sujet Pub/Sub
myRunTopic
. - Supprimez l'abonnement Pub/Sub
myRunSubscription
. - Supprimez l'image de conteneur nommée
gcr.io/PROJECT_ID/pubsub
de Container Registry. - Supprimez le compte de service demandeur
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
. - Si vous avez créé un cluster pour ce tutoriel, supprimez-le.
- Supprimez le sujet Pub/Sub
Étapes suivantes
- Développez l'exemple de service déployé dans ce tutoriel pour ajouter une fonctionnalité de traitement d'images qui modifie les images importées dans Cloud Storage.
- Découvrez comment les sujets s'intègrent à l'architecture Pub/Sub et comment gérer les sujets.
- Pour en savoir plus sur les abonnements Pub/Sub, consultez la section Gérer les abonnements.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.