你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Kubernetes 上的事件网格中的事件处理程序和目标

事件处理程序是用于公开终结点的系统,并且是事件网格发送事件的目标。 事件处理程序在接收到事件后会对其进行操作,并使用事件有效负载执行某些逻辑,这可能会导致新事件发生。

创建事件订阅是配置事件网格以将事件发送到目标的方法。 若要做到这一点,可使用 Azure CLI管理 SDK 或使用 2020-10-15-preview API 版本的直接 HTTP 调用。

通常,Kubernetes 上的事件网格可通过 Webhook 将事件发送到任何目标。 Webhook 是事件网格可以访问的服务或工作负载公开的 HTTP 终结点。 Webhook 可以是托管在同一群集、同一网络空间、云中、本地或事件网格可以覆盖的任何位置的工作负载。

重要

Azure Arc 的 Kubernetes 上的事件网格目前为公共预览版。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

通过 Webhook,事件网格支持 Kubernetes 群集上托管的下列目标:

  • 支持 Azure Arc 的 Kubernetes 上的 Azure 应用服务。
  • 支持 Azure Arc 的 Kubernetes 上的 Azure Functions。
  • 支持 Azure Arc 的 Kubernetes 上的 Azure 逻辑应用。

除了 Webhook,Kubernetes 上的事件网格还可以将事件发送到 Azure 上托管的下列目标:

  • 使用 Webhook 的 Azure 事件网格
  • 仅使用 Webhook 的 Azure Functions
  • 使用 Azure 资源管理器资源 ID 的 Azure 事件中心
  • 使用 Azure 资源管理器资源 ID 的 Azure 服务总线主题或队列
  • 使用 Azure 资源管理器资源 ID 的 Azure 存储队列

功能奇偶一致性

借助 Azure 事件网格对事件订阅的支持,Kubernetes 上的事件网格可提供良好的功能奇偶一致性。 以下列表枚举了事件订阅功能的主要差异。 除了这些差异外,在管理 Kubernetes 上的事件网格的事件订阅时,可以使用 Azure 事件网格的 REST API 版本 2020-10-15-preview 作为参考。

  1. 使用 REST API 版本 2020-10-15-preview
  2. 不支持 Azure Functions 的 Azure 事件网格触发器。 可以使用 Webhook 目标类型向 Azure Functions 传送事件。
  3. 不提供死信位置支持。 这意味着无法在事件订阅有效负载中使用 properties.deadLetterDestination
  4. 尚不支持将 Azure 中继的混合连接作为目标。
  5. 仅支持 CloudEvents 架构。 支持的架构值为“CloudEventSchemaV1_0”。 CloudEvents 架构是可扩展的,并且基于开放标准。
  6. 标签 (properties.labels) 不适用于 Kubernetes 上的事件网格。 因此,它们不可用。
  7. 不支持与资源标识一起传送。 因此,不支持事件订阅标识的所有属性。
  8. 尚不支持目标终结点验证

事件订阅中的事件筛选

配置事件订阅的另一个重要方面是选择要传送到目标的事件。 有关详细信息,请参阅事件筛选

示例目标配置

以下是一些基本的示例配置,具体取决于预期目标。

WebHook

要发布到 WebHook 终结点,请将 endpointType 设置为 WebHook 并提供以下信息:

  • endpointUrl:Webhook 终结点 URL

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

Azure 事件网格

要发布到 Azure 事件网格云终结点,请将 endpointType 设置为 WebHook 并提供以下信息:

  • endpointUrl:云中的 Azure 事件网格主题 URL,其中 API 版本参数设置为 2018-01-01aeg-sas-key 设置为 URL 编码的 SAS 密钥。

      {
        "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)"
            }
          }
        }
      }
    

事件中心

要发布到事件中心,请将 endpointType 设置为 eventHub 并提供以下信息:

  • resourceId:特定事件中心的资源 ID。

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

服务总线队列

要将内容发布到服务总线队列,请将 endpointType 设置为 serviceBusQueue 并提供以下信息:

  • resourceId:特定服务总线队列的资源 ID。

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

服务总线主题

要将内容发布到服务总线主题,请将 endpointType 设置为 serviceBusTopic 并提供以下信息:

  • resourceId:特定服务总线主题的资源 ID。

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

存储队列

要发布到存储队列,请将 endpointType 设置为 storageQueue 并提供以下信息:

  • queueName:要将内容发布到其中的 Azure 存储队列的名称。

  • resourceID:包含队列的存储帐户的 Azure 资源 ID。

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

后续步骤