08-Event Sources和Sink架构

news2024/11/24 5:20:53

1 PingSource -> Kubernetes Service Sink

  • 架构模型

    在这里插入图片描述

  • 示例1

    • 部署一个kubernetes类型的sink,这里面还是以event-display为例,下面是资源清单

      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: event-display
      spec:
        replicas: 1
        selector:
          matchLabels: &labels
            app: event-display
        template:
          metadata:
            labels: *labels
          spec:
            containers:
              - name: event-display
                image: ikubernetes/event_display
      ---
      kind: Service
      apiVersion: v1
      metadata:
        name: event-display
      spec:
        selector:
          app: event-display
        ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      
    • 定义pingsource资源,指定sink为event-display

      apiVersion: sources.knative.dev/v1
      kind: PingSource
      metadata:
        name: ping-00001
      spec:
        schedule: "* * * * *"
        contentType: "application/json"
        data: '{"message": "Hello Eventing!"}'
        sink:
          ref:
            apiVersion: v1
            kind: Service
            name: event-display
      

      后面knative-eventing的namespace会出现pingsource的POD

      在这里插入图片描述

    • 获取event-display当中的日志信息,验证是否进行了事件发送

      kubectl logs -f event-display-6496b6c66d-7drk5
      

      在这里插入图片描述

2 PingSource → Knative Service Sink

  • 架构

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 示例2

    • 部署一个kservice类型的sink,这里面还是以event-display为例,下面是资源清单

      ---
      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: event-display
      spec:
        template:
          metadata:
            annotations:
              autoscaling.knative.dev/min-scale: "1"
          spec:
            containers:
              - image: ikubernetes/event_display
                ports:
                  - containerPort: 8080
      
    • 定义pingsource资源,指定sink为event-display

      ---
      apiVersion: sources.knative.dev/v1
      kind: PingSource
      metadata:
        name: pingsource-00001
      spec:
        schedule: "* * * * *"
        contentType: "application/json"
        data: '{"message": "Hello Eventing!"}'
        sink:
          ref:
            apiVersion: serving.knative.dev/v1
            kind: Service
            name: event-display
      
    • 获取event-display当中的日志信息,验证是否进行了事件发送

      kubectl logs -f event-display-00001-deployment-7f488cb57b-grsc6
      

      在这里插入图片描述

3 ContainerSource → Knative Service Sink

  • 旨在收集一些容器的event是,比如容器的一些元数据,下面是架构:

    在这里插入图片描述

  • 示例2

    • 部署一个kservice类型的sink,这里面还是以event-display为例,下面是资源清单

      ---
      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: event-display
      spec:
        template:
          metadata:
            annotations:
              autoscaling.knative.dev/min-scale: "1"
          spec:
            containers:
              - image: ikubernetes/event_display
                ports:
                  - containerPort: 8080
      
    • 定义containergsource资源,指定sink为event-display

      apiVersion: sources.knative.dev/v1
      kind: ContainerSource
      metadata:
        name: containersource-heartbeat
      spec:
        template:
          spec:
            containers:
              - image: ikubernetes/containersource-heartbeats:latest
                name: heartbeats
                env:
                - name: POD_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: POD_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
        sink:
          ref:
            apiVersion: serving.knative.dev/v1
            kind: Service
            name: event-display
      

      在event-display的名称空间创建了一个containersource的pod

      在这里插入图片描述

    • 获取event-display当中的日志信息,验证是否进行了事件发送

      kubectl logs -f event-display-00001-deployment-645944b779-2b4vt
      

      在这里插入图片描述

4 ApiServerSource → Knative Service Sink

  • apiserversource主要记录了aoiserver上的event,比如create/delete/update/get,架构如下:

    在这里插入图片描述

  • 示例4:

    • 部署一个kservice类型的sink,这里面还是以event-display为例,下面是资源清单

      ---
      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: event-display
      spec:
        template:
          metadata:
            annotations:
              autoscaling.knative.dev/min-scale: "1"
          spec:
            containers:
              - image: ikubernetes/event_display
                ports:
                  - containerPort: 8080
      
    • 定义ServiceAccount:定义向指定目标资源的get,watch,list的相关权限

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: pod-watcher
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: pod-reader
      rules:
      - apiGroups:
        - ""
        resources:
        - pods
        verbs:
        - get
        - list
        - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: pod-reader
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: pod-reader
      subjects:
      - kind: ServiceAccount
        name: pod-watcher
      
    • 定义apiserversource资源,结合serviceaccount,对指定权限的pod进行收集event

      apiVersion: sources.knative.dev/v1
      kind: ApiServerSource
      metadata:
        name: pods-event
      spec:
        serviceAccountName: pod-watcher
        mode: Reference
        resources:
        - apiVersion: v1
          kind: Pod
        sink:
          ref:
            apiVersion: serving.knative.dev/v1
            kind: Service
            name: event-display
      

      会发现创建一个apiserversource的pod

      在这里插入图片描述

    • 获取event-display当中的日志信息,验证是否进行了事件发送

      kubectl logs -f event-display-00001-deployment-9469968cd-vb4l2 
      

      在这里插入图片描述

