本指南介绍如何将 Harbor 从版本 2.6.4 升级到版本 2.12。鉴于版本跨度较大且升级稳定性考虑,我们采用数据迁移的方式进行升级。该方式的优点包括:
整体迁移流程如下:
执行以下命令,使用 pg_dump 备份旧实例的 pg 数据库。
Registry 数据通常非常庞大,备份需要额外存储空间且耗时较长,难以实现完整备份。此外,Harbor 实例升级通常不会改变 registry 存储结构,因此新实例可以直接复用旧实例的存储。
从 Harbor 2.6 升级到 2.12 时,数据库版本也发生变化,由 PostgreSQL 12 升级到 PostgreSQL 14。因此,需要先将旧实例的数据库备份导入到新数据库(PostgreSQL 14)中,然后使用 Harbor 提供的数据迁移工具,将数据库结构和数据迁移到兼容 Harbor 2.12 的结构。
准备一个运行 PostgreSQL 14 版本的新实例。将 Harbor 数据库备份恢复到该实例后,进行数据库结构迁移。
将备份的数据库导入到新实例使用的数据库中。以下示例使用 psql 演示导入过程,具体导入方式请参考数据库厂商文档。
由于数据库版本不一致,导入过程中可能会出现关于不存在角色或函数的错误,可忽略。例如:
ERROR: role "admin" does not exist
ERROR: function metric_helpers.pg_stat_statements(boolean) does not exist
Harbor 2.6 的数据已导入新实例数据库。接下来运行数据迁移任务,将数据库结构和数据迁移到兼容 Harbor 2.12 的结构。
设置新 PostgreSQL 实例信息,然后创建任务执行数据库迁移:
任务完成后,可在任务日志中查看详细的迁移进度和结果:
从 Operator Hub 页面卸载 harbor operator,然后执行以下命令缩容旧 Harbor 实例:
新实例需要挂载原实例的存储,因此需与原实例处于同一命名空间。
请根据部署文档部署新实例,但需注意以下几点:
以下章节介绍旧实例与新实例的配置迁移。
需获取原实例配置并转换为新实例配置,命令如下:
如果原实例使用 Host Path 存储,配置如下:
迁移为新实例配置:
如果原实例使用存储类,PVC 名称固定:
<旧实例名称>-harbor-registry
新实例直接使用旧 PVC。
如果原实例使用 PVC,配置如下:
新实例配置:
如果原实例使用 NodePort,设置如下配置:
如果原实例使用域名,设置如下配置:
检查所有 Pod 状态:
验证 Harbor 服务可访问:
测试镜像推送和拉取
确认迁移成功后,可手动删除旧 Harbor 实例。