Destinos de manipuladores de eventos 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 age sobre ele e usa a carga útil do evento para executar alguma lógica, o que pode levar à ocorrência de novos eventos.

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

Em geral, a Grade de Eventos no Kubernetes pode enviar eventos para qualquer destino via Webhooks. Webhooks são pontos de extremidade HTTP(s) expostos por um serviço ou carga de trabalho à qual 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 a Grade de Eventos possa alcançar.

Importante

A Grade de Eventos no Kubernetes com o Azure Arc está atualmente em visualização pública. Esta versão de pré-visualização é disponibiliza sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Através de Webhooks, a Grade de Eventos suporta os seguintes destinos hospedados em um cluster 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 o 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 apenas Webhooks
  • Hubs de Eventos do Azure usando sua ID de recurso do Azure Resource Manager
  • Tópicos ou filas do Barramento de Serviço do Azure usando sua ID de recurso do Azure Resource Manager
  • Fila de Armazenamento do Azure usando sua ID de recurso do Azure Resource Manager

Paridade de recursos

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

  1. Use a API REST versão 2020-10-15-preview.
  2. O gatilho de Grade de Eventos do Azure para o Azure Functions não é suportado. Você pode usar um tipo de destino WebHook para entregar eventos ao Azure Functions.
  3. Não há suporte de localização de letra morta. Isso significa que você não pode usar properties.deadLetterDestination a carga útil da assinatura do evento.
  4. As Conexões Híbridas do Azure Relay como destino ainda não são suportadas.
  5. Apenas o esquema CloudEvents é suportado. O valor do esquema suportado é "CloudEventSchemaV1_0". O esquema Cloud Events é 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, não estão disponíveis.
  7. A entrega com identidade de recurso não é suportada. Portanto, todas as propriedades da Identidade de Assinatura de Evento não são suportadas.
  8. A validação do ponto de extremidade de destino ainda não é suportada.

Filtragem de eventos em subscrições de eventos

O outro aspeto importante da configuração de uma assinatura de evento é selecionar os eventos que devem ser entregues em um destino. Para obter mais informações, consulte Filtragem de eventos.

Exemplos de configurações de destino

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

Gancho WebHook

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

  • endpointUrl: A URL do ponto de extremidade WebHook

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

Grelha de Eventos do Azure

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

  • endpointUrl: URL do tópico da Grade de Eventos do Azure na nuvem com o parâmetro de versão da API definido como 2018-01-01 e aeg-sas-key definido como a chave SAS codificada pela 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 Hubs de Eventos, defina como endpointType 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 Service Bus

Para publicar em uma fila do Service Bus, defina como endpointType serviceBusQueue e forneça:

  • resourceId: ID do recurso para a fila específica do Service Bus.

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

Tópicos do Service Bus

Para publicar em um tópico do Service Bus, defina o endpointType como serviceBusTopic e forneça:

  • resourceId: ID do recurso para o tópico específico do Service Bus.

    {
      "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 como endpointType storageQueue e forneça:

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

  • resourceID: ID de 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óximos passos