5.2.2升级至5.3.1文档
如果您还未安装 Rainbond 历史版本,请直接参考 快速安装
如果您还对 Rainbond 项目有疑问,请参考 Rainbond 是什么?
版本变更
控制台升级
从 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_TYPE | mysql |
MYSQL_DB | console |
MYSQL_USER | root |
MYSQL_PASS | <查询 rbd-db-0 容器中 ${MYSQL_ROOT_PASSWORD} 值> |
将集群 API 地址修改为网关 IP ,如果你的集群有多个网关,请填写 VIP 或负载均衡地址。
处理原控制台
原控制台指安装时默认在 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-operator
、rbd-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 仍然有参考意义.