Destinos de controladores de eventos en Event Grid en Kubernetes

Un controlador de eventos es cualquier sistema que expone un punto de conexión y es el destino de los eventos enviados por Event Grid. Un controlador de eventos que recibe un evento actúa sobre él y usa la carga del evento para ejecutar alguna lógica, lo que podría derivar en la aparición de nuevos eventos.

La manera de configurar Event Grid para enviar eventos a un destino es mediante la creación de una suscripción de eventos. Se puede realizar con la CLI de Azure, el SDK de administración o las llamadas HTTPS directas mediante la versión 2020-10-15-preview API.

En general, Event Grid en Kubernetes puede enviar eventos a cualquier destino mediante webhooks. Los webhooks son puntos de conexión HTTP(S) expuestos por un servicio o una carga de trabajo a los que Event Grid tiene acceso. El webhook puede ser una carga de trabajo hospedada en el mismo clúster, en el mismo espacio de red, en la nube, en el entorno local o en cualquier lugar al que Event Grid puede acceder.

Importante

Event Grid en Kubernetes con Azure Arc se encuentra actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Con webhooks, Event Grid admite los siguientes destinos hospedados en un clúster de Kubernetes:

  • Azure App Service en Kubernetes con Azure Arc
  • Azure Functions en Kubernetes con Azure Arc
  • Azure Logic Apps en Kubernetes con Azure Arc

Además de los webhooks, Event Grid en Kubernetes puede enviar eventos a los siguientes destinos hospedados en Azure:

  • Azure Event Grid con webhooks
  • Azure Functions con webhooks solamente
  • Azure Event Hubs con su identificador de recursos de Azure Resource Manager
  • Temas o colas de Azure Service Bus con su identificador de recursos de Azure Resource Manager
  • Cola de Azure Storage con su identificador de recursos de Azure Resource Manager

Paridad de características

Event Grid en Kubernetes ofrece un buen nivel de paridad de características mediante la compatibilidad de Azure Event Grid con las suscripciones de eventos. En la lista siguiente se enumeran las principales diferencias en la funcionalidad de suscripción de eventos. Además de tales diferencias, puede usar la versión de la API de REST 2020-10-15-preview de Azure Event Grid como referencia al administrar las suscripciones de eventos en Event Grid en Kubernetes.

  1. Use la versión de la API de REST 2020-10-15-preview.
  2. El desencadenador de Azure Event Grid para Azure Functions no es compatible. Puede usar un tipo de destino de webhook para entregar eventos a Azure Functions.
  3. No hay compatibilidad con la ubicación de mensajes fallidos. Eso significa que no puede usar properties.deadLetterDestination en la carga de la suscripción de eventos.
  4. Las conexiones híbridas de Azure Relay como destino aún no son compatibles.
  5. Solo se admite el esquema CloudEvents. El valor de esquema admitido es "CloudEventSchemaV1_0". El esquema de eventos en la nube es extensible y se basa en estándares abiertos.
  6. Las etiquetas (properties.labels) no son aplicables a Event Grid en Kubernetes. Por lo tanto, no están disponibles.
  7. No se admite la entrega con un identidad de recurso. Por lo tanto, no se admiten todas las propiedades de la identidad de la suscripción de eventos.
  8. Todavía no se admite la validación del punto de conexión de destino.

Filtrado de eventos en suscripciones de eventos

El otro aspecto importante de la configuración de una suscripción de eventos es seleccionar los eventos que están diseñados para entregarse a un destino. Para más información, vea Filtrado de eventos.

Configuraciones de destino de ejemplo

A continuación, se encuentran algunas configuraciones de ejemplo básicas en función del destino previsto.

WebHook

Para publicar en un punto de conexión de webhook, establezca endpointType en WebHook y proporcione:

  • endpointUrl: la dirección URL del punto de conexión del webhook.

        {
          "properties": {
            "destination": {
              "endpointType": "WebHook",
              "properties": {
                "endpointUrl": "<your-webhook-endpoint>"
              }
            }
          }
        }
    

Azure Event Grid

Para publicar en un punto de conexión de nube de Azure Event Grid, establezca endpointType en WebHook y proporcione:

  • endpointUrl: dirección URL del tema de Azure Event Grid en la nube con el parámetro de versión de la API establecido en 2018-01-01 y aeg-sas-key establecido en la clave SAS codificada en la URL.

      {
        "properties": {
          "destination": {
            "endpointType": "WebHook",
            "properties": {
              "endpointUrl": "<your-event-grid-cloud-topic-endpoint-url>?api-version=2018-01-01&aeg-sas-key=urlencoded(sas-key-value)"
            }
          }
        }
      }
    

Event Hubs

Para realizar la publicación en un Event Hubs configura endpointType como eventHub y proporciona:

  • resourceId: identificador de recurso del centro de eventos específico.

        {
          "properties": {
            "destination": {
              "endpointType": "eventHub",
              "properties": {
                "resourceId": "<Azure Resource ID of your event hub>"
              }
            }
          }
        }
    

Colas de Service Bus

Para realizar la publicación en una cola de Service Bus, configure endpointType como serviceBusQueue y proporcione:

  • resourceId: identificador de recurso de la cola de Service Bus específica.

        {
          "properties": {
            "destination": {
              "endpointType": "serviceBusQueue",
              "properties": {
                "resourceId": "<Azure Resource ID of your Service Bus queue>"
              }
            }
          }
        }
    

Temas de Service Bus

Para realizar la publicación en un tema de Service Bus, configure endpointType como serviceBusTopic y proporcione:

  • resourceId: identificador de recurso del tema de Service Bus específico.

    {
      "properties": {
        "destination": {
          "endpointType": "serviceBusTopic",
          "properties": {
            "resourceId": "<Azure Resource ID of your Service Bus topic>"
          }
        }
      }
    }
    

Colas de almacenamiento

Para hacer la publicación en una cola de almacenamiento, configure endpointType como storageQueue y proporcione:

  • queueName: nombre de la cola de Azure Storage en la que va a realizar la publicación.

  • resourceID: identificador de recurso de Azure de la cuenta de almacenamiento que contiene la cola.

    {
      "properties": {
        "destination": {
          "endpointType": "storageQueue",
          "properties": {
            "queueName": "<your-storage-queue-name>",
            "resourceId": "<Azure Resource ID of your Storage account>"
          }
        }
      }
    }
    

Pasos siguientes