本文将介绍 Harbor 从 v1.10.7 升级到 v2.10.0,以及如何将 Harbor 从 v2.10 回滚到 v1.10.7。
升级条件
- Linux服务器
- 4 个 CPU 和 8 GB 内存(强要求),100G可用空间(跨多版本时存放备份文件以及镜像文件,这部分要求)
- Docker-compose > 1.19.0+
- 备份现有的 Harbor /data/database 目录
本次升级主要是使用了 harbor 内置的数据库,所以升级步骤比较容易。
官方升级路线
harbor 的升级,是不能跨很多版本进行升级,官方对此有详细说明 [1] ,可以看到路线为:
1.10.0 [1] => 2.4.0 [2] => 2.6.0 [3] => 2.8.0 [4] => 2.10.0 [5]
模拟升级步骤
github release 页下载对应的安装包
解压
|
|
备份默认的配置文件(仅限于 v1.10.x,v2.x均为 harbor.tmpl)
|
|
清除注释
|
|
修改一些默认配置
|
|
启动服务
|
|
升级步骤
在升级前首先要缕清升级的内容,官方在升级时存在两个步骤,配置文件升级与数据库 schema 升级;并且需要知道升级的路线图,这里是从 1.10.0 升级至本文撰写时最新版本 2.10.0,所以查看官方升级路线为 1.10.0 => 2.4.0 => 2.6.0 => 2.8.0 => 2.10.0。总结升级所需变更如下:
- harbor的配置文件升级
- 数据库 schema 升级,由 harbor-core 组件自动完成
- 升级路线:1.10.0 => 2.4.0 => 2.6.0 => 2.8.0 => 2.10.0
备份当前 harbor 版本
备份当前版本是为了如果需要回滚的话,可以快速的回滚到所需的版本
|
|
备份 Harbor 的当前文件,以便您可以在必要时回滚到当前版本。
备份数据库文件
我们知道了,升级主要是对数据库 schema 进行reschema,Harbor 的每次新版本发布时新的功能及对老功能、代码的重构都会导致数据库模型的变更,因此几乎每次升级都需要升级数据库模式。配置文件数据,是指 Harbor 组件的配置文件,在部分新功能或者新的组件出现时,都需要在配置文件中新增其参数;在老功能、组件重构或者废弃时,也会对配置文件进行更新。
|
|
reschema的工作是由 harbor-core 完成的,所以我们只需要备份即可,当新版本在启动时,第一次会 reschema,这个步骤的时间会随着 harbor 的使用量而增加,这里数据库目录为 13G,1.10.7 => 2.4.0 时间大概在20分钟左右。
harbor的配置文件升级
harbor 配置的升级是需要手动执行的,命令是包含在 offline 安装包中,被包含在 “goharbor/prepare:v2.x.0” 镜像中。用户可以在 Harbor 的离线安装包中找到它,也可以在 Docker Hub 上获取,官方给出升级指南中的命令如下
|
|
“-v /:/hostfs” 是将主机的根目录 “/” 挂载到容器中的 “/hostfs” 目录中。因为命令是运行在容器中的,而文件是在宿主机上的,为了能在容器中访问到指定的文件,需要这样挂载,之后 prepare 会对 “/hostfs” 这个文件做特殊处理,使得在容器里也能访问主机上的指定文件。
”-i“ 是指定旧版本的 harbor 配置文件
migrate 命令有如下3个参数。
–input(缩写形式为“-i”):是输入文件的绝对路径,也就是需要升级的原配置文件。
–output(缩写形式为“-o”):是输出文件的绝对路径,也是升级后的配置文件,是可选参数,如果取默认值,则升级后的文件会被写回输入文件中。
–target(缩写形式为“-t”):是目标版本,也就是打算升级到的版本,也是可选参数,如果取默认值,则版本为此工具发布时所支持的最新版本。
这里我们可以使用如下命令
|
|
升级成功会有如下输出
|
|
启动新服务
在新版本 harbor 目录中,运行 ./install.sh
脚本来安装新的 Harbor 实例,这里会导入离线安装包,生成配置文件,启动服务等操作
替换 docker-compose 文件
docker-compose 的生成是在 prepare 脚本中执行的,可以看出,是调用的 prepare 镜像
|
|
这种情况下,如果我们需要自定义的 docker-compose.yaml 就可以挂在到对应目录即可,模板文件可以在 photon/prepare/templates/docker_compose 处下载进行替换。
替换后,使用 sed 命令,替换 prepare 脚本中的启动命令即可。
|
|
批量升级脚本
|
|
Reference
[1] Upgrade Harbor and Migrate Data - v1.10.0
[2] Upgrade Harbor and Migrate Data - v2.4.0
[3] Upgrade Harbor and Migrate Data - v2.6.0
[4] Upgrade Harbor and Migrate Data - v2.8.0
[5] Upgrade Harbor and Migrate Data - v2.10.0
[6] Prepare 脚本