Eventos para el codelab de Cloud Run for Anthos

1. Introducción

6a5cf23c8e20491f.png

Cloud Run te permite ejecutar contenedores sin estado en un entorno completamente administrado. Se basa en Knative de código abierto, lo que te permite ejecutar tus contenedores completamente administrados con Cloud Run o en tu clúster de Google Kubernetes Engine con Cloud Run for Anthos.

Events for Cloud Run for Anthos facilita la conexión de los servicios de Cloud Run con eventos de una variedad de fuentes. Te permite compilar arquitecturas basadas en eventos en las que los microservicios están distribuidos y con acoplamiento bajo. También se encarga de la transferencia, la entrega, la seguridad, la autorización y el manejo de errores de eventos por ti, lo que mejora la agilidad de los desarrolladores y la resiliencia de las aplicaciones.

En este codelab, aprenderás sobre los eventos para Cloud Run for Anthos. Más específicamente, escucharás eventos de Cloud Pub/Sub, registros de auditoría, Cloud Storage y Cloud Scheduler, y aprenderás a producir y consumir eventos personalizados.

Qué aprenderás

  • Visión a largo plazo de los eventos para Cloud Run for Anthos
  • Estado actual de Eventos para Cloud Run for Anthos
  • Crear un receptor de Cloud Run
  • Crear un activador de eventos para Cloud Pub/Sub
  • Crear un activador de eventos para los registros de auditoría
  • Crea un activador de eventos para Cloud Storage
  • Crea un activador de eventos para Cloud Scheduler
  • Produce y consume eventos personalizados

2. Visión a largo plazo

A medida que adoptamos la arquitectura sin servidores, los eventos se convierten en una parte integral de la forma en que se comunican los microservicios desacoplados. Events for Cloud Run for Anthos hace que los eventos sean un elemento fundamental de la oferta de Cloud Run for Anthos, de modo que sea fácil compilar aplicaciones sin servidores basadas en eventos.

Los eventos para Cloud Run for Anthos permiten la entrega asíncrona confiable, segura y escalable de eventos desde fuentes de eventos empaquetadas o creadas por aplicaciones a consumidores dentro y fuera del clúster.

ce389bcafba6d669.png

Fuentes de Google Cloud

Fuentes de eventos que son productos propiedad de Google Cloud

Fuentes de Google

Fuentes de eventos que son productos de Google, como Gmail, Hangouts, Android Management y muchos más

Fuentes personalizadas

Fuentes de eventos que no son productos de Google y que crean los usuarios finales. Pueden ser fuentes de Knative desarrolladas por el usuario o cualquier otra app que se ejecute en el clúster y que pueda producir un Cloud Event.

Fuentes externas

Son fuentes de eventos que no son propiedad de Google ni de los usuarios finales. Esto incluye fuentes de eventos populares, como GitHub, SAP, Datadog, PagerDuty, etc., que son propiedad de proveedores externos, socios o comunidades de OSS, y que estos mantienen.

Los eventos se normalizan al formato CloudEvents v1.0 para la interoperabilidad entre servicios. CloudEvents es una especificación abierta independiente del proveedor que describe los datos de eventos en formatos comunes, lo que permite la interoperabilidad entre servicios, plataformas y sistemas.

Events for Cloud Run cumple con Knative Eventing y permite la portabilidad de contenedores hacia y desde otras implementaciones basadas en Knative. Esto proporciona un framework coherente y que no depende de la nube para conectar de forma declarativa los productores de eventos con los consumidores de eventos.

3. Estado actual

Esta versión preliminar es la primera que ofrece un conjunto inicial de la funcionalidad a largo plazo.

b1dd0d8a73185b95.png

