1. Introduction
Cloud Run vous permet d'exécuter des conteneurs sans état dans un environnement entièrement géré. La plate-forme Open Source Knative vous permet d'exécuter vos conteneurs soit de façon entièrement gérée avec Cloud Run, soit dans votre cluster Google Kubernetes Engine avec Cloud Run for Anthos.
Eventarc facilite la connexion de divers services (Cloud Run, Cloud Functions, Workfklows) à des événements provenant de sources diverses. Il vous permet de créer des architectures basées sur des événements dans lesquelles des microservices sont faiblement couplés et distribués. Il se charge également de l'ingestion, de la diffusion, de la sécurité, de l'autorisation et de la gestion des erreurs des événements pour vous, ce qui améliore l'agilité des développeurs et la résilience des applications.
Dans cet atelier de programmation, vous allez découvrir Eventarc. Plus précisément, vous allez écouter des événements provenant de Pub/Sub, de Cloud Storage et de Cloud Audit Logs avec Eventarc, puis les transmettre à un service Cloud Run.
Points abordés
- Vision d'Eventarc
- Découvrir les événements dans Eventarc
- Créer un récepteur Cloud Run
- Créer un déclencheur pour Pub/Sub
- Créer un déclencheur pour Cloud Storage
- Créer un déclencheur pour Cloud Audit Logs
- Explorer l'interface utilisateur d'Eventarc
2. Vision d'Eventarc
Eventarc vise à diffuser des événements provenant de diverses sources d'événements Google, Google Cloud et tierces vers des destinations d'événements Google Cloud.
Sources Google Cloud | Sources d'événements appartenant à des produits appartenant à Google Cloud |
Sources Google | Sources d'événements qui sont des produits appartenant à Google, tels que Gmail, Hangouts, Android Management, etc. |
Sources personnalisées | Sources d'événements qui ne sont pas des produits Google et qui sont créées par les utilisateurs finaux eux-mêmes |
Sources tierces | Sources d'événements qui ne sont ni détenues par Google, ni produites par le client. Cela inclut les sources d'événements populaires telles que Check Point CloudGuard, Datadog, ForgeRock, Lacework, etc., qui sont détenues et gérées par des fournisseurs et partenaires tiers. |
Les événements sont normalisés au format CloudEvents v1.0 pour une interopérabilité multiservice. CloudEvents est une spécification ouverte et neutre du point de vue du fournisseur, qui décrit les données d'événement dans des formats courants, ce qui permet une interopérabilité entre les services, plates-formes et systèmes.
3. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme
PROJECT_ID
), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé. - La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.
Avant de commencer
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré :
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Déployer un service Cloud Run
Déployer un service Cloud Run pour recevoir des événements Vous allez déployer le conteneur Hello de Cloud Run, qui consigne le contenu des événements CloudEvents.
Commencez par activer les services requis pour Cloud Run:
gcloud services enable run.googleapis.com
Déployez le conteneur hello sur Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
En cas de réussite, la ligne de commande affiche l'URL du service. Vous pouvez ouvrir l'URL du service dans n'importe quelle fenêtre de navigateur pour vérifier qu'il est maintenant déployé.
5. Découverte d'événements
Avant de créer des déclencheurs dans Eventarc, vous pouvez découvrir les sources des événements, les types d'événements qu'elles peuvent émettre et comment les configurer pour les utiliser.
Pour afficher la liste des différents types d'événements:
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.
Pour en savoir plus sur chaque type d'événement:
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
Pour afficher la liste des services qui émettent un certain type d'événement:
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
Pour afficher la liste des noms de méthodes (sous-événements) que chaque service peut émettre:
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. Créer un déclencheur Pub/Sub
Vous pouvez recevoir des événements via Cloud Pub/Sub. Toute application peut publier des messages dans Pub/Sub, qui peuvent être distribués à Cloud Run via Eventarc.
Configuration
Avant de créer des déclencheurs, activez les services requis pour Eventarc:
gcloud services enable eventarc.googleapis.com
Les déclencheurs doivent également disposer d'un compte de service. Créez un compte de service :
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Créer
Créez un déclencheur pour filtrer les événements publiés dans le sujet Pub/Sub sur notre service Cloud Run déployé:
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
Le déclencheur Pub/Sub crée un sujet sous les couvertures. Découvrons-le et attribuons-le à une variable:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Utilisez gcloud
pour publier un message dans le sujet:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Le service Cloud Run consigne le corps du message entrant. Vous pouvez l'afficher dans la section "Journaux" de votre instance Cloud Run:
Créer avec un sujet Pub/Sub existant
Par défaut, lorsque vous créez un déclencheur Pub/Sub, Eventarc crée sous les couvertures un sujet que vous pouvez utiliser comme sujet de transport entre votre application et un service Cloud Run. Cela s'avère utile pour créer facilement et rapidement un déclencheur reposant sur Pub/Sub, mais vous pouvez parfois utiliser un sujet existant. Eventarc vous permet de spécifier un sujet Pub/Sub existant dans le même projet à l'aide de l'option gcloud --transport-topic
.
Pour voir comment cela fonctionne, créez un sujet Pub/Sub à utiliser comme sujet de transport:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Créez un déclencheur:
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
Vous pouvez tester le déclencheur en envoyant un message au sujet:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Créer un déclencheur Cloud Storage
Au cours de cette étape, vous allez créer un déclencheur pour écouter les événements de Cloud Storage.
Configuration
Commencez par créer un bucket depuis lequel recevoir des événements:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Accordez le rôle eventarc.eventReceiver
afin que le compte de service puisse être utilisé dans un déclencheur Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Vous devez également ajouter le rôle pubsub.publisher
au compte de service Cloud Storage pour les déclencheurs 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
Créer
Créez un déclencheur pour acheminer les événements de création de fichiers du bucket vers votre service:
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
Répertoriez tous les déclencheurs pour vérifier qu'ils ont bien été créés:
gcloud eventarc triggers list
Importez un fichier dans le bucket Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Si vous consultez les journaux du service Cloud Run dans Cloud Console, vous devriez voir l'événement reçu:
8. Créer un déclencheur Cloud Audit Logs
Bien que le déclencheur Cloud Storage soit le meilleur moyen d'écouter des événements Cloud Storage, dans cette étape, vous allez créer un déclencheur Cloud Audit Logs pour en faire de même.
Configuration
Pour recevoir des événements d'un service, vous devez activer Cloud Audit Logs. Dans la console Cloud, sélectionnez IAM & Admin
et Audit Logs
dans le menu en haut à gauche. Dans la liste des services, cochez Google Cloud Storage
:
Sur la droite, assurez-vous que Admin
, Read
et Write
sont sélectionnés, puis cliquez sur Save
:
Créer
Créez un déclencheur pour acheminer les événements de création de fichiers du bucket vers votre service:
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'initialisation des déclencheurs de journaux d'audit prend un peu de temps. Vous pouvez vérifier que le déclencheur a bien été créé en listant tous les déclencheurs:
gcloud eventarc triggers list
Vous devriez constater que le champ ACTIVE
présente la valeur Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Importez le même fichier dans le bucket Cloud Storage que précédemment:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Si vous consultez les journaux du service Cloud Run dans Cloud Console, vous devriez voir l'événement reçu:
9. Explorer l'interface utilisateur d'Eventarc
Au cours de cette étape, vous allez découvrir l'interface utilisateur d'Eventarc dans la console Google Cloud. L'interface utilisateur d'Eventarc vous permet d'obtenir un aperçu de tous les déclencheurs, de les modifier, de les supprimer et d'en créer d'autres à partir de la console Google Cloud.
Accédez à la section Eventarc de Google Cloud:
La liste des déclencheurs que vous avez créés précédemment s'affiche:
Si vous cliquez sur un déclencheur, vous pouvez consulter ses détails, le modifier ou le supprimer:
Vous pouvez également créer un déclencheur en sélectionnant Create trigger
et en indiquant les détails le concernant:
10. Félicitations !
Bravo ! Vous avez terminé cet atelier de programmation.
Points abordés
- Vision d'Eventarc
- Découvrir les événements dans Eventarc
- Créer un récepteur Cloud Run
- Créer un déclencheur pour Pub/Sub
- Créer un déclencheur pour Cloud Storage
- Créer un déclencheur pour Cloud Audit Logs
- Explorer l'interface utilisateur d'Eventarc