Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.
Guide de démarrage rapide : Recevoir des événements à l'aide de Cloud Audit Logs (Google Cloud CLI)

Recevoir des événements à l'aide de Cloud Audit Logs (gcloud CLI)

Ce guide de démarrage rapide explique comment configurer un service Google Kubernetes Engine (GKE) en tant que destination pour recevoir des événements de Cloud Storage à l'aide d'Eventarc.

Dans ce guide, vous allez :

  1. Créer un bucket Cloud Storage qui servira de source d'événements.
  2. Créer un cluster GKE
  3. Configurer un compte de service pour extraire des événements de Pub/Sub à l'aide d'un composant de redirecteur d'événement qui transfère les événements à la cible.
  4. Initialiser les destinations GKE dans Eventarc.
  5. Déployer un service GKE qui reçoit des événements
  6. Créer un déclencheur Eventarc qui envoie des événements depuis Cloud Storage vers le service GKE.
  7. Importer un fichier dans le bucket Cloud Storage pour générer un événement et afficher l'événement dans les journaux du pod GKE.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  6. Installez et initialisez Google Cloud CLI. Si vous êtes invité à configurer une région de calcul par défaut, saisissez n.
  7. Mettez à jour les composants gcloud :
    gcloud components update
  8. Activez les API Google Cloud, Cloud Build, Resource Manager, Google Kubernetes Engine, Container Registry et Eventarc :
    gcloud services enable cloudapis.googleapis.com
    gcloud services enable cloudbuild.googleapis.com
    gcloud services enable cloudresourcemanager.googleapis.com
    gcloud services enable container.googleapis.com
    gcloud services enable containerregistry.googleapis.com
    gcloud services enable eventarc.googleapis.com
  9. Définissez les variables de configuration utilisées dans ce guide de démarrage rapide :
    gcloud config set project PROJECT_ID
    gcloud config set run/cluster events-cluster
    gcloud config set run/cluster_location us-central1
    gcloud config set run/platform gke
    gcloud config set eventarc/location us-central1
    PROJECT_ID correspond à l’ID de votre projet Google Cloud.
  10. Facultatif : Vous pouvez vérifier les paramètres de configuration à l'aide de Google Cloud CLI en saisissant la commande suivante :
    gcloud config list
    La sortie devrait ressembler à ce qui suit :
    [eventarc]
    location = us-central1
    [run]
    cluster = events-cluster
    cluster_location = us-central1
    platform = gke
  11. Activez les journaux d'audit Cloud de type Lecture administrateur, Lecture de données et Ecriture de données dans Cloud Storage :
    1. Consultez la stratégie IAM de votre projet et stockez-la dans un fichier :
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. Modifiez votre stratégie dans /tmp/policy.yaml. Vous ne pouvez ajouter ou modifier que la configuration des journaux d'audit pour l'accès aux données.

      auditConfigs:
      - auditLogConfigs:
        - logType: ADMIN_READ
        - logType: DATA_WRITE
        - logType: DATA_READ
        service: storage.googleapis.com
      bindings:
      - members:
        - user:EMAIL_ADDRESS
        role: roles/owner
      etag: BwW_bHKTV5U=
      version: 1
      Remplacez EMAIL_ADDRESS par votre adresse e-mail.
    3. Rédigez votre nouvelle stratégie IAM :

      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      Si la commande précédente signale un conflit avec une autre modification, répétez ces étapes en commençant par lire le stratégie IAM du projet.

Créer un bucket Cloud Storage

Ce guide de démarrage rapide utilise Cloud Storage comme source d'événements. Pour créer un bucket de stockage, procédez comme suit :

gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/

Une fois la source d'événements créée, vous pouvez déployer le service récepteur d'événements sur GKE.

Créer un cluster GKE

Créez un cluster GKE avec le module complémentaire HttpLoadBalancing. Activez Workload Identity pour accéder aux services Google Cloud à partir d'applications s'exécutant dans GKE.

PROJECT_ID=$(gcloud config get-value project)

gcloud beta container clusters create events-cluster \
  --addons=HttpLoadBalancing \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=2 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=2  \
  --logging=SYSTEM,WORKLOAD \
  --monitoring=SYSTEM \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone us-central1 \
  --release-channel=rapid \
  --workload-pool=$PROJECT_ID.svc.id.goog

Patientez pendant la création du cluster. Vous pouvez ignorer les avertissements pendant le processus de création. Une fois le cluster créé, le résultat doit ressembler à ce qui suit:

Creating cluster events-cluster...done.
Created [https://container.googleapis.com/v1beta1/projects/my-project/zones/us-central1/clusters/events-cluster].

my-project correspond à l’ID de votre projet Google Cloud.

Cela crée un cluster GKE nommé events-cluster dans my-project.

Configurer un compte de service Google

Configurez un compte de service fourni par l'utilisateur et attribuez-lui des rôles spécifiques afin que le composant de redirecteur d'événements puisse extraire des événements de Pub/Sub et les transférer à la cible.

  1. Créez un compte de service appelé TRIGGER_GSA qui sera utilisé pour créer des déclencheurs :

    TRIGGER_GSA=eventarc-gke-triggers
    gcloud iam service-accounts create $TRIGGER_GSA
  2. Attribuez les rôles pubsub.subscriber, monitoring.metricWriter et eventarc.eventReceiver au compte de service :

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
      --role "roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
      --role "roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
     --role "roles/eventarc.eventReceiver"

Activer les destinations GKE

Pour chaque déclencheur qui cible un service GKE, Eventarc crée un composant de redirecteur d'événement qui extrait les événements de Pub/Sub et les transfère vers la cible. Pour créer le composant et gérer les ressources dans le cluster GKE, accordez des autorisations à un compte de service Eventarc :

  1. Activez les destinations GKE pour Eventarc :

    gcloud eventarc gke-destinations init
    
  2. Lorsque vous êtes invité à lier les rôles requis, saisissez y.

    Les rôles suivants sont liés au compte de service :

    • compute.viewer
    • container.developer
    • iam.serviceAccountAdmin

Créer une destination de service GKE

À l'aide d'une image prédéfinie, gcr.io/cloudrun/hello, déployez un service GKE qui recevra et consignera les événements :

  1. Créez un déploiement Kubernetes :

    SERVICE_NAME=hello-gke
    kubectl create deployment $SERVICE_NAME \
    --image=gcr.io/cloudrun/hello
    
  2. Exposez-le en tant que service Kubernetes:

    kubectl expose deployment $SERVICE_NAME \
    --type LoadBalancer --port 80 --target-port 8080
    

Créer un déclencheur Cloud Audit Logs

Lorsque vous importez un fichier dans Cloud Storage, le déclencheur Eventarc envoie des événements depuis Cloud Storage vers le service GKE hello-gke pour Anthos.

  1. Créez un déclencheur Cloud Audit Logs :

    gcloud eventarc triggers create my-gke-trigger \
      --location=$TRIGGER_LOCATION \
      --destination-gke-cluster="events-cluster" \
      --destination-gke-location="us-central1" \
      --destination-gke-namespace="default" \
      --destination-gke-service="hello-gke" \
      --destination-gke-path="/" \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.objects.create" \
      --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com
    

    Cette action crée un déclencheur appelé my-gke-trigger.

  2. Vérifiez que le déclencheur a bien été créé :

    gcloud eventarc triggers list
    

    Le résultat doit se présenter comme suit :

    NAME                 TYPE                                           DESTINATION                           ACTIVE
    my-gke-trigger       google.cloud.audit.log.v1.written              GKE: hello-gke                        Yes
    

Générer et afficher un événement

Importez un fichier texte dans Cloud Storage pour générer un événement et déclencher le service GKE. Vous pouvez ensuite afficher le message de l'événement dans les journaux du pod.

  1. Transférez un fichier texte vers Cloud Storage :

    echo "Hello World" > random.txt
    gsutil cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt

    L'importation génère un événement, et le pod GKE consigne le message de l'événement.

  2. Pour afficher le message d'événement, procédez comme suit:

    1. Recherchez l'ID du pod:
      kubectl get pods
      
      Le résultat doit se présenter comme suit :
      NAME                                         READY   STATUS             RESTARTS   AGE
      hello-gke-645964f578-2mjjt                   1/1     Running            0          35s
      NAME est le nom du pod. Copiez la valeur de NAME afin de pouvoir l'utiliser à l'étape suivante.
    2. Vérifiez les journaux du pod:
      kubectl logs NAME
      Remplacez NAME par le nom du pod que vous avez copié.
    3. Recherchez une entrée de journal semblable à ceci :
      2022/02/24 22:23:49 Hello from Cloud Run! The container started successfully and is listening for HTTP requests on $PORT
      {"severity":"INFO","eventType":"google.cloud.audit.log.v1.written","message":"Received event of type google.cloud.audit.log.v1.written. [...]}
      

Effectuer un nettoyage

Bien que Cloud Run ne facture pas un service inutilisé, il se peut que des frais vous soient toujours facturés pour le stockage de l'image de conteneur dans Container Registry, les ressources Eventarc, les messages Pub/Sub et pour le cluster GKE.

Vous pouvez supprimer votre image, supprimer votre bucket de stockage et supprimer le cluster GKE.

Pour supprimer le déclencheur Eventarc :

gcloud eventarc triggers delete my-gke-trigger

Vous pouvez également supprimer votre projet Google Cloud pour éviter des frais. La suppression de votre projet Cloud arrête la facturation de toutes les ressources utilisées dans ce projet.

gcloud projects delete PROJECT_ID_OR_NUMBER

Remplacez PROJECT_ID_OR_NUMBER par l'ID ou le numéro du projet.

Étape suivante

Recevoir des événements à l'aide de Pub/Sub (Google Cloud CLI)