APP下载

Knative 初体验:Eventing Hello World_Broker

消息来源:baojiabao.com 作者: 发布时间:2024-05-09

报价宝综合消息Knative 初体验:Eventing Hello World_Broker

作者 | 阿里云智慧事业群高阶开发工程师 元毅

基于事件驱动是Serveless的核心功能之一,通过事件驱动服务,满足了使用者按需付费(Pay-as-you-go)的需求。在之前的文章中我们介绍过 Knative Eventing 由事件源、事件处理模型和事件消费 3 个主要部分构成,那么事件如何通过这 3 个元件产生、处理以及消费呢? 本文通过 Kubernetes Event Source 示例介绍一下 Knative Eventing 中如何获取事件,并且将事件传递给 Serving 进行消费。其中事件处理基于 Broker/Trigger 模型。

先了解一下Broker/Trigger 事件处理模型。从 v0.5 开始,Knative Eventing 定义 Broker 和 Trigger 物件,从而能方便的对事件进行过滤。

Broker/Tiggger 模型流程处理如图所示:

先看一下 Kubernetes Event Source 示例处理流程,如图所示:

​​​​​​​

接下来介绍一下各个阶段如何进行操作处理。

建立 Service Account

为 ApiServerSource 建立 Service Account, 用于授权 ApiServerSource 获取 Kubernetes Events 。

serviceaccount.yaml 如下:

执行如下操作:

Knative Eventing 中 通过 Event Source 对接第三方系统产生统一的事件型别。当前支援 ApiServerSource,GitHub 等多种资料来源。这里我们建立一个 ApiServerSource 事件源用于接收 Kubernetes Events 事件并进行转发。k8s-events.yaml 如下:

这里通过 sink 引数指定事件接收方,支援 Broker 和 k8s service。

执行命令:

首先构建你的事件处理服务,可以参考 knative-sample/event-display开源专案。

这里的 Service 服务仅把接收到的事件打印出来,处理逻辑如下:

通过上面的程式码,可以轻松构建你自己的映象。映象构建完成之后,接下来可以建立一个简单的 Knative Service, 用于消费 ApiServerSource 产生的事件。

service.yaml 示例如下:

执行命令:

在所选名称空间下,建立 default Broker。假如选择 default 名称空间, 执行操作如下。

这里 Eventing Controller 会根据设定knative-eventing-injection=enabled 标签的 namepace, 自动建立 Broker。并且使用在webhook中预设配置的 ClusterChannelProvisioner(in-memory)。

Trigger 可以理解为 Broker 和Service 之间的过滤器,可以设定一些事件的过滤规则。这里为预设的 Broker 建立一个最简单的 Trigger,并且使用 Service 进行订阅。trigger.yaml 示例如下:

执行命令:

注意:如果没有使用预设的 Broker, 在 Trigger 中可以通过 spec.broker 指定 Broker 名称。

执行如下命令,生成 k8s events。

可以通过下述方式检视 Knative Service 是否接收到事件。

日志输出类似下面,说明已经成功接收事件。

相信通过上面的例子你已经了解了 Knative Eventing 如何产生事件、处理事件以及消费事件。对 Eventing 中的事件处理模型也有了初步的了解。当然你可以自己定义一个事件消费服务,来处理事件。

你是否已对 Knative Eventing 产生了兴趣,是否有点意犹未尽的样子? 别急,接下来我们会继续深入分析 Knative Eventing。包括:

让我们后续一起探索 Knative Eventing,欢迎持续关注。

-------------------------------

本文作者:jessie筱姜

原文连结 :https://yq.aliyun.com/articles/705438?utm_content=g_1000063032

本文为云栖社群原创内容,未经允许不得转载。

2019-12-11 02:53:00

相关文章