Para permitir que los usuarios compilen aplicaciones sin servidores controladas por eventos, nuestro enfoque inicial se centra en dos aspectos:

  1. Proporcionar un amplio ecosistema de fuentes de Google Cloud que permita que los servicios de Cloud Run en el clúster de Anthos reaccionen a los eventos de los servicios de Google Cloud
  • Al principio, los eventos de las fuentes de Google Cloud se entregan a través de los Registros de auditoría de Cloud (CAL), lo que permite una gran variedad de fuentes de eventos. La latencia y la disponibilidad de la entrega de eventos desde estas fuentes están vinculadas a las de los Registros de auditoría de Cloud. Cada vez que se publica un evento de una fuente de Google Cloud, se crea una entrada de registro de auditoría de Cloud correspondiente.
  • Junto con los registros de auditoría de Cloud, existe compatibilidad de primer nivel para consumir eventos de Cloud Storage, Cloud Pub/Sub y Cloud Scheduler. Seguiremos expandiendo este ecosistema de fuentes con más fuentes de primer nivel a medida que aprendamos más sobre los recorridos de los usuarios y sus comentarios.
  1. Permite que las aplicaciones y los servicios para usuarios finales emitan eventos personalizados publicándolos en una URL de Broker local del clúster con alcance de espacio de nombres.

El mecanismo de entrega subyacente usa temas y suscripciones de Cloud Pub/Sub que son visibles en los proyectos de los clientes. Por lo tanto, la función proporciona las mismas garantías de entrega que Cloud Pub/Sub.

El activador de eventos proporciona una forma de suscribirse a eventos para que los eventos que coincidan con el filtro del activador se entreguen en el destino (o receptor) al que apunta el activador.

Todos los eventos se entregan en el formato CloudEvents v1.0 para la interoperabilidad entre servicios.

Seguiremos ofreciendo más valor de forma iterativa hasta el lanzamiento de la versión GA y más allá.

4. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a la consola de Cloud y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • El Nombre del proyecto es el nombre visible de este proyecto. Siempre que sigas sus convenciones de nomenclatura, puedes usar lo que quieras y actualizarlo en cualquier momento.
  • El ID del proyecto debe ser único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar una vez que se configura). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (suele identificarse como PROJECT_ID), por lo que, si no te gusta, genera otro aleatorio o puedes probar con uno propio y ver si está disponible. Después de crear el proyecto, este ID se “congela” y no se puede cambiar.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud recursos.

Ejecutar este codelab no debería costar mucho, tal vez nada. Asegúrate de seguir las instrucciones de la sección “Realiza una limpieza”, en la que se aconseja cómo cerrar recursos para que no se te facture más allá de este instructivo. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.

Inicia Cloud Shell

Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

En GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:

bce75f34b2c53987.png

El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:

f6ef2b5f13479f3a.png

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Puedes realizar todo tu trabajo en este lab usando simplemente un navegador.

5. Habilita las APIs y configura la zona y la plataforma

Configura el ID del proyecto y, luego, instala los componentes alfa

En Cloud Shell, GOOGLE_CLOUD_PROJECT ya debería estar configurado en el ID de tu proyecto. Si no es así, asegúrate de que esté configurado y de que tu gcloud esté configurado con ese ID del proyecto:

export GOOGLE_CLOUD_PROJECT=your-project-id
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

Asegúrate de que el componente de gcloud para la versión alfa esté instalado:

gcloud components install alpha

Habilita las APIs

Habilita todos los servicios necesarios con el siguiente comando:

gcloud services enable cloudapis.googleapis.com 
gcloud services enable container.googleapis.com 
gcloud services enable containerregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com

Establece la zona y la plataforma

Antes de crear un clúster de GKE con Cloud Run Events, establece el nombre del clúster, la zona y la plataforma. Por ejemplo, aquí configuramos el nombre y la zona en events-cluster y europe-west1-b, y la plataforma en gke,.

En Cloud Shell:

export CLUSTER_NAME=events-cluster
export CLUSTER_ZONE=europe-west1-b

gcloud config set run/cluster ${CLUSTER_NAME}
gcloud config set run/cluster_location ${CLUSTER_ZONE}
gcloud config set run/platform gke

Puedes verificar que la configuración esté establecida:

gcloud config list

...
[run]
cluster = events-cluster
cluster_location = europe-west1-b
platform = gke

6. Crea un clúster de GKE con Cloud Run Events

Crea un clúster de GKE que ejecute Kubernetes >= 1.15.9-gke.26, con los siguientes complementos habilitados: CloudRun, HttpLoadBalancing, HorizontalPodAutoscaling:

gcloud beta container clusters create ${CLUSTER_NAME} \
  --addons=HttpLoadBalancing,HorizontalPodAutoscaling,CloudRun \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=3 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=3 --image-type=cos \
  --enable-stackdriver-kubernetes \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone ${CLUSTER_ZONE} \
  --release-channel=rapid

7. Configura eventos de Cloud Run (plano de control)

Los eventos de Cloud Run tienen un plano de control y un plano de datos que deben configurarse por separado. Para configurar el plano de control, haz lo siguiente:

En Cloud Shell:

gcloud beta events init 

Esto inicializará el sistema de eventos y también creará varias cuentas de servicio necesarias. Asegúrate de seleccionar “Sí” cuando se te solicite crear una cuenta de servicio.

En este punto, el plano de control debería estar inicializado correctamente. Deberías ver cuatro Pods con un

Estado de Running, 2 (controller-xxx-xxx y webhook-xxx-xxx) en el espacio de nombres cloud-run-events y 2 (eventing-controller-xxx-xxx y eventing-webhook-xxx-xxx) en el espacio de nombres knative-eventing. Para verificarlo, ejecuta los siguientes comandos:

kubectl get pods -n cloud-run-events

NAME                         READY   STATUS    RESTARTS   AGE
controller-9cc679b67-2952n   1/1     Running   0          22s
webhook-8576c4cfcb-dhz82     1/1     Running   0          16m
kubectl get pods -n knative-eventing

NAME                                   READY   STATUS    RESTARTS   AGE
eventing-controller-77f46f6cf8-kj9ck   1/1     Running   0          17m
eventing-webhook-5bc787965f-hcmwg      1/1     Running   0          17m

8. Configura Cloud Run Events (plano de datos)

A continuación, debes configurar el plano de datos en los espacios de nombres del usuario. Esto crea un agente con los permisos adecuados para leer y escribir en Pub/Sub.

En Cloud Shell, configura una variable de entorno NAMESPACE para el espacio de nombres que deseas usar para tus objetos. Puedes establecerlo en default si deseas usar el espacio de nombres predeterminado, como se muestra a continuación:

export NAMESPACE=default

Ten en cuenta que, si el espacio de nombres especificado no existe (es decir, no es el predeterminado), debes crearlo:

kubectl create namespace ${NAMESPACE}

Inicializa el espacio de nombres con el secreto predeterminado:

gcloud beta events namespaces init ${NAMESPACE} --copy-default-secret 

Crea un agente predeterminado en el espacio de nombres:

gcloud beta events brokers create default --namespace ${NAMESPACE}

Verifica que se haya creado el agente. Ten en cuenta que el agente puede tardar unos segundos en estar listo:

kubectl get broker -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-brokercell-ingress.cloud-run-events.svc.cluster.local/default/default

9. Descubrimiento de eventos

Puedes descubrir cuáles son las fuentes registradas, los tipos de eventos que pueden emitir y cómo configurar activadores para consumirlos.

Para ver la lista de los diferentes tipos de eventos, haz lo siguiente:

gcloud beta events types list

Para obtener más información sobre cada tipo de evento, haz lo siguiente:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

10. Crea un receptor de Cloud Run

Como receptor de eventos, implementa un servicio de Cloud Run que registre el contenido del CloudEvent que recibe.

Puedes usar el event_display de Knative que ya está compilado y cuya imagen de contenedor se compiló como parte de la versión de Knative. Puedes ver los detalles de la imagen del contenedor en event-display.yaml:

...
containers:
  - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

Implementa en Cloud Run

Implementa una aplicación alojada en contenedores en Cloud Run:

export SERVICE_NAME=event-display
gcloud run deploy ${SERVICE_NAME} \
  --namespace=${NAMESPACE} \
  --image gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

Si la operación se completa de forma correcta, la línea de comandos mostrará la URL de servicio. Ahora puedes abrir la URL de servicio en cualquier ventana del navegador para visitar el contenedor implementado.

11. Crear un activador de eventos para Cloud Pub/Sub

