Rainbond V5.12 版本发布,支持平台级插件和能力扩展

news2024/11/13 7:53:39

在这个版本中,我们主要支持了平台级的插件和能力扩展。希望能通过外部插件扩展平台能力,实现微内核的效果;同时以后将会继续精简安装,能让用户按需扩展平台功能。在 Kubernetes 兼容性这方面,我们也通过平台级的能力将对应资源暴露出来,交给用户处理。

概述

在之前的版本中,用户一开始会依赖于平台的功能简化管理,但到了高级使用场景,就有可能遇到平台当前已有的功能无法满足用户需求,此时给用户扩展平台能力的机制就非常重要。如果为了扩展平台功能,升级整个底层平台,将会面临复杂性和稳定性的挑战。

同时由于 Rainbond 主要在应用这一层进行抽象,所以对于 Kubernetes 中集群所提供的一些能力,并不能全部在平台上进行展示,如 StorageClass、GatewayAPI 等能力也无法在平台上直接进行管理。为了给用户提供更高级的功能,在之前的版本中,我们在 Kubernetes 生态的兼容性上做了许多工作,如应用级别的 K8s 资源创建、组件级的 K8s 属性配置等。

而在 5.12 版本以后,我们将通过 Rainbond 的插件体系扩展平台的功能。在这里有以下两个概念,平台级的插件和能力。

插件:

插件在 Rainbond 中其实对应的是应用市场中的应用,但是该应用包含插件的元数据定义(通过 CRD 资源定义),这样当用户安装该插件时,可以在平台管理-扩展-插件中获取到该插件的信息,并可以快速跳转到该应用进行管理。这样可以利用已有的应用商店体系,实现平台插件体系的分发和管理。

通常来说,一个插件包含以下内容:

  1. 一个能正常运行的应用:这个应用是插件的完整实现,即使单独部署也可以正常进行工作。
  2. 插件的描述文件(CRD):这个文件主要定义了插件的基本信息、如名称、描述、版本、作者等。
  3. 能力的描述文件(CRD):这个文件主要定义了该插件可以提供哪些能力,在这个 K8s 集群中所有该能力的实现都会被展示出来。如 ServiceMesh 类型的插件提供了应用治理的能力,那么在安装这类插件时,将会列出其能够提供的能力资源。

这样安装插件后,我们就可以一目了然的知道当前 k8s 集群提供的能力,比如支持应用治理的各类 ServiceMesh 框架、不同的 GatewayAPI 实现,不同的存储能力等等。

能力:

能力扩展主要是将 Kubernetes 底层所提供的一些能力展示给用户。通过 CRD 资源定义,将 Kubernetes 集群中一些资源同步到平台内,可以快速预览和编辑这些资源。如定义集群中的 storageClass 作为存储能力的展现,那么就可以在这里预览到所有的 storageClass 资源并进行操作。

而插件中则可以包含能力这种资源的定义,这样在安装插件时,即可同时暴露出该插件可提供的能力,由用户处理。如下图所示:

为什么使用插件

对于用户而言,安装插件与安装应用的体验完全一致。那为什么还要使用插件呢?主要可以从以下几点来看:

  1. 插件可以实现全局的管理,对于企业管理员而言,更关注于平台提供了哪些能力,这些都可以一目了然。而仅仅使用应用时,管理员无法对这些提供能力的应用做统一管理。
  2. 插件可以按需安装,与平台解耦,不会与平台一起安装,这样不需要该插件时则不会占用资源。
  3. 利用应用商店的分发体系,可以单独升级插件,Bug 修复也会更及时。
  4. 不同的插件都可以为平台的用户提供不同的能力,如 GatewayAPI 插件,可以为平台提供额外网关的能力;各类 ServiceMesh 插件,可以为平台提供应用治理模式注入的能力;云厂商的各类云服务,可以为平台提供存储的能力等等。

后续我们也会继续发布一些平台级的插件和能力,通过应用市场进行分发,供用户使用。目前已有Rainbond Pipeline 插件可以丰富平台的 CI 流程,具体使用参考文档:Pipeline 使用文档

详细变更点

新增功能

  • 支持平台级插件和能力扩展 #1480
  • 新增流水线插件,扩充平台 CI 能力 #1180

优化功能

  • 支持通过 OpenAPI 创建组件 #1266
  • 优化 Helm 仓库安装应用逻辑 #1570

BUG 修复

  • 修复Gitlab OAuth 仓库最多只显示20个仓库的问题 #1560
  • 修复团队页面排序问题 #1571 #1274
  • 修复 DockerCompose 放弃创建后,应用名重复的问题 #1573

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

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

相关文章

详解JAVA类加载

目录 1.概述 2.双亲委派 3.ServiceClassLoader 4.URLClassLoader 5.加载冲突 1.概述 概念: 类加载器(Class Loader)是Java虚拟机(JVM)的一个重要组件,负责加载Java类到内存中并使其可以被JVM执行。类…

2023/3/6 VUE - 组件传值【通信】方式

1 父亲传子代传值【子代使用父代的数据】 1.1 props传值 父亲给儿子传值: 爷爷给孙子传值: 这个props传值的方式,只能一代一代的往下传,不能跨代传值。 有一个问题:子组件不能修改父组件的值: 1.2 …

MyBatis学习笔记(十) —— 动态SQL

