Knative 已支持 Kafka 事件源,您可将 Knative 与消息队列 Kafka 版对接,在 Knative 上实现 Kafka 消息推送。

前提条件

  • 您的消息队列 Kafka 版实例为包年包月专业版,且实例版本为 2.0.0 或以上。
    说明
    • Knative 中的 Kafka 事件源目前仅支持 2.0.0 和以上版本。
    • 目前仅包年包月专业版消息队列 Kafka 版实例支持升级为 2.0.0 或以上版本,详情请参见升级实例服务版本
  • 创建 Topic
  • 创建 Consumer Group
  • 部署 Knative

背景信息

Knative 是一款基于 Kubernetes 的 Serverless 框架,其目标是制定云原生、跨平台的 Serverless 编排标准。Knative 系统分为三部分:

  • Build:构建系统,用于将函数和应用构建成容器镜像。
  • Serving:服务系统,用于配置应用的路由、升级策略、自动扩缩容等。
  • Eventing:事件系统,用于自动完成事件的绑定和触发。

要让 Eventing(事件系统)正常运行,就必须在 Knative 集群中实现 Bus(内部事件存储层),目前支持的 Bus 实现方式包括 Stub、Kafka。本文以消息队列 Kafka 版为例介绍如何实现 Bus。

操作流程

在 Knative 上实现 Kafka 消息推送的操作流程如下图所示。

部署 Kafka 组件

  1. 登录容器服务控制台
  2. 在左侧导航栏,选择 Knative(公测) > 组件管理
  3. Knative 组件管理页面:
    1. 集群列表,选择已部署 Knative 组件的集群。
    2. add-on 组件列表,找到 Kafka,在其右侧操作列,单击部署
    pg_component_manage
  4. 部署Kafka 对话框,单击确定

    部署完成后,Kafka 右侧的状态显示已部署

    add-on

创建 event-display 服务

  1. 在左侧导航栏,选择 Knative(公测) > 服务管理
  2. Knative 服务管理页面,单击使用模板创建
  3. 使用模板创建
    1. 集群列表,选择已部署 Knative 组件的集群。
    2. 命名空间列表,选择 default
    3. 示例模板列表,选择自定义
    4. 模板区域,输入模板信息。
      模板信息如下:
      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: event-display
      spec:
        template:
          spec:
            containers:
            - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/eventing-sources-cmd-event_display:bf45b3eb1e7fc4cb63d6a5a6416cf696295484a7662e0cf9ccdf5c080542****
    5. 单击创建
    pg_event_display
    创建完成后,Knative服务管理页面显示 event-displayevent-display

创建 Kafka Source 服务

  1. 在左侧导航栏,选择 Knative(公测) > 服务管理
  2. Knative 服务管理页面,单击使用模板创建。
  3. 使用模板创建页面:
    1. 集群列表,选择已部署 Knative 组件的集群
    2. 命名空间列表,选择 default
    3. 示例模板列表,选择自定义
    4. 模板区域,输入模板信息。
      模板信息如下。
      apiVersion: sources.eventing.knative.dev/v1alpha1
      kind: KafkaSource
      metadata:
        name: alikafka-source
      spec:
        consumerGroup: demo-consumer
        # Broker URL. Replace this with the URLs for your kafka cluster,
        # which is in the format of my-cluster-kafka-bootstrap.my-kafka-namespace:9092.
        bootstrapServers: xxx.xxx.x.xx:9092,xxx.xxx.x.xx:9092,xxx.xxx.x.xx:9092
        topics: demo-topic
        sink:
          apiVersion: serving.knative.dev/v1alpha1
          kind: Service
          name: event-display
    5. 单击创建
    pg_kafka_source

发送消息

  1. 登录消息队列 Kafka 版控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击Topic管理
  4. Topic管理页面,找到要发送消息的 Topic,在其右侧操作操作列中,单击发送消息发送消息
    • Topic:发送消息的 Topic,例如 demo-topic。
    • Message Key:消息的键,例如 demo。
    • Message Value:消息的值,必须为 JSON 格式,例如 {"key": "test"}
    db_send_msg

结果验证

发送消息成功后,连接 Kubernetes 集群,执行命令 kubectl logs {pod},可查看发送消息的日志。
说明 如需连接 Kubernetes 集群,请参见通过kubectl连接Kubernetes集群
log