跳到主要内容

5.2.2升级至5.3.1文档

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

版本变更

5.3.1 版本变更

控制台升级

从 v5.2.2-release 升级到 v5.3.1-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://grstatic.oss-cn-shanghai.aliyuncs.com/docs/5.3/upgrade/5.2.2-5.3.0.sql -o /5.2.2-5.3.0.sql
curl https://grstatic.oss-cn-shanghai.aliyuncs.com/docs/5.3/upgrade/5.3.0-5.3.1.sql -o /5.3.0-5.3.1.sql

mysql -uroot -p${MYSQL_ROOT_PASSWORD} -Dconsole -e 'source /5.2.2-5.3.0.sql'
mysql -uroot -p${MYSQL_ROOT_PASSWORD} -Dconsole -e 'sourcne /5.3.0-5.3.1.sql'

更新 5.2.2 控制台

kubectl apply -f https://grstatic.oss-cn-shanghai.aliyuncs.com/docs/5.3/upgrade/rbd-app-ui-5.2.2.1-rbdcomponent.yaml

确认 rbd-app-ui 的状态:

 kubectl get po -l name=rbd-app-ui -n rbd-system
NAME READY STATUS RESTARTS AGE
rbd-app-ui-7c6877cc9f-ph5pc 1/1 Running 0 90s

安装新版本控制台

  • 从开源应用商店安装应用 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.1-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.1-release-allinone
imagePullPolicy: IfNotPresent
priorityComponent: false
replicas: 1
resources: {}

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

集群端升级

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

更新 Rainbond CRD 资源

# 加载 CRD 配置文件
kubectl apply -f https://grstatic.oss-cn-shanghai.aliyuncs.com/docs/5.3/upgrade/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://grstatic.oss-cn-shanghai.aliyuncs.com/docs/5.3/upgrade/rainbond-operator-deployment-v2.0.1.yaml

更新构建私服组件

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

# 创建新组件 rbd-resource-proxy
kubectl apply -f https://grstatic.oss-cn-shanghai.aliyuncs.com/docs/5.3/upgrade/rbd-resource-proxy-rbdcomponent-v5.3.1-release.yaml

更新 grctl 命令

docker run -it --rm -v /:/rootfs  registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-grctl:v5.3.1-release copy
mv /usr/local/bin/rainbond-grctl /usr/local/bin/grctl && grctl install

执行升级命令

grctl cluster upgrade --new-version=v5.3.1-release

更新其他功能性镜像

# 登录 
function Login_registry(){
inner_registry=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep -v 'f:domain' | grep domain | awk '{print $2}')
registry_user=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep -v 'f:username' | grep username | awk '{print $2}')
registry_pass=$(kubectl get rainbondcluster -n rbd-system -o yaml | grep -v 'f:password' | 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.1-release
docker tag $from_registory/$image:v5.3.1-release $to_registory/$image
docker push $to_registory/$image
done
}

# 开始更新
Login_registry && Other_images

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

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

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

重新构建插件

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

重新构建插件

备份最新控制台

点击增加备份

升级验证

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

离线升级

目前 Rainbond v5.3.1-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 的全过程,并且提供回放,用户可以点击链接在线观看该视频。

该视频演示的是"从 Rainbond 5.2.2-release 升级到 5.3.0-release 的全过程", 对于 5.2.2-release 升级到 5.3.1-release 仍然有参考意义.