Im Folgenden wird gezeigt, wie Sie mit dem curl
-Befehlszeilentool benutzerdefinierte Ereignisse generieren und diese Ereignisse dann an einen Dienst in Cloud Run for Anthos in Google Cloud senden.
Vorbereitung
Zum Ausführen dieser Aufgabe benötigen Sie einen Ereignis-Broker und Sie müssen wissen, in welchem Namespace er ausgeführt wird. Lesen Sie hier, wie Sie Events for Cloud Run for Anthos konfigurieren und einen Ereignis-Broker erstellen.
Wenn ein Ereignis-Broker ausgeführt wird, können Sie den Kubernetes-Namespace mit folgendem Befehl aufrufen:
kubectl get brokers -n NAMESPACE
Cloud Run for Anthos-Dienst zum Empfangen von Ereignissen bereitstellen
Stellen Sie einen Cloud Run for Anthos-Dienst bereit, der Ereignisse vom Ereignis-Broker empfängt.
So stellen Sie den Cloud Run for Anthos-Dienst bereit:
Klonen Sie das Repository:
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
Erstellen Sie den Container und laden Sie ihn in Cloud Build hoch:
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
Stellen Sie das Container-Image für Cloud Run for Anthos bereit:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --namespace=NAMESPACE \ --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
Wenn die URL des Dienstes angezeigt wird, wurde sie erfolgreich bereitgestellt.
Ereignisse mit cURL generieren
Sie können curl
in einem Google Kubernetes Engine-Pod ausführen, um Ereignisse zu generieren:
Erstellen Sie einen Google Kubernetes Engine-Pod im Namespace Ihres Ereignis-Brokers:
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
Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.
Überprüfen Sie mit dem folgenden Befehl, ob der Pod ordnungsgemäß funktioniert:
kubectl get pod curl -n NAMESPACE
Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.
Es wird nun der Pod mit dem Namen „curl“ ausgeführt (Status=Wird ausgeführt).
Trigger für den Ereignis-Broker erstellen
Erstellen Sie einen Trigger mit dem Filter
alpha-type
für Ereignisse:gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=alpha-type \ --custom-type
Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.
Wenn Sie keinen Filter angeben, werden alle Ereignisse an den Cloud Run for Anthos-Dienst gesendet. Beachten Sie, dass das Filtern mit exakter Übereinstimmung anhand einer beliebigen Anzahl von CloudEvents-Attributen und -Erweiterungen unterstützt wird. Wenn für Ihren Filter mehrere Attribute festgelegt sind, muss ein Ereignis mit allen Attributen übereinstimmen.
Überprüfen Sie, ob der Trigger eingerichtet ist:
gcloud beta events triggers list \ --target-service 'CLOUD_RUN_SERVICE_NAME' \ --namespace NAMESPACE
Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.
Die Ausgabe sieht etwa so aus:
TRIGGER EVENT TYPE TARGET trigger-name alpha-type cloud-run-service
Sie sehen, dass der Trigger [TRIGGER-NAME]
ausgeführt wird.
Erstellen von Terminen
Zum Generieren eines Ereignisses senden Sie eine HTTP-Anfrage vom Google Kubernetes Engine-Pod an den Event-Broker.
Rufen Sie die URL des Ereignis-Brokers ab, an den die HTTP-Anfrage gesendet wird:
kubectl get brokers default \ --namespace NAMESPACE \ --output jsonpath="{.status.address.url}"
Notieren Sie sich die URL des Brokers, um damit die HTTP-Anfrage zu senden.
Stellen Sie eine SSH-Verbindung zum Pod her:
kubectl --namespace NAMESPACE attach curl -it
Senden Sie mit
curl
und dem HTTP-HeaderCe-Type: alpha-type
eine HTTP-Anfrage, um den Filter des Triggers an den Ereignis-Broker anzupassen. In diesem Beispiel lautet die Meldungsend-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"}'
Dadurch wird ein Ereignis generiert und der Broker antwortet dann mit der HTTP-Antwort 202.
Ereignis ansehen
Rufen Sie die Logs des Cloud Run for Anthos-Empfängerdienstes auf, um sich das Ereignis anzusehen:
Zum Aufrufen der Logs geben Sie Folgendes ein:
gcloud logging read "resource.type=k8s_container \ resource.labels.namespace_name=events \ resource.labels.container_name=user-container"
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Ressourcen, um wiederkehrende Gebühren zu vermeiden.
Löschen Sie den Pod:
kubectl delete pod curl --namespace >NAMESPACE
Löschen Sie den Trigger:
gcloud beta events triggers delete TRIGGER_NAME \ --namespace >NAMESPACE