你当前正在访问 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 作为参考。
- 使用 REST API 版本 2020-10-15-preview。
- 不支持 Azure Functions 的 Azure 事件网格触发器。 可以使用 Webhook 目标类型向 Azure Functions 传送事件。
- 不提供死信位置支持。 这意味着无法在事件订阅有效负载中使用
properties.deadLetterDestination
。 - 尚不支持将 Azure 中继的混合连接作为目标。
- 仅支持 CloudEvents 架构。 支持的架构值为“CloudEventSchemaV1_0”。 CloudEvents 架构是可扩展的,并且基于开放标准。
- 标签 (properties.labels) 不适用于 Kubernetes 上的事件网格。 因此,它们不可用。
- 不支持与资源标识一起传送。 因此,不支持事件订阅标识的所有属性。
- 尚不支持目标终结点验证。
事件订阅中的事件筛选
配置事件订阅的另一个重要方面是选择要传送到目标的事件。 有关详细信息,请参阅事件筛选。
示例目标配置
以下是一些基本的示例配置,具体取决于预期目标。
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-01,
aeg-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>" } } } }
后续步骤
- 将筛选器配置添加到事件订阅,以选择要传送的事件。
- 若要了解 Azure Arc for Kubernetes 上的事件网格支持的架构,请参阅 Kubernetes 上的事件网格 - 事件架构。