Découvrez comment déployer un service dans Cloud Run pour Anthos sur Google Cloud, puis créer et envoyer des événements à ce service à partir de Cloud Audit Logging.
Avant de commencer
Pour effectuer cette tâche, vous devez disposer d'un agent d'événements et savoir dans quel espace de noms il s'exécute. Découvrez comment configurer des événements pour Cloud Run pour Anthos et créer un agent d'événements.
Si vous disposez d'un agent d'événements en cours d'exécution, vous pouvez afficher l'espace de noms Kubernetes en exécutant la commande suivante :
kubectl get brokers -n NAMESPACE
Déployer un service de récepteur d'événements Cloud Run pour Anthos
Déployez un service Cloud Run pour Anthos qui reçoit les événements de l'agent d'événements.
Clonez le dépôt :
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Créez le conteneur et importez-le dans Cloud Build :
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
où CLOUD_RUN_CONTAINER_NAME est le nom de fichier de votre conteneur.
Déployez l'image de conteneur dans Cloud Run pour Anthos :
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --namespace=NAMESPACE \ --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Lorsque l'URL du service s'affiche, cela signifie que le déploiement a réussi.
Créer un déclencheur pour les journaux d'audit Cloud
Créez un déclencheur dans le même espace de noms que votre agent d'événements :
gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=google.cloud.audit.log.v1.written \ --parameters serviceName=pubsub.googleapis.com \ --parameters methodName=google.pubsub.v1.Publisher.CreateTopic
Dans cet exemple, le déclencheur filtre les entrées des journaux Cloud Audit Logging dont les entrées
methodName
correspondent àgoogle.pubsub.v1.Publisher.CreateTopic
. Pour plus d'options de filtrage, consultez la section Format AuditLog.Attendez 60 secondes, puis vérifiez que le déclencheur fonctionne :
gcloud beta events triggers list \ --target-service CLOUD_RUN_SERVICE_NAME \ --namespace NAMESPACE
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Le résultat ressemble à ce qui suit :
TRIGGER EVENT TYPE TARGET trigger-name google.cloud.audit.log.v1.written cloud-run-service
Générer un événement
Générez un événement en créant un sujet Pub/Sub :
gcloud pubsub topics create TOPIC_NAME
Vérifiez que le service Cloud Run pour Anthos a reçu l'événement :
kubectl logs \ --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \ -c user-container \ -n NAMESPACE \ --tail=200
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Le résultat ressemble à ce qui suit :
[...] [2020-09-10 18:51:28 +0000] [1] [INFO] Starting gunicorn 20.0.4 [2020-09-10 18:51:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1) [2020-09-10 18:51:28 +0000] [1] [INFO] Using worker: threads [2020-09-10 18:51:28 +0000] [7] [INFO] Booting worker with pid: 7 GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted2 [...]
Nettoyer
Supprimez les ressources créées dans ce tutoriel pour éviter des frais récurrents.
Pour supprimer le déclencheur, saisissez :
gcloud beta events triggers delete TRIGGER_NAME \ --namespace NAMESPACE
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Supprimez le sujet Pub/Sub :
gcloud pubsub topics delete TOPIC_NAME