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

简介: 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做进一步集成,降低使用配置门槛。

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
10月前
|
消息中间件 人工智能 运维
事件驱动重塑 AI 数据链路:阿里云 EventBridge 发布 AI ETL 新范式
“一个简单的数据集成任务,开始时总是轻松愉快的,但随着业务扩展,数据源越来越多,格式越来越乱,整个数据链路就会变得一团糟。”陈涛在演讲中指出了当前 AI 数据处理的普遍困境。扩展难、运维难、稳定性差,这三大挑战已成为制约 AI 应用创新和落地的关键瓶颈。针对这些痛点,在2025云栖大会期间,阿里云重磅发布了事件驱动 AI ETL 新范式,其核心产品 EventBridge 通过深度集成 AI 能力,为开发者提供了一套革命性的解决方案,旨在彻底改变 AI 时代的数据准备与处理方式。
1016 75
|
人工智能 安全 Cloud Native
阿里云事件总线 EventBridge 正式商业化,构建智能化时代的企业级云上事件枢纽
阿里云事件总线EventBridge自2020年发布以来,致力于构建统一的事件枢纽,支持微服务架构演进。其核心特性包括稳定安全、高性能低成本、开放集成及统一事件标准,适用于EDA、流式ETL、AI数据集成等多种场景。EventBridge于2025年6月3日正式商业化,提供灵活计费模式,包括事件量和CU配额计费,帮助企业高效实现松耦合、分布式的事件驱动架构。
页面第二次进入或者多次进入,事件总线触发事件多次,eventBus触发多次
页面第二次进入或者多次进入,事件总线触发事件多次,eventBus触发多次
348 0
|
消息中间件 JavaScript 中间件
中间件事件总线事件定义
【6月更文挑战第20天】
365 2
中间件事件总线事件定义
|
消息中间件 监控 Cloud Native
阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。
【7月更文挑战第3天】阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。EDA提升系统弹性和可维护性,促进业务敏捷性。实施路径包括事件模型设计、集成阿里云服务、开发事件处理器和监控优化。通过阿里云服务,开发者能轻松构建响应式、可扩展的云原生应用,加速创新并驱动数字化转型。
408 0
|
JavaScript
在Vue中,如何使用事件总线来传递数据和触发事件?
在Vue中,如何使用事件总线来传递数据和触发事件?
370 0
|
JSON 数据格式
EventBridge事件领域
EventBridge事件领域
276 0
|
消息中间件 弹性计算 运维
阿里云事件生态再升级:使用 EventBridge 驱动全量云产品
阿里云 EventBridge 作为云上事件枢纽,早已集成了云上产品的各类事件,用户开通 EventBridge 后使用内置的云服务专用总线就可以监听这些事件,无需创建任何额外资源。
538 0
阿里云事件生态再升级:使用  EventBridge 驱动全量云产品
|
消息中间件 Serverless API
Apache RocketMQ EventBridge,构建下一代事件驱动引擎
本文主要介绍了事件以及特性,优秀的事件驱动引擎,需要具备的能力以及Apache RocketMQ EventBridge是如何做的。
|
JavaScript
Vue学习之--------全局事件总线(2022/8/22)
这篇文章介绍了Vue中全局事件总线(GlobalEventBus)的概念和使用方法,它允许不同组件之间进行通信。文章通过图解和代码实例详细解释了如何安装全局事件总线、在组件中接收和提供数据,以及如何在组件销毁前解绑事件,以避免潜在的内存泄漏问题。
Vue学习之--------全局事件总线(2022/8/22)