Harbor版本升级:v1.8.x、v1.9.x升级到v1.10.7
一、前言
本文适用于
1.8.x
和1.9.x
升级到1.10.7
。
1.1 业务场景
随着Harbor版本的更新,Harbor目前已发布到最新的2.6.0版本,Harbor仅维护最新的3个大版本,即1.10.x版本已不再维护。
为使业务的Harbor服务稳定可靠,需要将Harbor 1.8.6升级到1.10.7。
1.2 升级说明
通过官方GitHub的版本描述可以看到,由于版本 v1.10.10 放弃了对迁移器的支持,如果您正在经历从以前的 v1.10 升级到 v2.0 的 Harbor,您应该跳过此构建并使用v1.10.7
作为跳板。
值得注意的是:Harbor 2.6.0发布后,v1.10.x已不再维护,
而如果你是想将1.8.x版本升级到最新版,是需要一个版本一个版本来进行升级,无法直接升级到最新版;或者考虑直接搭建一套新的Harbor服务,然后将旧版本的镜像同步到新的Harbor中。
想必细心的你也早已发现,Harbor v1.10.x有13个修复的小版本,表示v1.10.x并不是那么稳定,本次升级到的1.10.7版本中,也会出现一个BUG:UI界面显示异常。
所以在安装本篇文章升级到1.10.7后,再将1.10.7升级到2.0.x版本,这也会在后面的文章中详细的介绍。
1.3 环境说明
本篇文章若无特别说明,Harbor的环境如下:
-
Harbor Version:1.8.6
-
安装目录:/app/harbor
-
IP地址:192.168.2.19
1.4 操作步骤简述
1)停止Harbor;
2)备份;
3)升级;
4)服务验证;
5)版本回退(升级失败);
二、数据备份
为防止版本升级后异常,需要将版本回退到之前的状态,所以得先把数据备份好
2.1 停止Harbor服务
需要先停止Harbor服务,直到升级完成后才启动。
$ cd /app/harbor
$ docker-compose down
2.2 备份Harbor数据
备份Harbor的镜像等“可变化”的数据,即在配置文件中data_volume
指定的数据。
1)查询数据存放位置
$ grep data_volume harbor.yml
data_volume: /data
2)创建备份目录
将所有备份文件备份到该创建的目录下。
$ mkdir /harbor-backup-v1.8.6
3)备份数据
$ cp -r /data/ /harbor-backup-v1.8.6/
$ ls /harbor-backup-v1.8.6/
data
2.3 备份Harbor工作目录
使用mv
将harbor的工作目录移动到备份目录,后面会将新版本的安装包解压覆盖到工作目录。
$ mv /app/harbor/ /harbor-backup-v1.8.6/
$ ls /harbor-backup-v1.8.6/
data harbor
三、版本升级
3.1 下载并解压新版安装包
下载新版离线安装包(v1.10.7),并解压到工作目录/app/。
$ wget -c https://github.com/goharbor/harbor/releases/download/v1.10.7/harbor-offline-installer-v1.10.7.tgz
$ tar zxvf harbor-offline-installer-v1.10.7.tgz -C /app/
3.2 导入新版镜像(可选)
手动导入新版镜像到本地,可选操作,会自动导入
。
$ cd /app/harbor #进入到工作目录
$ ls
common.sh harbor.v1.10.7.tar.gz harbor.yml install.sh LICENSE prepare
$ docker load -i harbor.v1.10.7.tar.gz
3.3 数据迁移(重点)
使用提供的harbor-migrator
迁移工具将旧版本的数据迁移到新版本,该工具在刚才“导入新版镜像”就将该工具的镜像导入了。
$ docker images | grep migrator
goharbor/harbor-migrator v1.10.7 ea036a2a9e71 16 months ago 362MB
goharbor/harbor-migrator v1.8.6 6b29ddab6635 2 years ago 363MB
$ cp /harbor-backup-v1.8.6/harbor/harbor.yml $HOME/
$ ls -l $HOME/harbor.yml
-rw-r--r--. 1 root root 4515 9月 14 00:33 /root/harbor.yml
$ docker run -it --rm -v $HOME/harbor.yml:/harbor-migration/harbor-cfg/harbor.yml \
goharbor/harbor-migrator:v1.10.7 --cfg up
Please backup before upgrade,
Enter y to continue updating or n to abort: y #输入y确认
The path of the migrated harbor.cfg is not set, the input file will be overwritten.
Command for config file migration: python ./cfg/run.py --input /harbor-migration/harbor-cfg/harbor.yml
input version: 1.8.0, migrator chain: ['1.9.0', '1.10.0']
migrating to version 1.9.0
migrating to version 1.10.0
Written new values to /harbor-migration/harbor-cfg/harbor.yml
$ cp $HOME/harbor.yml /app/harbor/
cp:是否覆盖"/app/harbor/harbor.yml"?y
在执行docker run命令的过程,会修改原来的配置文件中的参数,为减小对原来备份文件的影响,将原来的配置文件拷贝到家目录下再进行升级,--rm参数表示容器运行完成退出就删除。
注意:数据库的架构升级和数据迁移是在 Harbor 启动时由 core 执行的。如果迁移失败,请查看核心日志进行调试。
3.4 安装新版Harbor实例
在数据迁移完成后,就可安装新版的Haror实例了。
$ ./install.sh --with-clair --with-chartmuseum
...
#出现以下表示安装成功:
✔ ----Harbor has been installed and started successfully.----
四、服务验证
版本升级完成后,需要验证服务是否正常、镜像是否丢失、用户数据是否丢失等。
4.1 检查服务状态
安装完成后会自动启动Harbor服务。
$ docker-compose ps
4.2 Harbor UI验证
在Harbor UI界面查看镜像是否丢失等。
通过与之前的进行对比发现,Harbor UI出现显示异常!这个是v1.10.7的版本BUG,可升级到下一个版本解决。
五、版本回退
如果出于任何原因需要回滚到以前的 Harbor 版本(基本用不到),可进行以下操作:
5.1 停止Harbor
$ cd /app/harbor
$ docker-compose down
5.2 删除新版Harbor实例
$ rm -rf /app/harbor
5.3 恢复旧版
基于之前备份的数据将版本回退到升级之前的版本。
$ cp -r /harbor-backup-v1.8.6/harbor /app/
5.4 启动服务
$ cd /app/harbor/
$ ./install.sh --with-clair --with-chartmuseum
相关文章
- sqlmap升级后报错的解决方案
- 密集签单:助力石油化工行业数字化升级,艾吉威无人叉车释放AI价值
- 小冰最新融资10个亿,30万数字员工准备大升级
- 升级Linux 4.6内核:提升操作体验(linux4.6内核)
- 更新Linux 4G模块升级,极大提升性能(linux4g模块)
- 改变家庭影院:Linux机顶盒固件升级(linux机顶盒固件修改)
- HarmonyOS 2升级名单:大量荣耀机型加入、麒麟960也有份
- Win10 Build 21343发布:文件管理器的图标全新升级
- Win10 Build 21376发布:升级Segoe UI Variable字体
- Oracle补丁升级:安全优化你的软件(oracle补丁升级)
- Linux系统如何升级内核版本(linux修改内核版本)
- 汉得Oracle EBS:开启数字化业务升级之路(汉得oracleebs)
- MySQL 5.0.45:稳定性升级,数据库开发更可靠。(mysql5.0.45)
- Oracle数据库升级支持EF 6(ef6支持oracle)
- Cognos与MySQL数据引擎升级报道(cognos mysql)
- 升级到Oracle 19c,掌握字符集的更多可能(oracle19c字符集)
- 百度网盘战略升级:融入IoT,布局5G,对标云端操作系统
- 银盛支付董事长陈敏:为什么说支付是数字化升级的「最好抓手」?