5 GitLab Source

  • 关于GitLabSource
    • 将GitLab仓库上的事件转为CloudEvents
    • GitLabSource为指定的事件类型创建一个Webhook,监听传入的事件,并将其传给消费者
  • GitLabSource支持的事件类型包括如下这些:
    • 推送事件:push_events
      • 对应的CloudEvents的类型为“dev.knative.sources.gitlab.push”,以下类同
    • tag推送事件:tag_push_events
    • 议题事件:issues_events
    • 合并请求事件:merge_requests_events
    • 私密议题事件:confidential_issues_events
    • 私密评论:confidential_note_events
    • 部署事件:deployment_events
    • 作业事件:job_events
    • 评论:note_events
    • 流水线事件:pipeline_events
    • Wiki页面事件:wiki_page_events
5.1 GitLab Source 实践
  • 示例环境说明

    • 一个部署可用的GitLab服务
    • GitLab服务上隶于某个用户(例如root)的代码仓库(例如myproject)
    • 负责接收CloudEvents的kservice/event-display

    在这里插入图片描述

  • 具体步骤

    • 部署Gitlab
    • GitLab上的操作
      • 为GitLab用户设置Personal Access Token
      • 准备示例仓库myproject
    • 在Knative上部署GitLabSource
    • 在Knative上部署KService/event-display
    • 创建Secret资源,包含两个数据项
      • GitLab上的Personal Access Token
      • GitLab调用GitLabSource与Webhook Secret
    • 创建GitLabSource资源
      • 从GitLab仓库加载事件
      • 将事件转为CloudEvents,并发往Sink
  • 具体操作

    • 部署GitLab
    • Gitlab上操作
      • 通用→可见性:设定“自定义HTTP(S)协议Git克隆URL”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1320103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axie Infinity 之后,Ronin 的潜力何在?

作者:stellafootprint.network 数据来源:Ronin Dashboard 备受欢迎的 Web3 游戏 Pixels 在 2023 年 10 月下旬从 Polygon 迁移到了专为游戏设计的区块链 Ronin。Pixels 此前作为 Polygon 上活跃用户(钱包数量)最多的 Web3 游戏&…

【重点】【DFS】【子集】78.子集

题目 法1&#xff1a;DFS 必须掌握的方法&#xff01;&#xff01;&#xff01; 我们也可以用递归来实现子集枚举。 假设我们需要找到一个长度为 nnn 的序列 aaa 的所有子序列&#xff0c;代码框架是这样的&#xff1a; void dfs(int cur, int n, LinkedList<Integer>…

HTML5+CSS3小实例:3D发光切换按钮效果

目录 一、运行效果 图片效果 二、项目概述 三、开发环境 四、实现步骤及代码 1.创建空文件夹 2.完成页面内容 3.完成css样式 五、项目总结 六、源码获取 一、运行效果 图片效果 二、项目概述 该项目是一个基于HTML和CSS的动态小猫动画。通过使用CSS样式和动画效果…

开源支付项目,还有强大的聚合支付项目,值得借鉴学习,收藏备用

开源支付项目,还有强大的聚合支付项目,值得借鉴学习,收藏备用 自学编程之道2023-03-18 14:26 移动支付随处可见,以前都是微信、支付宝分别各一个收款码,二维码多了之后就不好管理了,随着支付方式的增多,现在基本上都用聚合支付,多种支付方式,一码搞定。针对支付及聚…

Linux常用网络指令

网络参数设定使用的指令 手动/自动设定与启动/关闭 IP 参数&#xff1a;ifconfig, ifup, ifdown ifconfig ifconfig常用于修改网络配置以及查看网络参数的指令 [rootwww ~]# ifconfig {interface} {up|down} < 观察与启动接口 [rootwww ~]# ifconfig interface {options…

项目管理:产品经理如何保障项目按时完成

一个项目的成功要考虑多方因素&#xff0c;即使经过了精细的策划&#xff0c;但是在项目推进过程中也会遇到各种问题。 产品经理的任务就不仅仅在于完成产品策划&#xff0c;还需要承担项目管理工作&#xff0c;跟进项目进度&#xff0c;必要时还得出面协调、解决冲突&#x…

猜数字小游戏(猜错了会关机推荐让室友帮你玩)

前言 今天来带大家写一个简易的猜数字小游戏&#xff0c;如果连着猜错n次&#xff08;自己设定&#xff09;就会导致电脑关机&#xff0c;还在等什么呢&#xff1f;赶紧学会咯&#xff0c;发给你的室友让他帮你玩吧&#xff01; 正文 随机数的生成 首先我们还要学会如何创建随…

Windows10 如何开机自动启动redis

前言 当我们在Windows 10上使用Redis时&#xff0c;通常希望能够使Redis服务在系统启动时自动启动&#xff0c;以便我们无需手动介入就能够方便地访问和管理数据。在这个过程中&#xff0c;我们将通过下载、安装和配置Redis为Windows服务的方式&#xff0c;使其成为系统的一部分…