Una forma de recibir eventos es a través de Cloud Pub/Sub. Las aplicaciones personalizadas pueden publicar mensajes en Cloud Pub/Sub, y estos mensajes pueden entregarse a receptores de Google Cloud Run a través de Eventos para Cloud Run.

Crea un tema

Primero, crea un tema de Cloud Pub/Sub. Puedes reemplazar TOPIC_ID por el nombre de tema único que prefieras:

export TOPIC_ID=cr-gke-topic
gcloud pubsub topics create ${TOPIC_ID}

Crea un activador

Antes de crear el activador, obtén más detalles sobre los parámetros que necesitarás para crear un activador para eventos de Cloud Pub/Sub:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

Crea un activador para filtrar los eventos publicados en el tema de Cloud Pub/Sub en nuestro servicio de Cloud Run implementado:

gcloud beta events triggers create trigger-pubsub \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type google.cloud.pubsub.topic.v1.messagePublished \
  --parameters topic=${TOPIC_ID}

Prueba el activador

Para verificar que se haya creado el activador, enumera todos los activadores:

gcloud beta events triggers list

Es posible que debas esperar hasta 10 minutos para que se propague la creación del activador y comience a filtrar eventos.

Para simular una aplicación personalizada que envía un mensaje, puedes usar gcloud para activar un evento:

gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"

El receptor de Cloud Run que creamos registra el cuerpo del mensaje entrante. Puedes ver esto en la sección Registros de tu instancia de Cloud Run:

9526909a06c6d4f4.png

Ten en cuenta que "Hola" se codificará en base64, ya que Pub/Sub lo envió, y deberás decodificarlo si quieres ver el mensaje original enviado.

Borra el activador

De manera opcional, puedes borrar el activador cuando termines de probarlo.

gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}

12. Crear un activador de eventos para los registros de auditoría

Configurarás un activador para escuchar eventos de registros de auditoría. Más específicamente, buscarás eventos de creación de temas de Pub/Sub en los registros de auditoría.

Habilita los registros de auditoría

Para recibir eventos de un servicio, debes habilitar los registros de auditoría. En la consola de Cloud, selecciona IAM & Admin > Audit Logs en el menú de la esquina superior izquierda. En la lista de servicios, marca Google Cloud Pub/Sub:

97bd4b57c6a05fcc.png

En el lado derecho, asegúrate de que estén seleccionadas las opciones Administrador, Lectura y Escritura. Haz clic en Guardar:

bec31b4f35fbcea.png

Registros de auditoría de prueba

Para aprender a identificar los parámetros, necesitarás configurar un activador real y realizar una operación real.

Por ejemplo, crea un tema de Pub/Sub:

gcloud pubsub topics create cre-gke-topic1

Ahora, veamos qué tipo de registro de auditoría generó esta actualización. En la consola de Cloud, selecciona Logging > Logs Viewer en el menú de la esquina superior izquierda.

En Query Builder,, elige Cloud Pub/Sub Topic y haz clic en Add:

f5c634057e935bc6.png

Una vez que ejecutes la consulta, verás los registros de los temas de Pub/Sub, y uno de ellos debería ser google.pubsub.v1.Publisher.CreateTopic:

b083cce219773d24.png

Observa los objetos serviceName, methodName y resourceName. Los usaremos para crear el activador.

Crea un activador

Ahora, ya puedes crear un activador de eventos para los registros de auditoría.

Para obtener más detalles sobre los parámetros que necesitarás para crear un activador para eventos de fuentes de Google Cloud, ejecuta el siguiente comando:

gcloud beta events types describe google.cloud.audit.log.v1.written

Crea el activador con los filtros correctos:

gcloud beta events triggers create trigger-auditlog \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.audit.log.v1.written \
  --parameters serviceName=pubsub.googleapis.com \
  --parameters methodName=google.pubsub.v1.Publisher.CreateTopic

Prueba el activador

Haz una lista de todos los activadores para confirmar que se creó correctamente:

gcloud beta events triggers list

Espera hasta 10 minutos para que se propague la creación del activador y comience a filtrar eventos. Cuando esté listo, filtrará los eventos de creación y los enviará al servicio. Ya tienes todo listo para activar un evento.

Crea otro tema de Pub/Sub, como hiciste antes:

