如果您还未安装 Rainbond 历史版本,请直接参考 快速安装

如果您还对 Rainbond 项目有疑问,请参考 Rainbond 是什么?

新特性

云原生应用治理模式切换

Rainbond 致力于无侵入,松耦合的应用管理理念。松耦合体现在多个方面:

  • 服务间松耦合

对于微服务的核心理念是,系统中的各个服务可被独立开发、独立部署,独立升级,各个服务之间是松耦合的。云原生应用架构理念是进一步强调架构的松耦合,降低服务之间相互依赖的程度。Rainbond 开箱即用的服务治理思想使部署到平台的应用天然形成微服务架构。

  • 应用和运行环境松耦合

应用研发、打包独立化标准化,通过标准化的平台实现交付到任何运行环境中。Rainbond 提供了应用模型开发、发布、分享、安装全链路支持,服务于应用交付场景。

  • 服务治理能力与业务逻辑解耦

这是我们新版本的重点,我们引入了应用级治理模式切换功能,实现服务治理能力可动态切换,无需业务逻辑变更,为业务提供不同的治理能力。当前版本我们支持在内置 ServiceMesh 治理模式和 Kubernetes 原生模式直接切换。有了这套体系,未来的版本中将实现用户自定义治理模式,引入 Istio、linkd 等成熟的 ServiceMesh 框架。

详细使用说明参考文档 应用治理模式切换

image-20210221143301916

组件自定义业务监控和可视化

Rainbond 希望提供给开发者对应用全方位的监控能力。过去的版本中主要包括资源监控、性能分析、状态检测等维度。本次发布,提供给开发者在业务维度自定义监控及可视化的能力。Prometheus 已经成功云原生监控领域的事实规范,Rainbond 支持开发者基于 Prometheus 规范定义监控指标,配置监控点后由 Rainbond 自动发现并收集监控数据,提供给用户进行查询和可视化。用户可以借助插件体现安装社区已有的 Exporter 插件,便捷的扩展业务监控能力。

详细使用说明参考文档 业务自定义监控

5.2.2升级至5.3.0文档 - 图2

全新的控制台和集群安装方式

为了进一步降低用户的使用 Rainbond 的门槛,在 5.3 版本中我们将控制台的安装运维和集群端的安装运维解耦合。用户仅需一条 Docker run 命令即可再任意有 Docker 环境中将 Rainbond 控制台运行起来。在集群安装维度,新增了阿里云 ACK、对接已有 Kubernetes 集群、从主机便捷安装集群等多种途径,帮助用户快速完成资源池化。

5.2.2升级至5.3.0文档 - 图3

详细使用说明参考文档 快速安装

应用配置组

云原生应用推荐使用环境变量进行配置管理。因此我们经常需要在同一个应用的多个组件中添加相同的配置。比如一个应用下有多个组件使用同一个 Oracle 数据库,我们通过环境变量来配置 Oracle 数据库的连接信息。管理和配置需要做很多重复的事。借助应用配置组即可将配置信息在应用级统一管理,批量生效,大大降低开发者的操作次数。

5.2.2升级至5.3.0文档 - 图4

详细使用参考文档 应用配置组

其他新特性和变化

  • 应用组件库支持应用模型的版本管理和详情设置
  • 应用模型离线导出改进,导出文件大小显著降低(向下不兼容)。
  • 应用模版离线导入改进,支持并行导入多个应用模型。
  • 支持控制台数据备份和迁移
  • 改进 Oauth2.0 支持,现已支持 Github,Gitlab,Gitee,钉钉,阿里云等第三方认证。
  • 网关支持会话保持负载均衡算法
  • 团队视图应用列表排序改进,基于应用操作活跃情况进行排序
  • 新增应用维度资源占用情况数据统计
  • 应用发布流程改进,支持发布时灵活编辑发布的组件数量。
  • 应用升级支持插件
  • 支持 Java Maven 配置管理
  • 移除 rbd-repo 组件降低资源消耗
  • Rainbond 项目切换为 gomod 管理
  • Rainbond console python 版本升级到 3.6

控制台升级

从 v5.2.2-release 升级到 v5.3.0-release ,需要对控制台和集群端分别进行升级。当前章节部分,描述控制台升级步骤。全过程提供视频教程,详见文章末尾。

数据库备份

