3.17. 从 2.9.5 升级到 3.0.5
对于 2.9.5 到 3.0.5 升级,您可以使用 Red Hat Quay 关闭(同步升级)进行整个升级(同步升级),或者仅关闭 Red Hat Quay 几分钟,并使升级批量继续运行(background 升级)。
根据需要处理的数量,后台升级可能需要更长时间才能运行升级。但是,停机时间会减少。后台升级的情况是,在升级完成前,您将无法访问最新的功能。集群在 v2 兼容性模式中从 Quay v3 容器运行,直到升级完成为止。
3.17.1. 升级概述
如果您从 Red Hat Quay 2.y.z 集群开始,请按照以下步骤操作。在升级到最新的 Red Hat Quay 3.x 版本前,您必须首先将该集群迁移到 3.0.5,如下所述。集群正在运行 3.0.5 后,您可以通过按顺序升级到每个次版本来升级到最新的 3.x 版本。例如:
- 3.0.5 → 3.1.3
- 3.1.3 → 3.2.2
- 3.2.2 → 3.3.4
- 3.3.4 → 3.4.z
在开始 Red Hat Quay 2.y.z 到 3.0 升级前,请注意以下几点:
- 同步升级 :对于同步升级,小安装需要一小时少于一小时。考虑一个小安装,使其包含几千个容器镜像标签或更少。对于该大小安装,您可能会有几小时的调度停机时间。整个 Red Hat Quay 服务在持续时间内停机,因此如果您尝试在具有数百万标签的 registry 上尝试同步升级,则可能会在几天内停机。
- 后台升级 :对于后台升级(也称为兼容性模式升级),在短暂关闭 Red Hat Quay 集群升级后在后台运行。对于大型 Red Hat Quay registry,这可能需要几周才能完成,但集群在升级期间仍然以 v2 模式运行。作为一个参考点,一个 Red Hat Quay v3 升级需要 4 天时间来处理跨六个机器的约 3,000 万个标签。
- 完成的完整功能:在访问与 Docker 版本 2 相关的功能 之前,模式 2 更改(如对不同架构容器的支持)必须完成。当您切换时,其它 v3 功能可以立即使用。
-
升级完整 :升级完成后,您需要在 Red Hat Quay
config.yaml文件中设置 V3_UPGRADE_MODE: 完成,以便新功能可用。所有新的 Red Hat Quay v3 安装都会自动设置。
3.17.2. 先决条件
为确保最佳结果,我们推荐以下先决条件:
- 在开始升级前备份 Red Hat Quay 数据库(执行常规备份是常规最佳实践)。在进入 Red Hat Quay 集群以进行升级后,最好这样做。
- 备份存储(也是常规最佳实践)。
在开始 v3 升级前,将当前的 Red Hat Quay 2.y.z 设置升级到最新的 2.9.z 版本(当前为 2.9.5))。要做到这一点:
-
虽然 Red Hat Quay 集群仍在运行,但需要一个节点,并将该系统上的
Quay容器改为运行最新 2.9.z 版本的Quay容器。 - 等待所有数据库迁移运行,将数据库启动到最新的 2.9.z 版本。这应该需要几分钟才能一小时。
-
完成后,将所有现有节点上的
Quay容器替换为同一最新的 2.9.z 版本。使用新版本上的整个 Red Hat Quay 集群,您可以继续 v3 升级。
-
虽然 Red Hat Quay 集群仍在运行,但需要一个节点,并将该系统上的
3.17.3. 选择升级类型
在同步升级间(在停机内完成升级)和后台升级(在 Red Hat Quay 仍在运行时完成升级)。这两个主版本升级都需要 Red Hat Quay 集群至少停机。
无论您选择什么升级类型,在 Red Hat Quay 集群停机期间,如果使用 builder 和 Clair 镜像,您还需要升级到这些新镜像:
- Builder: quay.io/redhat/quay-builder:v3.0.5
- Clair: quay.io/redhat/clair-jwt:v3.0.5
这两个镜像都可从 registry.redhat.io/quay 存储库中获得。
3.17.4. 运行同步升级
要运行同步升级,在整个升级的情况下关闭整个集群,请执行以下操作:
- 关闭整个 Red Hat Quay 集群,包括任何 quay-builder 和 Clair 容器。
在所有节点上的
config.yaml文件中添加以下设置:V3_UPGRADE_MODE: complete
在单一节点上拉取并启动 v3 容器,并等待执行升级所需的时间(需要几分钟)。使用以下容器或更新版本:
quay : quay.io/redhat/quay:v3.0.5
请注意,
Quay容器在 Red Hat Quay 3 的端口 8080 和 8443 上包括,而不是 80 和 443,因为它们用于 Red Hat Quay 2。因此,我们建议分别将 8080 和 8443 重新映射到 80 和 443,如下例所示:
# docker run --restart=always -p 80:8080 -p 443:8443 \ --sysctl net.core.somaxconn=4096 \ --privileged=true \ -v /mnt/quay/config:/conf/stack:Z \ -v /mnt/quay/storage:/datastorage:Z \ -d quay.io/redhat/quay:v3.0.5
- 升级完成后,在所有其他节点上启动 Red Hat Quay 3 容器。
- 启动 quay-builder 和 Clair 的 3.0.z 版本,以替换您要返回到集群的容器的任何实例。
- 验证 Red Hat Quay 正常工作,包括推送和拉取与 Docker 版本 2, schema 2 兼容的容器。这包括不同计算机架构(arm、ppc 等)的窗口容器镜像和镜像。
3.17.5. 运行后台升级
要运行后台升级,您需要在两个短时间内关闭集群。当您在第一次停机后集群备份时,quay v3 容器以 v2 兼容性模式运行,因为它会回填数据库。完成此后台进程可能需要几小时甚至天数。对于停机的时间超过几小时的大型安装,建议使用后台升级。
对于这种升级,您可以将 Red Hat Quay 置于兼容性模式,在其中运行 Quay 3 容器,但在升级完成后在旧数据模型上运行。以下是您做什么:
将 Red Hat Quay 3 容器拉取到所有节点。使用以下容器或更新版本:
quay.io/redhat/quay:v3.0.5
- 关闭整个 Red Hat Quay 集群,包括任何 quay-builder 和 Clair 容器。
编辑每个节点上的
config.yaml文件,并将升级模式设置为背景,如下所示:V3_UPGRADE_MODE: background
在单一节点上启动 Red Hat Quay 3 容器并等待迁移完成(最多需要几分钟)。以下是该命令的示例:
请注意,
Quay容器在 Red Hat Quay 3 的端口 8080 和 8443 上包括,而不是 80 和 443,因为它们用于 Red Hat Quay 2。因此,我们建议分别将 8080 和 8443 重新映射到 80 和 443,如下例所示:# docker run --restart=always -p 80:8080 -p 443:8443 \ --sysctl net.core.somaxconn=4096 \ --privileged=true \ -v /mnt/quay/config:/conf/stack:Z \ -v /mnt/quay/storage:/datastorage:Z \ -d quay.io/redhat/quay:v3.0.5
- 在所有其他节点上启动 Red Hat Quay 3 容器。
-
监控
/upgradeprogressAPI 端点,直到报告足以移至下一步(状态达到 95%)。例如,查看https://myquay.example.com/upgradeprogress或使用其他工具查询 API。 - 后台进程完成后,您必须计划另一个维护窗口。
- 在调度的维护过程中,关闭整个 Red Hat Quay 集群。
编辑每个节点上的
config.yaml文件,并将升级模式设置为完成,如下所示:V3_UPGRADE_MODE: complete
- 在一个节点上重新启动 Red Hat Quay,使其进行最终检查。
- 完成最后的检查后,在所有其他节点上启动 Red Hat Quay v3。
- 启动 quay-builder 和 Clair 的 3.0.z 版本,以替换您要返回到集群的容器的任何实例。
- 验证 Quay 正常工作,包括推送和拉取与 Docker 版本 2, schema 2 兼容的容器。这包括不同计算机架构(arm、ppc 等)的窗口容器镜像和镜像。
3.17.6. 目标镜像
- quay: quay.io/redhat/quay:v3.0.5
- Clair: quay.io/redhat/clair-jwt:v3.0.5
- redis : registry.access.redhat.com/RHSCL/redis-32-rhel7
- postgresql: RHSCL/postgresql-96-rhel7
- builder : quay.io/redhat/quay-builder:v3.0.5