python与机器学习4,激活函数

目录 1 激活函数1: 单位阶跃函数 1.1 函数形式 1.2 函数图形 1.3 函数特点 1.4 代码实现这个 单位阶跃函数 2 激活函数2 sigmoid函数 2.1 函数形式 2.2 函数图形 2.3 函数特点 2.3.1 是一个连续函数&#xff0c;且是一个渐变的曲线 2.3.2 是连续区间的[0,1] , 可以…

JVM基础扫盲

什么是JVM JVM是Java设计者用于屏蔽多平台差异&#xff0c;基于操作系统之上的一个"小型虚拟机"&#xff0c;正是因为JVM的存在&#xff0c;使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次&#xff0c;在任何操作系统都可以以相…

定制 Electron 窗口标题栏

Electron 是一款流行的桌面应用开发框架&#xff0c;基于 Web 技术构建&#xff0c;提供了强大的跨平台能力。在开发过程中&#xff0c;经常需要定制窗口标题栏以创造独特的用户体验。 1. 完全隐藏默认标题栏 有时候&#xff0c;我们希望创建一个自定义的标题栏&#xff0c;完…

光伏收益计算工具:实现可持续能源投资的决策支持

随着全球能源结构的转型&#xff0c;光伏发电作为主要的可再生能源之一&#xff0c;其投资前景日益光明。然而&#xff0c;光伏发电项目的投资决策需要基于准确的收益预测。因此&#xff0c;光伏收益计算工具应运而生&#xff0c;为投资者提供决策支持。 光伏收益计算工具是一种…

护肤品品牌怎么创建百度百科词条?

护肤品品牌创建百度百科词条&#xff0c;需要遵循一定的步骤和原则&#xff0c;同时保证内容的真实性和权威性。以下是伯乐网络传媒给大家分享的详细创建流程和注意事项&#xff1a; 一、准备工作 收集资料&#xff1a;首先&#xff0c;需要收集品牌的详细资料&#xff0c;包括…

【Matlab】如何可视化多项式函数(附完整MATLAB代码)

可视化多项式函数 前言多项式函数MATLAB 对理解多项式函数的帮助 正文思考步骤 代码实现及图像显示对于一元多项式函数对于多元多项式函数 前言 多项式函数 多项式函数是数学中常见的一类函数&#xff0c;它的一般形式可以表示为&#xff1a; [ f ( x ) a n x n a n − 1 x…

基于Python Django的内容管理系统Wagtail CMS部署与公网访问

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 前言 Wagtail是一个用Python编写的开源CMS&#xff0c;建立在Django Web框架上。Wagtail 是一个基于 Django 的开源内容管理系统&#xf…

X86汇编语言:从实模式到保护模式(代码+注释)--c10、11(保护模式:32位x86处理器编程架构+进入保护模式)

保护模式&#xff1a;32位x86处理器编程架构 IA-32架构的基本执行环境 寄存器扩展 通用寄存器&#xff08;32&#xff09;&#xff1a;EAX EBX ECX EDX ESI EDI EBP ESP 指令寄存器&#xff08;32&#xff09;&#xff1a;EIP 标志寄存器&#xff08;32&#xff09;&#xff…

PFA试剂瓶本底低PFA取样瓶可采集、储存电子级酸

PFA取样瓶是一种可靠、耐用的用于采集、储存、运输和分析食品、医药、环境和化工等领域样品的容器。相对于传统的取样瓶材料如玻璃或塑料&#xff0c;PFA取样瓶拥有多种优点&#xff0c;使其成为当前许多行业的首选。 首先&#xff0c;PFA取样瓶的材质是聚四氟乙烯共聚物&#…

解读远程工作设计师之未来与发展

引言 在数字化的浪潮下&#xff0c;“远程工作”已经成为现代职场的一个重要趋势。对于设计师来说&#xff0c;这不仅是一种工作方式的转变&#xff0c;更是职业发展的新机遇。在这篇文章中&#xff0c;我将从以下9个方面&#xff0c;深入探讨远程工作设计师的机会、市场和职位…

【Axure RP9】动态面板使用------案例:包括轮播图和多方式登入及左侧菜单栏案例

目录 一 动态面板简介 1.1 动态面板是什么 二 轮播图 2.1 轮播图是什么 2.2 轮播图应用场景 2.3 制作实播图 三 多方式登入 3.1多方式登入是什么 3.3 多方式登入实现 四 左侧菜单栏 4.1左侧菜单栏是什么 4.2 左侧菜单栏实现 一 动态面板简介 1.1 动态面板是什么…

每日好题-A+B problem 高精度的加法和进位计算

C - A B Problem Description 给定两个整数 A,B&#xff0c;计算AB 的值&#xff0c;并计算出现进位的次数。 Input 两个整数 A,B(0≤A,B≤10^10^6)---没错就是10^1000000 Output 两行两个整数表示 AB 的值与出现进位的次数。 Samples Sample #1 Input 15 16 Outp…