在控制台升级之前,需要先对控制台所使用的数据库进行备份与升级。操作默认需要进入 rbd-db-0 数据库容器环境操作,如果你的 Rainbond 对接了外部的数据库,那么请酌情备份与升级(sql)。

  • 备份
  1. # 登录 rbd-db-0 进行数据备份,对象为 console region 库
  2. kubectl exec -ti rbd-db-0 -n rbd-system -- bash
  3. mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --databases console > /var/lib/mysql/console.sql
  4. mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --databases region > /var/lib/mysql/region.sql
  5. # 备份文件默认位于主节点的如下位置,如果你的集群没有使用默认的 nfs 共享存储,那么需要手动寻找 rbd-db 的持久化路径
  6. ls /opt/rainbond/data/db*/mysql/*.sql
  • 升级 console 库
  1. # 登录 rbd-db-0 进行操作
  2. kubectl exec -ti rbd-db-0 -n rbd-system -- bash
  3. curl https://gitee.com/rainbond/rainbond-console/raw/V5.3/sql/5.2.2-5.3.0.sql -o /5.2.2-5.3.0.sql
  4. mysql -uroot -p${MYSQL_ROOT_PASSWORD} -Dconsole -e 'source /5.2.2-5.3.0.sql'

安装新版本控制台

  • 从开源应用商店安装应用 Rainbond-开源

  • 将集群原来使用的 console 数据库以第三方组件的形式注册到部署好的 Rainbond-开源 应用内,静态注册地址填写: rbd-db-rw.rbd-system:3306,添加连接信息所需环境变量,取代 Rainbond-开源 中的 Mysql5.7 数据库。数据库如果你的 Rainbond 对接了外部的数据库,那么请直接为依赖数据库的 Rainbond-控制台集群安装驱动服务 添加对应的环境变量。替换数据库完成后,更新上述的两个服务组件。具体添加的环境变量见下表:

连接信息环境变量名环境变量值
DB_TYPEmysql
MYSQL_DBconsole
MYSQL_USERroot
MYSQL_PASS<查询 rbd-db-0 容器中 ${MYSQL_ROOT_PASSWORD} 值>
  • 将集群 API 地址修改为网关 IP ,如果你的集群有多个网关,请填写 VIP 或负载均衡地址。

5.2.2升级至5.3.0文档 - 图5

修改 API 地址

处理原控制台

原控制台指安装时默认在 rbd-system 命名空间中创建的 rbd-app-ui-xxxxxxxxx-xxxx pod,以及维护这些 pod 所涉及的 rbdcomponents 、 deployment 等资源。由于涉及新老资源交替的问题,处理原控制台的操作步骤,强烈建议在后续的集群端升级操作后进行。

通过编辑 Rainbond 自定义的 rbdcomponents 资源, 可以为原控制台进行以下配置来完成升级动作:

  • 镜像地址使用 registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond:v5.3.0-release-allinone
  • 添加环境变量DB_TYPE=mysql
  • 添加新的 pvc 挂载

所有的改动,都在 spec 段落中进行:

  1. kubectl edit rbdcomponents.rainbond.io rbd-app-ui -n rbd-system
  2. spec:
  3. env:
  4. - name: DB_TYPE
  5. value: mysql
  6. volumeMounts:
  7. - mountPath: /root/.ssh
  8. name: app
  9. subPath: ssh
  10. image: registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond:v5.3.0-release-allinone
  11. imagePullPolicy: IfNotPresent
  12. priorityComponent: false
  13. replicas: 1
  14. resources: {}

在集群中安装了 Rainbond-开源 控制台后,原控制台可以作为运维后门存在,只在 Rainbond-开源 故障无法访问时开启,平时,可以将 replicas 置为 0 ,来关闭 pod ,实现节省资源的目的。

集群端升级

从 v5.2.2-release 升级到 v5.3.0-release ,需要对控制台和集群端分别进行升级。当前章节部分,描述集群端升级步骤。全过程提供视频教程,详见文章末尾。

更新 Rainbond CRD 资源

  1. # 加载 CRD 配置文件
  2. kubectl apply -f https://raw.githubusercontent.com/goodrain/cloud-adaptor/main/chart/crds/monitoring.coreos.com_servicemonitors.yaml

更新 rainbond-operator 组件

  1. # 删除旧的 rainbond-operator statefulset
  2. kubectl delete sts rainbond-operator -n rbd-system
  3. # 创建新的 rainbond-operator deployment
  4. kubectl apply -f https://raw.githubusercontent.com/goodrain/cloud-adaptor/main/hack/deployment.yaml

更新构建私服组件

  1. # 删除 rbd-repo 的 rbdcomponent
  2. kubectl delete rbdcomponents.rainbond.io rbd-repo -n rbd-system
  3. # 创建新组件 rbd-resource-proxy
  4. kubectl apply -f https://raw.githubusercontent.com/goodrain/cloud-adaptor/main/hack/rbd-resource-proxy.yaml

升级集群端镜像

  1. # 将 rbdcomponent 资源提取为文件
  2. kubectl get rbdcomponents.rainbond.io -n rbd-system -o yaml > rbdcompontent.yaml
  3. # 修改这个文件中的 tag
  4. sed -i "s/v5.2.2-release/v5.3.0-release/g" rbdcompontent.yaml
  5. # 加载配置
  6. kubectl apply -f rbdcompontent.yaml

更新其他功能性镜像

  1. # 登录
  2. function Login_registry(){
  3. inner_registry=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep domain | awk '{print $2}')
  4. registry_user=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep username | awk '{print $2}')
  5. registry_pass=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep password | awk '{print $2}')
  6. docker login --username ${registry_user} --password ${registry_pass} ${inner_registry}
  7. }
  8. # 拉镜像并替换、推送
  9. function Other_images(){
  10. from_registory=registry.cn-hangzhou.aliyuncs.com/goodrain
  11. to_registory=goodrain.me
  12. for image in builder runner rbd-init-probe rbd-mesh-data-panel
  13. do
  14. docker pull $from_registory/$image:v5.3.0-release
  15. docker tag $from_registory/$image:v5.3.0-release $to_registory/$image
  16. docker push $to_registory/$image
  17. done
  18. }
  19. # 开始更新
  20. Login_registry && Other_images

更新 grctl 命令

  1. # 下载命令并替换旧版本命令
  2. docker run -it --rm -v /:/rootfs registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-grctl:v5.3.0-release copy
  3. mv /usr/local/bin/rainbond-grctl /usr/local/bin/grctl && grctl install

创建 Maven 源码构建默认配置(可选)

该步骤用于创建一份默认的 java maven 源码构建所需要使用的 settings.xml 配置,多数场景下用于声明企业内部私服地址、用户名、密码等信息。当你不需要自定义时,Rainbond 会默认生成阿里云私服地址。故而该步骤可选。

  1. grctl build maven-setting add --file <用户自定义 settings.xml 文件的绝对路径>

重新构建插件

进入插件管理页面,在 出口网络治理插件服务综合网络治理插件 各自的管理页面中点击构建,使之更新。对于已安装了上述插件的服务组件,构建插件后需要重新安装插件使之生效。

5.2.2升级至5.3.0文档 - 图6

重新构建插件

备份最新控制台

5.2.2升级至5.3.0文档 - 图7

点击增加备份

升级验证

  • 观察总览页面中企业信息一栏中,平台版本是否为 v5.3.0-release
  • 观察集群页面中,已对接集群的平台版本是否为 v5.3.0-release
  • 检查集群中运行的 rbd-api rbd-chaos rbd-eventlog rbd-gateway rbd-monitor rbd-mq rbd-node rbd-webcli rbd-worker 服务,其使用镜像的 tag 是否为 v5.3.0-release
  • 尝试源码构建 java maven 项目,验证 rbd-resource-proxy 服务是否工作正常
  • 遵循 新特性 章节,逐一尝试新功能,验证是否工作正常

离线升级

目前 Rainbond v5.3.0-release 版本不提供离线升级包。然而升级过程中的所有资源,包括配置文件、镜像均可以离线化处理。用户可以自行将这些资源下载并本地化,导入到离线的 Rainbond v5.2.2-release 环境中进行升级操作。

需要注意的是:

  • 不必为离线环境安装 Rainbond-开源 控制台,参考文档处理原控制台即可
  • 要为控制台组件添加环境变量 DISABLE_DEFAULT_APP_MARKET = true。这一变量用来规避离线环境下,控制台对开源应用商店的频繁请求
  • 准备离线镜像时,不要遗漏 rainbond-operatorrbd-resource-proxy 所对应的镜像,镜像地址均定义在启动它们的 deployment.yaml 配置文件中

视频教程

好雨科技官方于 2021 年 3 月 11 日进行了线上直播,实操教学了 从 Rainbond 5.2.2-release 升级到 5.3.0-release 的全过程,并且提供回放,用户可以点击链接在线观看该视频。

视频资源托管于 B 站,欢迎大家跳转链接到 B 站发弹幕吐槽