跳到主要内容

5.2.2升级至5.3.0文档

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

新特性

云原生应用治理模式切换

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

  • 服务间松耦合

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

  • 应用和运行环境松耦合

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

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

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

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

image-20210221143301916

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

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

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

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

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

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

应用配置组

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

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

其他新特性和变化

  • 应用组件库支持应用模型的版本管理和详情设置
  • 应用模型离线导出改进,导出文件大小显著降低(向下不兼容)。
  • 应用模版离线导入改进,支持并行导入多个应用模型。
  • 支持控制台数据备份和迁移
  • 改进 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)。

  • 备份
# 登录 rbd-db-0 进行数据备份,对象为 console region 库
kubectl exec -ti rbd-db-0 -n rbd-system -- bash

mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --databases console > /var/lib/mysql/console.sql
mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --databases region > /var/lib/mysql/region.sql

# 备份文件默认位于主节点的如下位置,如果你的集群没有使用默认的 nfs 共享存储,那么需要手动寻找 rbd-db 的持久化路径
ls /opt/rainbond/data/db*/mysql/*.sql
  • 升级 console 库
# 登录 rbd-db-0 进行操作
kubectl exec -ti rbd-db-0 -n rbd-system -- bash

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

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 或负载均衡地址。

修改 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 段落中进行:

kubectl edit rbdcomponents.rainbond.io rbd-app-ui -n rbd-system

spec:
env:
- name: DB_TYPE
value: mysql
volumeMounts:
- mountPath: /root/.ssh
name: app
subPath: ssh
image: registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond:v5.3.0-release-allinone
imagePullPolicy: IfNotPresent
priorityComponent: false
replicas: 1
resources: {}

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

集群端升级

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

更新 Rainbond CRD 资源

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

更新 rainbond-operator 组件

# 删除旧的 rainbond-operator statefulset
kubectl delete sts rainbond-operator -n rbd-system

# 创建新的 rainbond-operator deployment
kubectl apply -f https://raw.githubusercontent.com/goodrain/cloud-adaptor/main/hack/deployment.yaml

更新构建私服组件

# 删除 rbd-repo 的 rbdcomponent
kubectl delete rbdcomponents.rainbond.io rbd-repo -n rbd-system

# 创建新组件 rbd-resource-proxy
kubectl apply -f https://raw.githubusercontent.com/goodrain/cloud-adaptor/main/hack/rbd-resource-proxy.yaml

升级集群端镜像

# 将 rbdcomponent 资源提取为文件
kubectl get rbdcomponents.rainbond.io -n rbd-system -o yaml > rbdcompontent.yaml

# 修改这个文件中的 tag
sed -i "s/v5.2.2-release/v5.3.0-release/g" rbdcompontent.yaml

# 加载配置
kubectl apply -f rbdcompontent.yaml

更新其他功能性镜像

# 登录 
function Login_registry(){
inner_registry=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep domain | awk '{print $2}')
registry_user=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep username | awk '{print $2}')
registry_pass=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep password | awk '{print $2}')
docker login --username ${registry_user} --password ${registry_pass} ${inner_registry}
}

# 拉镜像并替换、推送

function Other_images(){
from_registory=registry.cn-hangzhou.aliyuncs.com/goodrain
to_registory=goodrain.me
for image in builder runner rbd-init-probe rbd-mesh-data-panel
do
docker pull $from_registory/$image:v5.3.0-release
docker tag $from_registory/$image:v5.3.0-release $to_registory/$image
docker push $to_registory/$image
done
}

# 开始更新
Login_registry && Other_images

更新 grctl 命令

# 下载命令并替换旧版本命令

docker run -it --rm -v /:/rootfs registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-grctl:v5.3.0-release copy

mv /usr/local/bin/rainbond-grctl /usr/local/bin/grctl && grctl install

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

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

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

重新构建插件

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

重新构建插件

备份最新控制台

点击增加备份

升级验证

  • 观察总览页面中企业信息一栏中,平台版本是否为 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 站发弹幕吐槽