gcloud pubsub topics create cre-gke-topic2

Si revisas los registros del servicio de Cloud Run en Cloud Console, deberías ver el evento recibido:

aff3b2e7ad05c75d.png

Borra el activador y los temas

De manera opcional, puedes borrar el activador una vez que termines de probarlo:

gcloud beta events triggers delete trigger-auditlog

También borra los siguientes temas:

gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2

13. Crea un activador de eventos para Cloud Storage

Configurarás un activador para escuchar eventos de Cloud Storage.

Cree un depósito

Primero, crea un bucket de Cloud Storage en la misma región que el servicio de Cloud Run implementado. Puedes reemplazar BUCKET_NAME por el nombre único que prefieras:

export BUCKET_NAME=[new bucket name]
export REGION=europe-west1

gsutil mb -p $(gcloud config get-value project) \
  -l $REGION \
  gs://$BUCKET_NAME/

Configura permisos de Cloud Storage

Antes de crear un activador, debes otorgar permiso a la cuenta de servicio predeterminada de Cloud Storage para publicar en Pub/Sub.

Primero, debes encontrar la cuenta de servicio que Cloud Storage usa para publicar en Pub/Sub. Puedes seguir los pasos que se describen en Cómo obtener la cuenta de servicio de Cloud Storage para obtener la cuenta de servicio o usar el siguiente comando:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/projects/$(gcloud config get-value project)/serviceAccount"

La cuenta de servicio debe aparecer en email_address.

Supongamos que la cuenta de servicio que encontraste anteriormente era service-XYZ@gs-project-accounts.iam.gserviceaccount.com. Establece esto en una variable de entorno:

export GCS_SERVICE_ACCOUNT=service-XYZ@gs-project-accounts.iam.gserviceaccount.com

Luego, otorga derechos a esa cuenta de servicio para publicar en Pub/Sub:

gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
  --member=serviceAccount:${GCS_SERVICE_ACCOUNT} \
  --role roles/pubsub.publisher

Crea un activador

Ahora, ya puedes crear un activador de eventos para los eventos de Cloud Storage.

Puedes obtener más detalles sobre los parámetros que necesitarás para construir el activador:

gcloud beta events types describe google.cloud.storage.object.v1.finalized

Crea el activador con los filtros correctos:

gcloud beta events triggers create trigger-storage \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.storage.object.v1.finalized \
  --parameters bucket=${BUCKET_NAME}

Prueba el activador

Haz una lista de todos los activadores para confirmar que se creó correctamente:

gcloud beta events triggers list

Espera hasta 10 minutos para que se propague la creación del activador y comience a filtrar eventos. Cuando esté listo, filtrará los eventos de creación y los enviará al servicio.

Ya tienes todo listo para activar un evento.

Sube un archivo aleatorio al bucket de Cloud Storage:

echo "Hello World" > random.txt
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt

Si revisas los registros del servicio de Cloud Run en Cloud Console, deberías ver el evento recibido:

aff3b2e7ad05c75d.png

Borra el activador

De manera opcional, puedes borrar el activador una vez que termines de probarlo:

gcloud beta events triggers delete trigger-storage

14. Crea un activador de eventos para Cloud Scheduler

Configurarás un activador para escuchar eventos de Cloud Scheduler.

Crea una aplicación de App Engine.

Actualmente, Cloud Scheduler requiere que los usuarios creen una aplicación de App Engine. Elige una ubicación de App Engine y crea la app:

export APP_ENGINE_LOCATION=europe-west
gcloud app create --region=${APP_ENGINE_LOCATION}

Crear un activador

Para obtener más detalles sobre los parámetros que necesitarás para crear un activador para eventos de fuentes de Google Cloud, ejecuta el siguiente comando:

gcloud beta events types describe google.cloud.scheduler.job.v1.executed

Elige una ubicación de Cloud Scheduler para crear el programador:

export SCHEDULER_LOCATION=europe-west1

Crea un activador que cree un trabajo para que se ejecute cada minuto en Google Cloud Scheduler y llame al servicio de destino:

gcloud beta events triggers create trigger-scheduler \
  --namespace ${NAMESPACE} \
  --target-service=${SERVICE_NAME} \
  --type=google.cloud.scheduler.job.v1.executed \
  --parameters location=${SCHEDULER_LOCATION} \
  --parameters schedule="* * * * *" \
  --parameters data="trigger-scheduler-data"

Prueba el activador

Haz una lista de todos los activadores para confirmar que se creó correctamente:

gcloud beta events triggers list

Espera hasta 10 minutos para que se propague la creación del activador y comience a filtrar eventos. Cuando esté listo, filtrará los eventos de creación y los enviará al servicio.

Si revisas los registros del servicio de Cloud Run en Cloud Console, deberías ver el evento recibido.

Borra el activador

De manera opcional, puedes borrar el activador una vez que termines de probarlo:

gcloud beta events triggers delete trigger-scheduler

15. Eventos personalizados (extremo del agente)

En esta parte del codelab, producirás y consumirás eventos personalizados con el agente.

Crea un Pod de Curl para generar eventos

Por lo general, los eventos se crean de forma programática. Sin embargo, en este paso, usarás curl para enviar manualmente eventos individuales y ver cómo los recibe el consumidor correcto.

Para crear un Pod que actúe como productor de eventos, ejecuta el siguiente comando:

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
    resources: {}
    stdin: true
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    tty: true
EOF

Verifica que el Pod de curl funcione correctamente. Deberías ver un pod llamado curl con Status=Running:

kubectl get pod curl -n ${NAMESPACE}

Crea un activador

Crearás un activador con un filtro en el tipo de CloudEvents específico (en este caso, alpha-type) que emitirás. Ten en cuenta que se admite el filtrado de concordancia exacta en cualquier cantidad de atributos de CloudEvents, así como de extensiones. Si el filtro establece varios atributos, un evento debe tener todos los atributos para que el activador lo filtre. Por el contrario, si no especificas un filtro, recibirás todos los eventos en tu servicio.

Crea el activador:

gcloud beta events triggers create trigger-custom \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=alpha-type \
  --custom-type

Prueba el activador

Haz una lista de todos los activadores para confirmar que se creó correctamente:

gcloud beta events triggers list

Crea un evento enviando una solicitud HTTP al agente. Para recordar la URL del agente, ejecuta el siguiente comando:

kubectl get brokers -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-broker.<NAMESPACE>.svc.cluster.local

Establece una conexión SSH al Pod curl que creaste anteriormente:

kubectl --namespace ${NAMESPACE} attach curl -it

Accediste al pod a través de SSH y ahora puedes realizar una solicitud HTTP. Aparecerá un mensaje similar al siguiente:

Defaulting container name to curl.
Use 'kubectl describe pod/curl -n default' to see all of the containers in this pod.
If you don't see a command prompt, try pressing enter.
[ root@curl:/ ]$

Sigue estos pasos para crear un evento:

curl -v "<BROKER-URL>" \
-X POST \
-H "Ce-Id: my-id" \
-H "Ce-Specversion: 1.0" \
-H "Ce-Type: alpha-type" \
-H "Ce-Source: my-source" \
-H "Content-Type: application/json" \
-d '{"msg":"send-cloudevents-to-broker"}'

Si se recibió el evento, recibirás una respuesta HTTP 202 Accepted. Sal de la sesión de SSH con Ctrl + D.

Revisa los registros del servicio de Cloud Run para verificar que se haya enviado el evento publicado:

kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \
 -c user-container -n $NAMESPACE --tail=100

Borra el activador

De manera opcional, puedes borrar el activador una vez que termines de probarlo:

gcloud beta events triggers delete trigger-custom

16. ¡Felicitaciones!

Felicitaciones por completar el codelab.

Temas abordados

  • Visión a largo plazo de los eventos para Cloud Run for Anthos
  • Estado actual de Eventos para Cloud Run for Anthos
  • Crear un receptor de Cloud Run
  • Crear un activador de eventos para Cloud Pub/Sub
  • Crear un activador de eventos para los registros de auditoría
  • Crea un activador de eventos para Cloud Storage
  • Crea un activador de eventos para Cloud Scheduler
  • Produce y consume eventos personalizados