Workflows pour informer les développeurs par e-mail lorsqu’il y a une mise à jour des services Cloud Run. - Part 2

EZEKIAS BOKOVE
4 min readApr 8, 2022

L’adoption en masse de Cloud Run a entrainé des changements dans la manière de travail de plusieurs personnes. Des changements qui impactent les environnements de développement et qui nécessitent parfois des challenges.

Ici, nous allons voir comment améliorer notre architecture précédente en supprimant le service Cloud Run qui servait d’intermédiaire entre Eventarc et Workflow.

Le message des notifications, comportera plusieurs informations liées au service Cloud Run qui a été mise à jour.

Passons maintenant à la configuration de notre système.

Activation des APIs nécessaires

gcloud services enable run.googleapis.com
gcloud services enable eventarc.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable workflows.googleapis.com
gcloud services enable secretmanager.googleapis.com

Création d’un Service pour le test final

Déployons l’image us-docker.pkg.dev/cloudrun/container/hello sur Cloud Run avec, comme nom de service hello.

Laisser le reste des paramètres par défaut.

Activation des journaux d’audit cloud

Pour recevoir des événements d’un service, vous devez activer les journaux d’audit Cloud.

Dans Cloud Console, sélectionnez IAM & Admin suivi d’ Audit Logs dans le menu supérieur gauche. Dans la liste des services, cochez Cloud Run Admin API :

Sélectionner Data Write et cliquer sur SAVE pour enregistrer votre choix.

Configuration des services accounts pour Workflows

Pour utiliser Workflows, on aura besoin d’un service account workflow-push-mail qui aura pour rôle:

Eventarc Event Receiver : récepteur d’événements.

Secret Manager Secret Accessor : avec ce rôle on pourra accéder à la variable d’environnement SENDGRID_API_KEY .

Pour enregistrer la variable SENDGRID_API_KEY dans Secret Manager, sélectionnez Security suivi de Secret Manager dans le menu supérieur gauche. Ensuite, cliquer sur CREATE SECRET et mettez le nom de votre variable et la valeur du secret. Laisser le reste des paramètres par défaut.

Création de notre workflow

Dans le workflow qui va suivre, nous allons récupérer les informations du service Cloud Run qui a déclenché l’événement. Ensuite, nous allons les envoyer aux développeurs par mail.

  • serviceImage: l’image qui a été déployé
  • serviceCreator: les coordonnés de celui qui a fait la mise à jour
  • serviceRegion: la région du service Cloud Run
  • dateCreation: la date et l’heure de la mise à jour du service Cloud Run
  • serviceName: le nom du service Cloud Run
  • revisionName: le nom de la dernière révision du service Cloud Run
  • serviceUrl: l’url du service Cloud Run

Maintenant, nous allons configurer Eventarc.

Configuration des services accounts pour Eventarc

Nous allons créer un service account que nous allons appeler event-trig-workflow qui aura les rôles:

Eventarc Event Receiver : récepteur d’événements.

Workflows Invoker : Accès permettant d’exécuter des workflows et de gérer les exécutions.

Création d’un déclencheur Eventarc

Avant de commencer, vous devez savoir que si vous utiliser une seule région pour votre déclencheur Eventarc, seuls les événements des services Cloud Run de cette région seront capturé. Si vous voulez prendre en charge tous vos services Cloud Run, il faut utiliser la région global .

Maintenant, procédons à la configuration de notre déclencheur Eventarc avec le service account event-trig-workflow . Nous allons prendre comme source de destination notre workflow précédent.

C’est le moment de tester notre configuration. Pour cela, il suffit de faire une mise à jour du service hello que nous avons déployé premièrement (par exemple, modifier le nombre de demandes maximales par conteneur) et vous allez recevoir un mail.

Pour l’envoi de mail à partir de workflow, j’ai utilisé l’article de Guillaume Laforge

Vous pouvez utiliser une fonction (Cloud Functions) pour envoyer les mails. Vous n’aurez qu’à faire appel à votre fonction et lui passer les informations récupérer. Si cela vous êtes intéressé voici un article qui pourra vous aider👇.

Merci à vous pour la lecture et à mon mentor guillaume blaquiere pour les conseils.

--

--

EZEKIAS BOKOVE

GDE & Champion Innovators for Google Cloud. Serverless & DevOps enthusiast. I like to learn from others, to share my knowledge with other people.