Manipuladores de eventos e destinos na Grade de Eventos no Kubernetes

Um manipulador de eventos é qualquer sistema que expõe um ponto de extremidade e é o destino para eventos enviados pela Grade de Eventos. Um manipulador de eventos que recebe um evento atua nele e usa a carga do evento para executar alguma lógica, o que pode levar à ocorrência de novos eventos.

A configuração da Grade de Eventos para enviar eventos para um destino é feita por meio da criação de uma assinatura de evento. Isso pode ser feito pela CLI do Azure, pelo SDK de gerenciamento ou pelas chamadas HTTPs diretas usando a versão da API 15-10-2020-versão prévia.

Em geral, a Grade de Eventos no Kubernetes pode enviar eventos para qualquer destino por meio de Webhooks. Os webhooks são pontos de extremidade HTTP expostos por um serviço ou carga de trabalho aos quais a Grade de Eventos tem acesso. O webhook pode ser uma carga de trabalho hospedada no mesmo cluster, no mesmo espaço de rede, na nuvem, no local ou em qualquer lugar que o Grade de Eventos possa alcançar.

Importante

A Grade de Eventos no Kubernetes com Azure Arc está atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Por meio dos Webhooks, a Grade de Eventos torna-se compatível com os seguintes destinos hospedados em um cluster do Kubernetes:

  • Serviço de Aplicativo do Azure no Kubernetes com Azure Arc.
  • Azure Functions no Kubernetes com Azure Arc.
  • Aplicativos Lógicos do Azure no Kubernetes com Azure Arc.

Além dos Webhooks, a Grade de Eventos no Kubernetes pode enviar eventos para os seguintes destinos hospedados no Azure:

  • Grade de Eventos do Azure usando Webhooks
  • Azure Functions usando somente Webhooks
  • Hubs de Eventos do Azure usando sua ID do recurso Azure Resource Manager
  • Barramento de Serviço do Azure ou filas usando sua ID do recurso Azure Resource Manager
  • Fila do Armazenamento do Microsoft Azure usando sua ID do recurso Azure Resource Manager

Paridade de recursos

A Grade de Eventos no Kubernetes oferece um bom nível de paridade de recursos para a compatibilidade da Grade de Eventos do Azure com as assinaturas de evento. A lista a seguir enumera as principais diferenças na funcionalidade de assinatura de evento. Além dessas diferenças, você pode usar a versão API REST 15-10-2020-versão prévia da Grade de Eventos do Azure como uma referência ao gerenciar as assinaturas de evento na Grade de Eventos no Kubernetes.

  1. Use a versão API REST 15-10-2020-versão prévia.
  2. O gatilho da Grade de Eventos do Azure para o Azure Functions não é compatível. Você pode usar um tipo de destino de Webhook para entregar eventos ao Azure Functions.
  3. Não há suporte para local inativo. Isso significa que você não pode usar properties.deadLetterDestination na carga útil da assinatura do evento.
  4. Ainda não há suporte para Conexões Híbridas de Retransmissão do Azure como destino.
  5. Há suporte apenas para o esquema CloudEvents. O valor de esquema com suporte é "CloudEventSchemaV1_0". O esquema de Eventos de nuvem é extensível e baseado em padrões abertos.
  6. Os rótulos (properties.labels) não são aplicáveis à Grade de Eventos no Kubernetes. Por isso, eles não estão disponíveis.
  7. Não há suporte para entrega com identidade de recurso. Sendo assim, não há suporte para a Identidade de Assinatura de Evento.
  8. A validação do ponto de extremidade de destino ainda não tem suporte.

Filtragem de eventos em assinaturas de evento

Outro aspecto importante da configuração de uma assinatura de evento é selecionar os eventos que devem ser entregues a um destino. Para saber mais, consulte Filtragem de eventos.

Exemplo de configurações de destino

A seguir estão algumas configurações básicas de exemplo, dependendo do destino pretendido.

WebHook

Para publicar em um ponto de extremidade de webhook, defina endpointType como WebHook e forneça:

  • endpointUrl: URL do ponto de extremidade do Webhook

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

Grade de Eventos do Azure

Para publicar em um ponto de extremidade de nuvem da grade de eventos do Azure, defina endpointType como WebHook e forneça:

  • endpointUrl: a URL do tópico do Grade de Eventos do Azure na nuvem com o parâmetro da versão da API definido como 2018-01-01 e aeg-sas-key definido como a chave SAS codificada por 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)"
            }
          }
        }
      }
    

Hubs de Eventos

Para publicar em um Hubs de Eventos, defina endpointType como eventHub e forneça:

  • resourceId: ID do recurso para o hub de eventos específico.

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

Filas do Barramento de Serviço

Para publicar em uma fila do Barramento de Serviço, defina endpointType como serviceBusQueue e forneça:

  • resourceId: ID do recurso para a fila específica do Barramento de Serviço.

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

Tópicos do Barramento de Serviço

Para publicar em um tópico do Barramento de Serviço, defina endpointType como serviceBusTopic e forneça:

  • resourceId: ID do recurso para o tópico específico do Barramento de Serviço.

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

Filas de Armazenamento

Para publicar em uma Fila de Armazenamento, defina endpointType para storageQueue e forneça:

  • queueName: nome da fila do Armazenamento do Microsoft Azure na qual você está publicando.

  • resourceID: ID do recurso do Azure da conta de armazenamento que contém a fila.

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

Próximas etapas