Knative 事件驱动实践:通过 EventBridge 触发事件

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: Knative是一款基于Kubernetes的 Serverless 框架。其目标是制定云原生、跨平台的 Serverless 容器编排标准。Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件驱动这三者来实现的这一Serverless标准。那么如何给 Knative 提供生产级别的事件驱动能力?这里我们可以通过事件总线 EventBridge 来实现.事件总线EventB

Knative是一款基于Kubernetes的 Serverless 框架。其目标是制定云原生、跨平台的 Serverless 容器编排标准。Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件驱动这三者来实现的这一Serverless标准。

那么如何给 Knative 提供生产级别的事件驱动能力?这里我们可以通过事件总线 EventBridge 来实现.

事件总线EventBridge是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS应用以标准化、中心化的方式接入,并能够以标准化的CloudEvents 1.0协议在这些应用之间路由事件,帮助您轻松构建松耦合、分布式的事件驱动架构。

本文以上传文件到对象存储 oss 事件为例, 介绍如何通过 EventBridge 事件触发 Knative 服务。

技术架构

当前 EventBridge 支持多种数据源接入,通过配置事件总线、事件规则、事件目标,经过事件过滤、转换,直接触发 Knative 服务。通过 EventBridge 事件驱动实现了资源的按需使用。技术架构如图:

前提条件

操作步骤

步骤一:创建 Knative 服务

首先需要创建Knative Service,以下使用的是event-display示例,该示例会直接打印接收到的事件内容

  1. 创建service.yaml。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: event-display
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbd
  1. 执行以下命令,创建Knative Service。
kubectl apply -f service.yaml
  1. 验证服务
$ kubectl get ksvc
NAME            URL                                        LATESTCREATED         LATESTREADY           READY   REASON
event-display   http://event-display.default.example.com   event-display-00009   event-display-00009   True

步骤二:创建连接配置

  1. 登录 事件总线EventBridge控制台 ,在左侧导航栏,选择 集成中心 > API端点
  2. 在顶部菜单栏,选择地域,然后单击 连接配置 页签。
  3. 连接配置 页签,单击 创建 ,然后在 创建连接配置 面板,设置以下参数,完成后单击 确定
  • 连接名称 :设置连接名称。
  • 连接描述 :设置连接描述。
  • 鉴权配置 :选择无需配置。
  • 网络选择 :默认选择 公网

步骤三:创建API端点

  1. 连接配置 创建完成后,单击 API端点 页签,然后单击 创建
  2. 创建API端点 面板,设置以下参数,然后单击 确定
  1. 基础信息 区域,将 创建方式 设置为 自定义创建 ,然后设置API目标的名称和描述。
  2. API配置 区域,将 URL 设置为 Knative 网关访问地址(如果是使用ALB网关设置ALB dns域名,如果是使用Kourier则设置slb ip地址),本示例中使用 http://alb-1ag1spsdeze7m1eysm.cn-hangzhou.alb.aliyuncs.com  来访问Knative 服务,将 HTTP Method 设置为 POST
  3. 连接配置 区域,点击 选择已有 ,然后选择上文创建Connection中的Connection。

步骤四:创建事件规则

  1. 在左侧导航栏,单击 事件总线 ,由于我们使用oss事件源,这里直接选择 defaut 总线。
  2. 在 defaut 总线面板,设置以下参数,然后单击 创建
  1. 在事件 规则 页签,设置 规则名称 描述 ,单击 下一步
  2. 配置事件模式,选择阿里云官方事件源
  • 事件源:acs.oss 
    • 事件类型: oss:ObjectCreated:PutObject
  1. 配置事件目标,设置以下参数。
  • 服务类型 :选择 API触发
    • 创建方式 :选择 使用已有
    • HTTP参数 :设置事件推送给Knative 服务时传递的参数及参数内容。

验证结果

通过 oss 上传文件,即可触发事件,这里我们上传一个 demo.data 文件

ossutil cp demo.data oss://knative

登录事件总线EventBridge控制台,可以在事件追踪中,查看事件轨迹,可以看到事件已经投递成功

我们在 kubectl 查看 Knative 服务,可以看到自动触发创建了一个新的Pod

