Obtén información para generar eventos personalizados mediante la herramienta de línea de comandos de curl
y, luego, enviar esos eventos a un servicio en Cloud Run for Anthos en Google Cloud.
Antes de comenzar
Para completar esta tarea, debes tener un agente de eventos y saber en qué espacio de nombres se ejecuta. Obtén más información sobre cómo configurar eventos para Cloud Run for Anthos y crear un agente de eventos.
Si tienes un agente de eventos en ejecución, puedes ver el espacio de nombres de Kubernetes si ejecutas este comando:
kubectl get brokers -n NAMESPACE
Implementa un servicio de receptor de eventos de Cloud Run for Anthos
Implementa un servicio de Cloud Run for Anthos que reciba eventos del agente de eventos.
Para implementar el servicio Cloud Run for Anthos, haz lo siguiente:
Clona el repositorio:
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
Compila el contenedor y súbelo a Cloud Build:
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
Implementa la imagen de contenedor en Cloud Run for Anthos:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --namespace=NAMESPACE \ --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
Si ves la URL del servicio, la implementación se realizó de forma correcta.
Genera eventos mediante cURL
Puedes usar curl
en ejecución en un Pod de Google Kubernetes Engine para generar eventos:
Crea un Pod de Google Kubernetes Engine en el espacio de nombres de tu agente de eventos:
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
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
Ejecuta el siguiente comando para verificar que el Pod funcione de forma correcta:
kubectl get pod curl -n NAMESPACE
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
Verás un Pod llamado “curl” en funcionamiento (Estado=En ejecución).
Crea un activador para tu agente de eventos
Crea un activador con filtro de eventos
alpha-type
:gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=alpha-type \ --custom-type
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
Si no especificas un filtro, todos los eventos se envían al servicio de Cloud Run for Anthos. Ten en cuenta que se admite el filtrado de concordancia exacta en cualquier cantidad de atributos y extensiones de CloudEvents. Si el filtro establece varios atributos, un evento debe coincidir con todos ellos.
Verifica que el activador esté configurado:
gcloud beta events triggers list \ --target-service 'CLOUD_RUN_SERVICE_NAME' \ --namespace NAMESPACE
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
El resultado es similar al siguiente:
TRIGGER EVENT TYPE TARGET trigger-name alpha-type cloud-run-service
Verás que el activador [TRIGGER-NAME]
está en funcionamiento.
Crea un evento
Para generar un evento, envía una solicitud HTTP al agente de eventos desde el Pod de Google Kubernetes Engine.
Obtén la URL del agente de eventos al que se realizará la solicitud HTTP:
kubectl get brokers default \ --namespace NAMESPACE \ --output jsonpath="{.status.address.url}"
Toma nota de la URL del agente; la usarás para enviar la solicitud HTTP.
Establece una conexión SSH al Pod:
kubectl --namespace NAMESPACE attach curl -it
Realiza una solicitud HTTP mediante
curl
con el encabezado HTTPCe-Type: alpha-type
para hacer coincidir el filtro del activador con el agente de eventos. En este ejemplo, el mensaje essend-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"}'
Esto genera un evento, y el agente emite una respuesta HTTP 202.
Visualiza el evento
Visualiza el evento mediante los registros del servicio de receptor de Cloud Run for Anthos:
Para ver los registros, escribe lo siguiente:
gcloud logging read "resource.type=k8s_container \ resource.labels.namespace_name=events \ resource.labels.container_name=user-container"
Realiza una limpieza
Borra los recursos que se crearon en este instructivo para evitar cargos recurrentes.
Borra el Pod:
kubectl delete pod curl --namespace >NAMESPACE
Borra el activador:
gcloud beta events triggers delete TRIGGER_NAME \ --namespace >NAMESPACE