Découvrez comment générer des événements personnalisés à l'aide de l'outil de ligne de commande curl
, puis envoyez ces événements à un service dans Cloud Run pour Anthos sur Google Cloud.
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.
Pour déployer le service Cloud Run pour Anthos, procédez comme suit :
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
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
Lorsque l'URL du service s'affiche, cela signifie que le déploiement a réussi.
Générer des événements à l'aide de cURL
Vous pouvez utiliser l'outil curl
s'exécutant dans un pod Google Kubernetes Engine pour générer des événements :
Créez un pod Google Kubernetes Engine dans l'espace de noms de votre agent d'événements :
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: labels: run: curl name: curl namespace: NAMESPACE spec: containers: - image: radial/busyboxplus:curl imagePullPolicy: IfNotPresent name: curl stdin: true tty: true EOF
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Exécutez la commande suivante pour vérifier que le pod fonctionne correctement :
kubectl get pod curl -n NAMESPACE
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Un pod opérationnel appelé "curl" devrait s'afficher ("Status=Running" indique qu'il est en cours d'exécution).
Créer un déclencheur pour votre agent d'événements
Créez un déclencheur avec un filtre d'événements
alpha-type
:gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=alpha-type \ --custom-type
où NAMESPACE est le même espace de noms que celui de votre agent d'événements.
Si vous ne spécifiez pas de filtre, tous les événements sont envoyés au service Cloud Run pour Anthos. Notez que vous pouvez utiliser un filtrage par mot clé exact sur un nombre illimité d'attributs et d'extensions CloudEvents. Si votre filtre définit plusieurs attributs, un événement doit correspondre à l'ensemble des attributs.
Vérifiez que le déclencheur est configuré :
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 alpha-type cloud-run-service
Un déclencheur opérationnel [TRIGGER-NAME]
doit s'afficher.
Créer un événement
Pour générer un événement, envoyez une requête HTTP à l'agent d'événements à partir du pod Google Kubernetes Engine.
Obtenez l'URL de l'agent d'événements auquel la requête HTTP sera envoyée :
kubectl get brokers default \ --namespace NAMESPACE \ --output jsonpath="{.status.address.url}"
Notez l'URL de l'agent. Vous l'utiliserez pour envoyer la requête HTTP.
Connectez-vous au pod en SSH :
kubectl --namespace NAMESPACE attach curl -it
À l'aide de
curl
, envoyez une requête HTTP dotée d'un en-tête HTTPCe-Type: alpha-type
afin d'obtenir une correspondance entre le filtre du déclencheur et l'agent d'événements. Dans cet exemple, le message estsend-cloudevents-to-broker
:curl -v "EVENT_BROKER_URL" \ -X POST \ -H "Ce-Id: my-id" \ -H "Ce-Specversion: 1.0" \ -H "Ce-Type: alpha-type" \ -H "Ce-Subject: custom event" \ -H "Ce-Source: my-source" \ -H "Content-Type: application/json" \ -d '{"msg":"send-cloudevents-to-broker"}'
Cette opération génère un événement, et l'agent répond alors avec un code de réponse HTTP 202.
Afficher l'événement
Affichez l'événement en consultant les journaux du service Cloud Run pour Anthos :
Pour afficher les journaux, saisissez la commande suivante :
gcloud logging read "resource.type=k8s_container \ resource.labels.namespace_name=events \ resource.labels.container_name=user-container"
Nettoyer
Supprimez les ressources créées dans ce tutoriel pour éviter des frais récurrents.
Supprimez le pod :
kubectl delete pod curl --namespace >NAMESPACE
Supprimez le déclencheur :
gcloud beta events triggers delete TRIGGER_NAME \ --namespace >NAMESPACE