10、动态SQL MyBatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串的痛点问题。 动态SQL: 1、if 标签:通过test属性中的表达式判断标签中的内容是否有效(是否会拼接到sql中…

RTOS中相对延时和绝对延时的区别

相信许多朋友都有过这么一个需求:固定一个时间(周期)去处理某一件事情。 比如:固定间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过指令发送出去。 你会通过什么方式解决呢&#xf…

Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案

前言在日常的项目中,缓存的使用场景是比较多的。缓存是分布式系统中的重要组件,主要解决在高并发、大数据场景下,热点数据访问的性能问题,提高性能的数据快速访问。本文以Redis作为缓存时,针对常见的缓存击穿、缓存穿透…

Java中 new Integer 与 Integer.valueOf 的区别

引入:new Integer(18) 与 Integer.valueOf(18) 有区别吗?有的话,有什么区别? 我们都知道,使用 new 关键字的时候,每次都会新创建一个对象。但是,Integer.valueOf() 会新创建一个对象吗&#xf…

Linux环境下实现并详细分析c/cpp线程池(附源码)

一、线程池原理 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 线程池是一种多线程处理形式,处理过程中将任务添加到…

Unity Animator.Play(stateName, layer, normalizedTime) 播放动画函数用法

原理 接口: public void Play(string stateName, int layer -1, float normalizedTime float.NegativeInfinity);参数含义stateName动画状态机的某个状态名字layer第几层的动画状态机,-1 表示播放第一个状态或者第一个哈希到的状态normalizedTime从s…

spring security 实现自定义认证和登录(4):使用token进行验证

前面我们实现了给客户端下发token,虽然客户端拿到了token,但我们还没处理客户端下一次携带token请求时如何验证,我们想要实现拿得到token之后,只需要验证token,不需要用户再携带用户名和密码了。 1. 禁用 UsernamePass…

崭新的centos虚拟机不能上网

原因 先说点简单的: 没启用虚拟机容器的网络选项虚拟机的网卡没启用手动设置了网关、掩码、dns等没设置对DHCP没开 做法 没启用虚拟机容器的网络选项 在virtualbox里面,开启虚拟机后右下角有个网络选项这里亮着就说明开了,没亮就右键打开…

BufferQueue研究

我们在工作的过程中,肯定听过分析卡顿或者冻屏问题的时候,定位到APP卡在dequeueBuffer方法里面,或者也听身边的同事老说3Buffer等信息。所以3Buffer是什么鬼?什么是BufferQueue?搞Android,你一定知道Graphic Buffer和…

理解js的精度问题

参考博客:js精度丢失问题-看这篇文章就够了(通俗易懂)、探寻 JavaScript 精度问题以及解决方案、JavaScript 浮点数陷阱及解法 1 为什么 JavaScript 中所有数字包括整数和小数都只有一种类型 即 Number类型,它的实现遵循 IEEE 754 标准。 符号位S&#…

MySQL运维篇之Mycat分片规则

3.5.3、Mycat分片规则 3.5.3.1、范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片。 示例: 可以通过修改autopartition-long.txt自定义分片范围。 注意: 范围分片针对于数字类型的字段,…

Kubernetes Pod 水平自动伸缩(HPA)

Pod 自动扩缩容 之前提到过通过手工执行kubectl scale命令和在Dashboard上操作可以实现Pod的扩缩容,但是这样毕竟需要每次去手工操作一次,而且指不定什么时候业务请求量就很大了,所以如果不能做到自动化的去扩缩容的话,这也是一个…

IO文件操作

认识文件 狭义的文件 存储在硬盘上的数据,以“文件"为单位,进行组织 常见的就是普通的文件 (文本文件,图片, office系列,视频,音频可执行程序…)文件夹也叫做"目录" 也是一种特殊的文件。 广义的文件 操作系统,是要负责管理软硬件资源,操作系统(…

更高效的跨端开发选择:基于小程序容器的Flutter应用开发

为什么说Flutter是一个强大的跨端框架? Flutter是一个基于Dart编程语言的移动应用程序开发框架,由Google开发。它的强大之处在于它可以快速构建高性能、美观、灵活的跨平台应用程序,适用于Android、iOS、Web、Windows、macOS和Linux等多个平…

Git图解-常用命令操作

目录 一、前言 二、初始化仓库 三、添加文件 四、Git 流程全景图 五、Git工作流程 六、工作区和暂存区 七、查看文件状态 八、查看提交日志 九、查看差异 十、版本回退 十一、管理修改 十二、修改撤销 十三、删除文件 十四、分支管理 十五、项目分支操作 十六、…

Centos7使用OVS桥的方式创建KVM虚拟机

一、OVS使用 1、OVS编译安装 下载ovs2.17版本源码 http://www.openvswitch.org//download/ ./boot.sh ./configure make && make install2、启动OVS服务 (1)创建文件/etc/systemd/system/openvswitch.service [rootlocalhost qemu]# syste…

Spring Cloud Alibaba全家桶(五)——微服务组件Nacos配置中心

前言 本文小新为大家带来 微服务组件Nacos配置中心 相关知识,具体内容包括Nacos Config快速开始指引,搭建nacos-config服务,Config相关配置,配置的优先级,RefreshScope注解等进行详尽介绍~ 不积跬步,无以至…

【面试题】如何避免使用过多的 if else?

大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库一、引言相信大家听说过回调地狱——回调函数层层嵌套,极大降低代码可读性。其实,if-else层层嵌套,如下图…