$ kubectl get  po
NAME                                              READY   STATUS    RESTARTS         AGE
event-display-00009-deployment-56cc79666d-z2vhv   2/2     Running   0                7s

已经打印事件内容

$ kubectl logs event-display-00009-deployment-56cc79666d-z2vhv user-container
{"data":{"eventVersion":"1.0","responseElements":{"requestId":"63E21F5FEE852133319101AD"},"eventSource":"acs:oss","eventTime":"2023-02-07T09:52:31.000Z","requestParameters":{"sourceIPAddress":"106.11.167.116"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"1118324452360952"},"region":"cn-hangzhou","oss":{"bucket":{"name":"knative","arn":"acs:oss:cn-hangzhou:1581204543170042:knative","virtualBucket":"","ownerIdentity":"1581204543170042"},"ossSchemaVersion":"1.0","object":{"size":225496,"objectMeta":{"mimeType":"application/octet-stream"},"deltaSize":0,"eTag":"B350C082843DAC7E9E634193437EBA30","key":"demo.data"}}}}

小结

我们可以看到 EventBridge 事件驱动可以与 Knative 无缝对接,让 Knative 可以轻松做到基于事件触发自动弹性。接下来也期望与EventBridge做进一步集成,降低使用配置门槛。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
JavaScript
在Vue中,如何使用事件总线来传递数据和触发事件?
在Vue中,如何使用事件总线来传递数据和触发事件?
16 0
|
9月前
页面第二次进入或者多次进入,事件总线触发事件多次,eventBus触发多次
页面第二次进入或者多次进入,事件总线触发事件多次,eventBus触发多次
|
6月前
|
JSON 数据格式
EventBridge事件领域
EventBridge事件领域
26 0
|
消息中间件 弹性计算 运维
阿里云事件生态再升级:使用 EventBridge 驱动全量云产品
阿里云 EventBridge 作为云上事件枢纽,早已集成了云上产品的各类事件,用户开通 EventBridge 后使用内置的云服务专用总线就可以监听这些事件,无需创建任何额外资源。
220 0
阿里云事件生态再升级:使用  EventBridge 驱动全量云产品
|
消息中间件 弹性计算 运维
重新定义分析 - EventBridge实时事件分析平台发布
为了解决事件领域中针对流式事件做分析的难题,EventBridge 近日发布了针对事件/消息领域的全新分析工具--EventBridge 实时事件分析平台。下面简要对 EventBridge 实时事件分析平台的内容进行介绍。
179 0
重新定义分析 - EventBridge实时事件分析平台发布
|
消息中间件 存储 Cloud Native
阿里云 EventBridge 事件驱动架构实践
我们认为 EventBridge 是云原生时代新的计算驱动力,这些数据可以驱动云的计算能力,创造更多业务价值。
7042 0
阿里云 EventBridge 事件驱动架构实践
|
消息中间件 弹性计算 前端开发
EDA 事件驱动架构与 EventBridge 二三事
事件驱动型架构 (EDA) 方兴未艾,作为一种 Serverless 化的应用概念对云原生架构具有着深远影响。当我们讨论到一个具体架构时,首当其冲的是它的发展是否具有技术先进性。这里从我们熟悉的 MVC 架构,SOA 架构谈起,聊一聊关于消息事件领域的历史与发展趋势。
277 0
EDA 事件驱动架构与  EventBridge 二三事
|
消息中间件 安全 机器人
EventBridge EDA (事件驱动):架构场景实践|学习笔记(四)
快速学习 EventBridge EDA (事件驱动):架构场景实践
229 0
EventBridge EDA (事件驱动):架构场景实践|学习笔记(四)
|
监控 前端开发 搜索推荐
EventBridge EDA (事件驱动):架构场景实践(一)|学习笔记
快速学习 EventBridge EDA (事件驱动):架构场景实践
307 0
EventBridge EDA (事件驱动):架构场景实践(一)|学习笔记
|
JSON 监控 机器人
EventBridge 事件领域重点特性介绍(二)| 学习笔记
快速学习 EventBridge事件领域重点特性介绍。
141 0
EventBridge 事件领域重点特性介绍(二)| 学习笔记