断开连接的安装镜像
同步 (mirror) 安装容器镜像
摘要
第 1 章 关于断开连接的安装镜像 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用镜像 registry 来确保集群只使用满足您机构对外部内容控制的容器镜像。
1.1. 用于在断开连接的环境中安装集群的镜像 registry 复制链接链接已复制到粘贴板!
您必须将所需的容器镜像镜像(mirror)到断开连接的环境中,然后才能安装并置备集群。要镜像这些容器镜像,您必须有一个镜像 registry。考虑以下用于创建和使用镜像 registry 的选项:
- 如果您已有容器镜像 registry,如 Red Hat Quay,您可以使用它作为您的镜像 registry。如果您还没有 registry,您必须创建一个。
-
建立 registry 后,您需要镜像工具。要在断开连接的环境中将 OpenShift Container Platform 镜像存储库镜像到镜像 registry,您可以使用 oc-mirror OpenShift CLI (
oc
)插件。oc-mirror 插件是一个单一工具,它会将所有所需的 OpenShift Container Platform 内容和其他镜像(mirror)镜像到您的镜像 registry。oc-mirror 插件是镜像的首选方法。 -
另外,您可以使用
oc adm
命令 mirror OpenShift Container Platform 的发行版本和目录镜像。
mirror registry for Red Hat OpenShift 是一个小型灵活的容器 registry,作为目标,用于为断开连接的安装镜像(mirror)的 OpenShift Container Platform 所需的容器镜像。
如果您已有容器镜像 registry(如 Red Hat Quay),您可以跳过本节并直接 镜像 OpenShift Container Platform 镜像存储库。
mirror registry for Red Hat OpenShift 旨在替代 Red Hat Quay 的生产环境部署。
2.1. 先决条件 复制链接链接已复制到粘贴板!
- OpenShift Container Platform 订阅。
- 安装了 Podman 3.4.2 或更高版本以及 OpenSSL 的 Red Hat Enterprise Linux (RHEL) 8 和 9。
- Red Hat Quay 服务的完全限定域名,它必须通过 DNS 服务器解析。
- 目标主机上的基于密钥的 SSH 连接。为本地安装自动生成 SSH 密钥。对于远程主机,您必须生成自己的 SSH 密钥。
- 2 个或更多 vCPU。
- 8 GB RAM。
OpenShift Container Platform 4.16 发行镜像大约需要 12 GB;OpenShift Container Platform 4.16 发行镜像和 OpenShift Container Platform 4.16 Red Hat Operator 镜像大约需要 358 GB。
重要- 每个流推荐具有 1 TB 或更多空间。
- 这些要求基于本地测试结果,且只测试了发行镜像和 Operator 镜像。存储要求可能会因您的组织的需求而有所不同。例如,当镜像了多个 z-streams 时,则可能需要更多空间。您可以使用标准 Red Hat Quay 功能 或适当的 API 调用来 删除不必要的镜像并释放空间。
2.2. Red Hat OpenShift 简介的镜像(mirror)registry 复制链接链接已复制到粘贴板!
对于断开连接的 OpenShift Container Platform 部署,需要一个容器 registry 来安装集群。要在这样的集群中运行 production-grade registry 服务,您必须创建一个单独的 registry 部署来安装第一个集群。mirror registry for Red Hat OpenShift 可以解决这个问题,并包含在每个 OpenShift 订阅中。它可用于从 OpenShift 控制台 Downloads页面下载。
mirror registry for Red Hat OpenShift 允许用户使用 mirror-registry
命令行界面(CLI)工具安装一个小型的 Red Hat Quay 版本及其所需的组件。mirror registry for Red Hat OpenShift 会自动部署,带有预先配置的本地存储和本地数据库。它还包括自动生成的用户凭证和访问权限,其中只有一个输入集,且不需要额外配置选项。
mirror registry for Red Hat OpenShift 提供了一个预先确定的网络配置,并在成功时报告部署的组件凭证并访问 URL。另外还提供了一组有限的可选配置输入,如完全限定域名(FQDN)服务、超级用户名称和密码,以及自定义 TLS 证书。这为用户提供了一个容器 registry,以便在受限网络环境中运行 OpenShift Container Platform 时,轻松创建所有 OpenShift Container Platform 发行版本内容的离线镜像。
如果在安装环境中已有另一个容器 registry,则使用 mirror registry for Red Hat OpenShift 是可选的。
2.2.1. Mirror registry for Red Hat OpenShift 限制 复制链接链接已复制到粘贴板!
以下限制适用于 Red Hat OpenShift 的镜像 registry :
- mirror registry for Red Hat OpenShift 不是一个高度可用的 registry,只支持本地文件系统存储。它并不适用于 OpenShift Container Platform 替换 Red Hat Quay 或内部镜像 registry。
- mirror registry for Red Hat OpenShift 旨在替代 Red Hat Quay 的生产环境部署。
mirror registry for Red Hat OpenShift 只支持托管安装断开连接的 OpenShift Container Platform 集群(如发行镜像或 Red Hat Operator 镜像)所需的镜像。它使用 Red Hat Enterprise Linux (RHEL)机器上的本地存储,RHEL 支持的存储则由 mirror registry for Red Hat OpenShift 支持。
注意因为 mirror registry for Red Hat OpenShift 使用本地存储,所以您应该了解镜像镜像时消耗的存储使用量,并使用 Red Hat Quay 的垃圾回收功能来缓解潜在的问题。有关此功能的更多信息,请参阅"Red Hat Quay 垃圾回收"。
- 对于推送到 Red Hat OpenShift for bootstrap 目的的红帽产品镜像 的支持,每个相应的产品订阅会涵盖有效的订阅。进一步启用 bootstrap 体验的例外列表可在 自助管理的 Red Hat OpenShift 大小和订阅指南 中找到。
- 客户构建的内容不应由 mirror registry for Red Hat OpenShift 托管。
- 不建议将 mirror registry for Red Hat OpenShift 与多个集群一起使用,因为多个集群可以在更新集群时创建单点故障。反之,使用 mirror registry for Red Hat OpenShift 安装一个集群,该集群可以托管一个生产环境级别的、高度可用的 registry,如 Red Hat Quay,可将 OpenShift Container Platform 内容提供给其他集群。
2.3. 使用 Red Hat OpenShift 的镜像 registry 在本地主机上镜像(mirror) 复制链接链接已复制到粘贴板!
此流程解释了如何使用 mirror-registry
安装程序工具在本地主机上安装 mirror registry for Red Hat OpenShift。这样,用户可以创建在端口 443 上运行的本地主机 registry,以存储 OpenShift Container Platform 镜像的镜像。
使用 mirror-registry
CLI 工具安装 mirror registry for Red Hat OpenShift 对机器进行了几个更改。安装后,会创建一个 $HOME/quay-install
目录,其中包含安装文件、本地存储和配置捆绑包。如果部署目标是本地主机,则生成可信 SSH 密钥,并且设置主机计算机上的 systemd 文件,以确保容器运行时持久。另外,会创建一个名为 init
的初始用户,并自动生成的密码。所有访问凭证都会在安装例程的末尾打印。
流程
-
在 OpenShift 控制台 Downloads 页面中下载最新版本的 mirror registry for Red Hat OpenShift 的
mirror-registry.tar.gz
软件包。 使用
mirror-registry
工具,在本地主机上安装 mirror registry for Red Hat OpenShift。有关可用标志的完整列表,请参阅 "mirror registry for Red Hat OpenShift flags"。./mirror-registry install \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
$ ./mirror-registry install \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用安装期间生成的用户名和密码登录 registry:
podman login -u init \ -p <password> \ <host_example_com>:8443> \ --tls-verify=false
$ podman login -u init \ -p <password> \ <host_example_com>:8443> \ --tls-verify=false
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您可以通过将您的系统配置为信任生成的 rootCA 证书来避免运行
--tls-verify=false
。如需更多信息,请参阅"保护 Red Hat Quay"和"将系统配置为信任证书颁发机构"。
注意您还可以在安装后通过
https://<host.example.com>:8443
访问 UI 登录。您可以在登录后镜像 OpenShift Container Platform 镜像。根据您的需要,请参阅本文档的"镜像 OpenShift Container Platform 镜像存储库"或"镜像 Operator 目录"部分以用于此文档。
注意如果因为存储层问题导致 Red Hat OpenShift 镜像存储了镜像 registry 存在问题,您可以在更稳定的存储上重新镜像 OpenShift Container Platform 镜像或重新安装 registry。
2.4. 从一个本地主机为 Red Hat OpenShift 更新 mirror registry 复制链接链接已复制到粘贴板!
此流程解释了如何使用 upgrade
命令从本地主机更新 mirror registry for Red Hat OpenShift。更新至最新版本可确保新的功能、错误修复和安全漏洞修复。
当从版本 1 升级到版本 2 时,请注意以下限制:
-
worker 数量被设置为
1
,因为 SQLite 中不允许多个写入。 - 您不能使用 mirror registry for Red Hat OpenShift 用户接口 (UP)。
-
不要在升级过程中访问
sqlite-storage
Podman 卷。 - 镜像 registry 会出现间歇性停机时间,因为它会在升级过程中重启。
-
PostgreSQL 数据在
/$HOME/quay-install/quay-postgres-backup/
目录下备份,以进行恢复。
先决条件
- 您已在本地主机上安装了 Red Hat OpenShift 的镜像 registry。
流程
如果您要将 mirror registry for Red Hat OpenShift 从 1.3 → 2.y 升级,且您的安装目录默认为
/etc/quay-install
,您可以输入以下命令:sudo ./mirror-registry upgrade -v
$ sudo ./mirror-registry upgrade -v
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
Mirror registry for Red Hat OpenShift 将 Red Hat Quay 存储、Postgres 数据和
/etc/quay-install
数据的 Podman 卷迁移到新的$HOME/quay-install
位置。这可让您在以后的升级过程中使用没有-quayRoot
标记的 mirror registry for Red Hat OpenShift。 -
使用
./mirror-registry upgrade -v
标志升级 mirror registry for Red Hat OpenShift 时需要包括在创建 mirror registry 时使用的相同凭证。例如,如果您安装了带有-quayHostname <host_example_com> 和
的镜像 registry,则必须包含该字符串才能正确升级镜像 registry。--quayRoot <example_directory_name>
的 Red Hat OpenShift
-
Mirror registry for Red Hat OpenShift 将 Red Hat Quay 存储、Postgres 数据和
如果您要将 mirror registry for Red Hat OpenShift 从 1.3 升级到 2.y,且您在 1.y 部署中使用自定义 quay 配置和存储目录,则必须传递--
quayRoot
和-quayStorage
标志。例如:sudo ./mirror-registry upgrade --quayHostname <host_example_com> --quayRoot <example_directory_name> --quayStorage <example_directory_name>/quay-storage -v
$ sudo ./mirror-registry upgrade --quayHostname <host_example_com> --quayRoot <example_directory_name> --quayStorage <example_directory_name>/quay-storage -v
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您要从 1.3 → 2.y 升级 mirror registry for Red Hat OpenShift,并希望指定自定义 SQLite 存储路径,您必须传递--
sqliteStorage
标志,例如:sudo ./mirror-registry upgrade --sqliteStorage <example_directory_name>/sqlite-storage -v
$ sudo ./mirror-registry upgrade --sqliteStorage <example_directory_name>/sqlite-storage -v
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,确保 mirror registry for Red Hat OpenShift 已更新:
podman ps
$ podman ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
registry.redhat.io/quay/quay-rhel8:v3.12.10
registry.redhat.io/quay/quay-rhel8:v3.12.10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 使用 Red Hat OpenShift 的镜像 registry 在远程主机上镜像(mirror) 复制链接链接已复制到粘贴板!
此流程解释了如何使用 mirror-registry
工具在远程主机上安装 mirror registry for Red Hat OpenShift。这样,用户可以创建 registry 来保存 OpenShift Container Platform 镜像的镜像。
使用 mirror-registry
CLI 工具安装 mirror registry for Red Hat OpenShift 对机器进行了几个更改。安装后,会创建一个 $HOME/quay-install
目录,其中包含安装文件、本地存储和配置捆绑包。如果部署目标是本地主机,则生成可信 SSH 密钥,并且设置主机计算机上的 systemd 文件,以确保容器运行时持久。另外,会创建一个名为 init
的初始用户,并自动生成的密码。所有访问凭证都会在安装例程的末尾打印。
流程
-
在 OpenShift 控制台 Downloads 页面中下载最新版本的 mirror registry for Red Hat OpenShift 的
mirror-registry.tar.gz
软件包。 使用
mirror-registry
工具,在本地主机上安装 mirror registry for Red Hat OpenShift。有关可用标志的完整列表,请参阅 "mirror registry for Red Hat OpenShift flags"。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用安装期间生成的用户名和密码登录 到镜像的 registry:
podman login -u init \ -p <password> \ <host_example_com>:8443> \ --tls-verify=false
$ podman login -u init \ -p <password> \ <host_example_com>:8443> \ --tls-verify=false
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您可以通过将您的系统配置为信任生成的 rootCA 证书来避免运行
--tls-verify=false
。如需更多信息,请参阅"使用 SSL 保护到 Red Hat Quay 的连接"和"将系统配置为信任证书颁发机构"。
注意您还可以在安装后通过
https://<host.example.com>:8443
访问 UI 登录。您可以在登录后镜像 OpenShift Container Platform 镜像。根据您的需要,请参阅本文档的"镜像 OpenShift Container Platform 镜像存储库"或"镜像 Operator 目录"部分以用于此文档。
注意如果因为存储层问题导致 Red Hat OpenShift 镜像存储了镜像 registry 存在问题,您可以在更稳定的存储上重新镜像 OpenShift Container Platform 镜像或重新安装 registry。
2.6. 从一个远程主机为 Red Hat OpenShift 更新 mirror registry 复制链接链接已复制到粘贴板!
此流程解释了如何使用 upgrade
命令从远程主机更新 Red Hat OpenShift 的镜像 registry。更新至最新版本可确保程序错误修复和安全漏洞。
当从版本 1 升级到版本 2 时,请注意以下限制:
-
worker 数量被设置为
1
,因为 SQLite 中不允许多个写入。 - 您不能使用 mirror registry for Red Hat OpenShift 用户接口 (UP)。
-
不要在升级过程中访问
sqlite-storage
Podman 卷。 - 镜像 registry 会出现间歇性停机时间,因为它会在升级过程中重启。
-
PostgreSQL 数据在
/$HOME/quay-install/quay-postgres-backup/
目录下备份,以进行恢复。
先决条件
- 您已在远程主机上安装了 mirror registry for Red Hat OpenShift。
流程
要从远程主机升级 Red Hat OpenShift 的镜像 registry,请输入以下命令:
./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key
$ ./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用
./mirror-registry upgrade -v
标志升级 mirror registry for Red Hat OpenShift 时需要包括在创建 mirror registry 时使用的相同凭证。例如,如果您安装了带有-quayHostname <host_example_com> 和
的镜像 registry,则必须包含该字符串才能正确升级镜像 registry。--quayRoot <example_directory_name>
的 Red Hat OpenShift如果您要从 1.3 → 2.y 升级 mirror registry for Red Hat OpenShift,并希望指定自定义 SQLite 存储路径,您必须传递--
sqliteStorage
标志,例如:./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key --sqliteStorage <example_directory_name>/quay-storage
$ ./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key --sqliteStorage <example_directory_name>/quay-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,确保 mirror registry for Red Hat OpenShift 已更新:
podman ps
$ podman ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
registry.redhat.io/quay/quay-rhel8:v3.12.10
registry.redhat.io/quay/quay-rhel8:v3.12.10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. 替换 mirror registry for Red Hat OpenShift SSL/TLS 证书 复制链接链接已复制到粘贴板!
在某些情况下,您可能想要为 mirror registry for Red Hat OpenShift 更新 SSL/TLS 证书。这在以下情况中很有用:
- 如果您要替换 Red Hat OpenShift 证书的当前镜像 registry。
- 如果您使用与之前 mirror registry for Red Hat OpenShift 安装相同的证书。
- 如果您要定期 为 Red Hat OpenShift 证书更新镜像 registry。
使用以下步骤为 Red Hat OpenShift SSL/TLS 证书替换 mirror registry。
先决条件
-
您已从 OpenShift 控制台 Downloads 页面下载并安装
./mirror-registry
二进制文件。
流程
输入以下命令为 Red Hat OpenShift 安装镜像 registry :
./mirror-registry install \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
$ ./mirror-registry install \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将 mirror registry for Red Hat OpenShift 安装到
$HOME/quay-install
目录中。-
准备一个新的证书颁发机构(CA)捆绑包,并生成新的
ssl.key
和ssl.crt
密钥文件。如需更多信息,请参阅为 Red Hat Quay 配置 SSL 和 TLS。 输入以下命令为
/$HOME/quay-install
分配一个环境变量,如QUAY
:export QUAY=/$HOME/quay-install
$ export QUAY=/$HOME/quay-install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令将新的
ssl.crt
文件复制到/$HOME/quay-install
目录中:cp ~/ssl.crt $QUAY/quay-config
$ cp ~/ssl.crt $QUAY/quay-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令将新的
ssl.key
文件复制到/$HOME/quay-install
目录中:cp ~/ssl.key $QUAY/quay-config
$ cp ~/ssl.key $QUAY/quay-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令重启
quay-app
应用程序 pod:systemctl --user restart quay-app
$ systemctl --user restart quay-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8. 为 Red Hat OpenShift 卸载镜像 registry 复制链接链接已复制到粘贴板!
使用以下步骤从本地主机卸载 Red Hat OpenShift 的镜像 registry。
先决条件
- 您已在本地主机上安装了 mirror registry for Red Hat OpenShift。
流程
运行以下命令,从本地主机中卸载 mirror registry for Red Hat OpenShift :
./mirror-registry uninstall -v \ --quayRoot <example_directory_name>
$ ./mirror-registry uninstall -v \ --quayRoot <example_directory_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
删除 mirror registry for Red Hat OpenShift 会在删除前提示用户。您可以使用
--autoApprove
来跳过此提示。 -
使用--
quayRoot
标志安装 mirror registry for Red Hat OpenShift 的用户必须在卸载时包括the-quayRoot
标志。例如,如果您安装了带有-quayRoot example_directory_name
的 Red Hat OpenShift 的镜像 registry,则必须包含该字符串才能正确卸载镜像 registry。
-
删除 mirror registry for Red Hat OpenShift 会在删除前提示用户。您可以使用
2.9. Mirror registry for Red Hat OpenShift 标记 复制链接链接已复制到粘贴板!
以下 标记可用于 Red Hat OpenShift 的镜像 registry :
标记 | 描述 |
---|---|
|
禁用交互式提示的布尔值。如果设置为 |
| 在 Quay 安装过程中创建的 init 用户的密码。必须至少包含八个字符,且不包含空格。 |
|
显示初始用户的用户名。若未指定,则默认为 |
| 允许用户禁用颜色序列,在运行安装、卸载和升级命令时将其传播到 Ansible。 |
|
客户端用来联系 registry 的镜像 registry 的完全限定域名。等同于 Quay |
|
保存 Quay 持久性存储数据的文件夹。默认为 |
|
保存容器镜像层和配置数据的目录,包括 |
|
保存 SQLite 数据库数据的文件夹。如果没有指定,则默认为 |
|
SSH 身份密钥的路径。如果未指定,则默认为 |
|
SSL/TLS 公钥/证书的路径。默认为 |
|
跳过对 |
|
用于 HTTPS 通信的 SSL/TLS 私钥路径。默认为 |
|
要安装 Quay 的目标的主机名。默认为 |
|
目标主机上的用户,将用于 SSH。默认为 |
| 显示调试日志和 Ansible Playbook 输出。 |
| 显示 mirror registry for Red Hat OpenShift 的版本。 |
-
如果您的系统的公共 DNS 名称与本地主机名不同,则必须修改
--quayHostname
。另外,--quayHostname
标志不支持使用 IP 地址的安装。需要使用主机名进行安装。 -
当镜像 registry 在代理后面设置时,会使用
--sslCheckSkip
,并且公开的主机名与内部 Quay 主机名不同。当用户不希望在安装过程中对提供的 Quay 主机名验证证书时,也可以使用它。
2.10. Mirror registry for Red Hat OpenShift 发行注记 复制链接链接已复制到粘贴板!
mirror registry for Red Hat OpenShift 是一个小型灵活的容器 registry,作为目标,用于为断开连接的安装镜像(mirror)的 OpenShift Container Platform 所需的容器镜像。
本发行注记介绍了 OpenShift Container Platform 的 mirror registry for Red Hat OpenShift。
2.10.1. Mirror registry for Red Hat OpenShift 2.0 发行注记 复制链接链接已复制到粘贴板!
以下小节详细介绍了 mirror registry for Red Hat OpenShift 的每个 2.0 发行版本。
2.10.1.1. Mirror registry for Red Hat OpenShift 2.0.7 复制链接链接已复制到粘贴板!
发布日期: 2025 年 7 月 14 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.10 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.2. Mirror registry for Red Hat OpenShift 2.0.6 复制链接链接已复制到粘贴板!
发布日期:2025 年 4 月 28 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.8 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.3. Mirror registry for Red Hat OpenShift 2.0.5 复制链接链接已复制到粘贴板!
发布日期:2025 年 1 月 13 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.5 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.4. Mirror registry for Red Hat OpenShift 2.0.4 复制链接链接已复制到粘贴板!
发布日期: 2025 年 1 月 6 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.4 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.5. Mirror registry for Red Hat OpenShift 2.0.3 复制链接链接已复制到粘贴板!
发布日期: 2024 年 11 月 25 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.3 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.6. Mirror registry for Red Hat OpenShift 2.0.2 复制链接链接已复制到粘贴板!
发布日期:2024 年 10 月 31 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.2 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.7. Mirror registry for Red Hat OpenShift 2.0.1 复制链接链接已复制到粘贴板!
发布日期:2024 年 9 月 26 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.1 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
2.10.1.8. Mirror registry for Red Hat OpenShift 2.0.0 复制链接链接已复制到粘贴板!
发布日期: 2024 年 9 月 3 日
Mirror registry for Red Hat OpenShift 现在包括在 Red Hat Quay 3.12.0 中。
以下公告适用于 mirror registry for Red Hat OpenShift:
以下新功能包括在 mirror registry for Red Hat OpenShift 2.0.0 中:
随着 mirror registry for Red Hat OpenShift 的发布,内部数据库已从 PostgreSQL 升级到 SQLite。因此,数据现在默认存储在
sqlite-storage
Podman 卷中,整个 tarball 大小会减少 300 MB。新的安装默认使用 SQLite。在升级到 2.0 之前,请参阅"根据您的环境,"从本地主机更新 mirror registry for Red Hat OpenShift"或"从远程主机更新 mirror registry for Red Hat OpenShift"。
-
添加了新功能标志
--sqliteStorage
。使用这个标志,您可以手动设置保存 SQLite 数据库数据的位置。 -
Mirror registry for Red Hat OpenShift 现在可用于 IBM Power 和 IBM Z 架构(
s390x
和ppc64le
) 。
2.10.2. Mirror registry for Red Hat OpenShift 1.3 发行注记 复制链接链接已复制到粘贴板!
要查看 mirror registry for Red Hat OpenShift 1.3 发行注记,请参阅 Mirror registry for Red Hat OpenShift 1.3 发行注记。
2.10.3. Mirror registry for Red Hat OpenShift 1.2 发行注记 复制链接链接已复制到粘贴板!
要查看 mirror registry for Red Hat OpenShift 1.2 发行注记,请参阅 Mirror registry for Red Hat OpenShift 1.2 发行注记。
2.10.4. Mirror registry for Red Hat OpenShift 1.1 发行注记 复制链接链接已复制到粘贴板!
要查看 mirror registry for Red Hat OpenShift 1.1 发行注记,请参阅 Mirror registry for Red Hat OpenShift 1.1 发行注记。
2.11. Mirror registry for Red Hat OpenShift 故障排除 复制链接链接已复制到粘贴板!
为了帮助对 mirror registry for Red Hat OpenShift 进行故障排除,您可以收集由镜像 registry 安装的 systemd 服务的日志。安装以下服务:
- quay-app.service
- quay-postgres.service
- quay-redis.service
- quay-pod.service
先决条件
- 您已安装了 mirror registry for Red Hat OpenShift。
流程
如果使用 root 权限安装 mirror registry for Red Hat OpenShift,您可以输入以下命令获取其 systemd 服务的状态信息:
sudo systemctl status <service>
$ sudo systemctl status <service>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果作为标准用户安装 mirror registry for Red Hat OpenShift,您可以输入以下命令获取其 systemd 服务的状态信息:
systemctl --user status <service>
$ systemctl --user status <service>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.12. 其他资源 复制链接链接已复制到粘贴板!
第 3 章 为断开连接的安装 mirror 镜像 复制链接链接已复制到粘贴板!
您可以确保集群只使用满足您机构对外部内容控制的容器镜像。在受限网络中置备的基础架构上安装集群前,您必须将所需的容器镜像镜像(mirror)到那个环境中。要镜像容器镜像,您必须有一个 registry 才能进行镜像(mirror)。
您必须可以访问互联网来获取所需的容器镜像。在这一流程中,您要将镜像 registry 放在可访问您的网络以及互联网的镜像(mirror)主机上。如果您没有镜像主机的访问权限,请使用镜像 Operator 目录与断开连接的集群流程一起使用,将镜像复制到可跨网络界限的设备。
3.1. 先决条件 复制链接链接已复制到粘贴板!
您必须在托管 OpenShift Container Platform 集群的位置(如以下 registry 之一)中有一个支持 Docker v2-2 的容器镜像 registry:
如果您有 Red Hat Quay 权利,请参阅有关部署 Red Hat Quay for 概念验证 的文档,或使用 Red Hat Quay Operator。如果您需要额外的帮助来选择并安装 registry,请联络您的销售代表或红帽支持。
- 如果您还没有容器镜像 registry,OpenShift Container Platform 可以为订阅者提供一个 mirror registry for Red Hat OpenShift。您的订阅中包含 mirror registry for Red Hat OpenShift,它是一个小型容器 registry,可用于在断开连接的安装中镜像 OpenShift Container Platform 所需的容器镜像。
3.2. 关于镜像 registry 复制链接链接已复制到粘贴板!
您可以镜像 OpenShift Container Platform 安装和后续容器镜像 registry 所需的镜像,如 Red Hat Quay、JFrog Artifactory、Ssonatype Nexus Repository 或 Harbor。如果您无法访问大型容器 registry,可以使用 mirror registry for Red Hat OpenShift,它是一个包括在 OpenShift Container Platform 订阅中的小型容器 registry。
您可以使用支持 Docker v2-2 的任何容器 registry,如 Red Hat Quay、mirror registry for Red Hat OpenShift、Artifactory、Sonatype Nexus Repository 或 Harbor。无论您所选 registry 是什么,都会将互联网上红帽托管站点的内容镜像到隔离的镜像 registry 相同。镜像内容后,您要将每个集群配置为从镜像 registry 中检索此内容。
OpenShift 镜像 registry 不能用作目标 registry,因为它不支持没有标签的推送,在镜像过程中需要这个推送。
如果选择不是 mirror registry for Red Hat OpenShift 的容器 registry,您必须可以被您置备的集群中的每个机器访问。如果 registry 无法访问,安装、更新或常规操作(如工作负载重新定位)可能会失败。因此,您必须以高度可用的方式运行镜像 registry,镜像 registry 至少必须与 OpenShift Container Platform 集群的生产环境可用性相匹配。
使用 OpenShift Container Platform 镜像填充镜像 registry 时,可以遵循以下两种情况。如果您的主机可以同时访问互联网和您的镜像 registry,而不能访问您的集群节点,您可以直接从该机器中镜像该内容。这个过程被称为 连接的镜像(mirror)。如果没有这样的主机,则必须将该镜像文件镜像到文件系统中,然后将该主机或者可移动介质放入受限环境中。这个过程被称为 断开连接的镜像。
对于已镜像的 registry,若要查看拉取镜像的来源,您必须查看 Trying 以访问
CRI-O 日志中的日志条目。查看镜像拉取源的其他方法(如在节点上使用 crictl images
命令)显示非镜像镜像名称,即使镜像是从镜像位置拉取的。
红帽没有针对 OpenShift Container Platform 测试第三方 registry。
附加信息
有关查看 CRI-O 日志以查看镜像源的详情,请参阅查看镜像拉取源。
3.3. 准备您的镜像主机 复制链接链接已复制到粘贴板!
执行镜像步骤前,必须准备主机以检索内容并将其推送到远程位置。
3.3.1. 安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则可能无法使用 OpenShift Container Platform 4.16 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.16 Linux Clients 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:echo $PATH
$ echo $PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc
命令:oc <command>
$ oc <command>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.16 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:path
C:\> path
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc
命令:oc <command>
C:\> oc <command>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.16 macOS Clients 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.16 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:echo $PATH
$ echo $PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用
oc
命令验证安装:oc <command>
$ oc <command>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 配置允许对容器镜像进行镜像的凭证 复制链接链接已复制到粘贴板!
创建容器镜像 registry 凭证文件,可让您将镜像从红帽 mirror 到您的镜像。
安装集群时不要使用此镜像 registry 凭据文件作为 pull secret。如果在安装集群时提供此文件,集群中的所有机器都将具有镜像 registry 的写入权限。
此过程需要您可以对镜像 registry 上的容器镜像 registry 进行写操作,并将凭证添加到 registry pull secret。
先决条件
- 您已将镜像 registry 配置为在断开连接的环境中使用。
- 您在镜像 registry 中标识了镜像仓库的位置,以将容器镜像镜像(mirror)到这个位置。
- 您置备了一个镜像 registry 帐户,允许将镜像上传到该镜像仓库。
流程
在安装主机上完成以下步骤:
-
从 Red Hat OpenShift Cluster Manager 下载
registry.redhat.io
pull secret。 以 JSON 格式创建您的 pull secret 副本:
cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定到存储 pull secret 的文件夹的路径,以及您创建的 JSON 文件的名称。
该文件类似于以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:
echo -n '<user_name>:<password>' | base64 -w0
$ echo -n '<user_name>:<password>' | base64 -w0
1 BGVtbYk3ZHAtqXs=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 通过
<user_name>
和<password>
指定 registry 的用户名和密码。
编辑 JSON 文件并添加描述 registry 的部分:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该文件类似于以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 镜像 OpenShift Container Platform 镜像存储库 复制链接链接已复制到粘贴板!
镜像要在集群安装或升级过程中使用的 OpenShift Container Platform 镜像仓库。
先决条件
- 您的镜像主机可访问互联网。
- 您已将镜像 registry 配置为在受限网络中使用,并可访问您配置的证书和凭证。
- 您已从 Red Hat OpenShift Cluster Manager 下载了 pull secret,并已修改为包含镜像存储库的身份验证。
- 如果您使用自签名证书,已在证书中指定 Subject Alternative Name。
流程
在镜像主机上完成以下步骤:
- 查看 OpenShift Container Platform 下载页面,以确定您要安装的 OpenShift Container Platform 版本,并决定 Repository Tags 页中的相应标签(tag)。
设置所需的环境变量:
导出发行版本信息:
OCP_RELEASE=<release_version>
$ OCP_RELEASE=<release_version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<release_version>
,请指定与 OpenShift Container Platform 版本对应的标签,用于您的架构,如4.5.4
。导出本地 registry 名称和主机端口:
LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<local_registry_host_name>
,请指定镜像存储库的 registry 域名;对于<local_registry_host_port>
,请指定用于提供内容的端口。导出本地存储库名称:
LOCAL_REPOSITORY='<local_repository_name>'
$ LOCAL_REPOSITORY='<local_repository_name>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<local_repository_name>
,请指定要在 registry 中创建的仓库名称,如ocp4/openshift4
。导出要进行镜像的存储库名称:
PRODUCT_REPO='openshift-release-dev'
$ PRODUCT_REPO='openshift-release-dev'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于生产环境版本,必须指定
openshift-release-dev
。导出 registry pull secret 的路径:
LOCAL_SECRET_JSON='<path_to_pull_secret>'
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<path_to_pull_secret>
,请指定您创建的镜像 registry 的 pull secret 的绝对路径和文件名。导出发行版本镜像:
RELEASE_NAME="ocp-release"
$ RELEASE_NAME="ocp-release"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于生产环境版本,您必须指定
ocp-release
。为您的集群导出构架类型:
ARCHITECTURE=<cluster_architecture>
$ ARCHITECTURE=<cluster_architecture>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定集群的构架,如
x86_64
,aarch64
,s390x
, 获ppc64le
。
导出托管镜像的目录的路径:
REMOVABLE_MEDIA_PATH=<path>
$ REMOVABLE_MEDIA_PATH=<path>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定完整路径,包括开始的前斜杠(/)字符。
将版本镜像(mirror)到镜像 registry:
如果您的镜像主机无法访问互联网,请执行以下操作:
- 将可移动介质连接到连接到互联网的系统。
查看要镜像的镜像和配置清单:
oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
记录上一命令输出中的
imageContentSources
部分。您的镜像信息与您的镜像存储库相对应,您必须在安装过程中将imageContentSources
部分添加到install-config.yaml
文件中。 将镜像镜像到可移动介质的目录中:
oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将介质上传到受限网络环境中,并将镜像上传到本地容器 registry。
oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}
$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
REMOVABLE_MEDIA_PATH
,您必须使用与镜像镜像时指定的同一路径。
重要运行
oc image mirror
可能会导致以下错误:error: unable to retrieve source image
。当镜像索引包括对镜像 registry 中不再存在的镜像的引用时,会发生此错误。镜像索引可能会保留旧的引用,以便为运行这些镜像的用户在升级图表中显示新的升级路径。作为临时解决方案,您可以使用--skip-missing
选项绕过错误并继续下载镜像索引。如需更多信息,请参阅 Service Mesh Operator 镜像失败。
如果本地容器 registry 连接到镜像主机,请执行以下操作:
使用以下命令直接将发行版镜像推送到本地 registry:
oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令将发行信息提取为摘要,其输出包括安装集群时所需的
imageContentSources
数据。记录上一命令输出中的
imageContentSources
部分。您的镜像信息与您的镜像存储库相对应,您必须在安装过程中将imageContentSources
部分添加到install-config.yaml
文件中。注意镜像名称在镜像过程中被修补到 Quay.io, podman 镜像将在 bootstrap 虚拟机的 registry 中显示 Quay.io。
要创建基于您镜像内容的安装程序,请提取内容并将其固定到发行版中:
如果您的镜像主机无法访问互联网,请运行以下命令:
oc adm release extract -a ${LOCAL_SECRET_JSON} --icsp-file=<file> --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}" \ --insecure=true
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --icsp-file=<file> --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}" \ --insecure=true
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:如果您不想为目标 registry 配置信任,请添加
--insecure=true
标志。
如果本地容器 registry 连接到镜像主机,请运行以下命令:
oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要确保将正确的镜像用于您选择的 OpenShift Container Platform 版本,您必须从镜像内容中提取安装程序。
您必须在有活跃互联网连接的机器上执行这个步骤。
对于使用安装程序置备的基础架构的集群,运行以下命令:
openshift-install
$ openshift-install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 在断开连接的环境中的 Cluster Samples Operator 复制链接链接已复制到粘贴板!
在断开连接的环境中,在安装集群后执行额外的步骤来配置 Cluster Samples Operator。在准备过程中查阅以下信息:
3.6.1. 协助镜像的 Cluster Samples Operator 复制链接链接已复制到粘贴板!
在安装过程中,OpenShift Container Platform 在 openshift-cluster-samples-operator
命名空间中创建一个名为 imagestreamtag-to-image
的配置映射。imagestreamtag-to-image
配置映射包含每个镜像流标签的条目(填充镜像)。
配置映射中 data 字段中每个条目的键格式为 <image_stream_name>_<image_stream_tag_name>
。
在断开连接的 OpenShift Container Platform 安装过程中,Cluster Samples Operator 的状态被设置为 Removed
。如果您将其改为 Managed
,它会安装示例。
在网络限制或断开连接的环境中使用示例可能需要通过网络访问服务。某些示例服务包括:Github、Maven Central、npm、RubyGems、PyPi 等。这可能需要执行额外的步骤,让集群 samples operator 对象能够访问它们所需的服务。
您可以使用此配置映射作为导入镜像流所需的镜像的引用。
-
在 Cluster Samples Operator 被设置为
Removed
时,您可以创建镜像的 registry,或决定您要使用哪些现有镜像 registry。 - 使用新的配置映射作为指南来镜像您要镜像的 registry 的示例。
-
将没有镜像的任何镜像流添加到 Cluster Samples Operator 配置对象的
skippedImagestreams
列表中。 -
将 Cluster Samples Operator 配置对象的
samplesRegistry
设置为已镜像的 registry。 -
然后,将 Cluster Samples Operator 设置为
Managed
来安装您已镜像的镜像流。
3.7. 镜像用于断开连接的集群的 Operator 目录 复制链接链接已复制到粘贴板!
您可以使用 oc adm catalog mirror
命令将红帽提供的目录或自定义目录的 Operator 内容镜像到容器镜像 registry 中。目标 registry 必须支持 Docker v2-2。对于受限网络中的集群,此 registry 可以是集群有网络访问权限的 registry,如在受限网络集群安装过程中创建的镜像 registry。
- OpenShift 镜像 registry 不能用作目标 registry,因为它不支持没有标签的推送,在镜像过程中需要这个推送。
-
运行
oc adm catalog mirror
可能会导致以下错误:error: unable to retrieve source image
。当镜像索引包括对镜像 registry 中不再存在的镜像的引用时,会发生此错误。镜像索引可能会保留旧的引用,以便为运行这些镜像的用户在升级图表中显示新的升级路径。作为临时解决方案,您可以使用--skip-missing
选项绕过错误并继续下载镜像索引。如需更多信息,请参阅 Service Mesh Operator 镜像失败。
oc adm catalog mirror
命令还会自动将在镜像过程中指定的索引镜像(无论是红帽提供的索引镜像还是您自己的自定义构建索引镜像)镜像到目标 registry。然后,您可以使用镜像的索引镜像创建一个目录源,允许 Operator Lifecycle Manager(OLM)将镜像目录加载到 OpenShift Container Platform 集群。
3.7.1. 先决条件 复制链接链接已复制到粘贴板!
与断开连接的集群一起使用的 Operator 目录具有以下先决条件:
- 没有网络访问限制的工作站
-
podman
1.9.3 或更高版本。 如果要过滤或 prune 一个现存的目录,且仅选择性地镜像部分 Operator,请参阅以下部分:
如果要镜像红帽提供的目录,请在具有无网络访问限制的工作站中运行以下命令,以便与
registry.redhat.io
进行身份验证:podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 访问支持 Docker v22 的镜像 registry。
-
在镜像 registry 上,决定使用哪个存储库或命名空间来存储已镜像的 Operator 内容。例如,您可以创建一个
olm-mirror
存储库。 - 如果您的镜像 registry 无法访问互联网,请将可移动介质连接到您的没有网络访问限制的工作站。
如果您正在使用私有 registry,包括
registry.redhat.io
,请将REG_CREDS
环境变量设置为 registry 凭证的文件路径,以便在后续步骤中使用。例如,对于podman
CLI:REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.2. 提取和镜像目录内容 复制链接链接已复制到粘贴板!
oc adm catalog mirror
命令提取索引镜像的内容,以生成镜像所需的清单。命令的默认行为会生成清单,然后会自动将索引镜像以及索引镜像本身中的所有镜像内容镜像(mirror)到您的镜像 registry。
另外,如果您的镜像 registry 位于完全断开连接的主机上,或者断开连接的或 airgapped 主机上,您可以首先将内容镜像到可移动介质,将介质移到断开连接的环境中,然后将内容从介质镜像到 registry。
3.7.2.1. 将目录内容镜像到同一网络上的 registry 复制链接链接已复制到粘贴板!
如果您的镜像 registry 与您的没有网络访问限制的工作站位于同一个网络中,请在您的工作站上执行以下操作:
流程
如果您的镜像 registry 需要身份验证,请运行以下命令登录到 registry:
podman login <mirror_registry>
$ podman login <mirror_registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将内容提取并镜像到镜像 registry:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定您要镜像的目录的索引镜像。
- 2
- 指定要将 Operator 内容镜像到的目标 registry 的完全限定域名(FQDN)。镜像 registry
<repository>
可以是 registry 上的任何现有存储库或命名空间,如先决条件中所述,如olm-mirror
。如果在镜像过程中找到现有的存储库,存储库名称将添加到生成的镜像名称中。如果您不希望镜像名称包含存储库名称,请省略此行中的<repository>
值,例如<mirror_registry>:<port>
。 - 3
- 可选:如果需要,指定 registry 凭证文件的位置。
registry.redhat.io
需要{REG_CREDS}
。 - 4
- 可选:如果您不想为目标 registry 配置信任,请添加
--insecure
标志。 - 5
- 可选:在有多个变体可用时,指定索引镜像的平台和架构。镜像被传递为
'<platform>/<arch>[/<variant>]'
。这不适用于索引引用的镜像。有效值为linux/amd64
,linux/ppc64le
,linux/s390x
,linux/arm64
. - 6
- 可选:只生成镜像所需的清单,而不实际将镜像内容镜像到 registry。这个选项对检查哪些将被镜像(mirror)非常有用,如果您只需要一小部分软件包,可以对映射列表进行修改。然后,您可以使用带有
oc image mirror
命令的mapping.txt
文件来在以后的步骤中镜像修改的镜像列表。此标志用于从目录中对内容进行高级选择性镜像。
输出示例
src image has index label for database path: /database/index.db using database path mapping: /database/index.db:/tmp/153048078 wrote database to /tmp/153048078 ... wrote mirroring manifests to manifests-redhat-operator-index-1614211642
src image has index label for database path: /database/index.db using database path mapping: /database/index.db:/tmp/153048078 wrote database to /tmp/153048078
1 ... wrote mirroring manifests to manifests-redhat-operator-index-1614211642
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 命令生成的临时
index.db
数据库的目录。 - 2
- 记录生成的 manifests 目录名称。该目录在后续过程中被引用。注意
Red Hat Quay 不支持嵌套存储库。因此,运行
oc adm catalog mirror
命令会失败,并显示401
未授权错误。作为临时解决方案,您可以在运行oc adm catalog mirror
命令时使用--max-components=2
选项来禁用嵌套存储库的创建。有关此临时解决方案的更多信息,请参阅 Unauthorized error thrown while using catalog mirror command with Quay registry。
3.7.2.2. 将目录内容镜像到 airgapped registry 复制链接链接已复制到粘贴板!
如果您的镜像 registry 位于完全断开连接的主机上,或 airgapped 主机上,请执行以下操作。
流程
在您的工作站中运行以下命令,且没有网络访问权限将内容镜像到本地文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令会在当前目录中创建
v2/
目录中。-
将
v2/
目录复制到可移动介质。 - 物理删除该介质并将其附加到断开连接的环境中可访问镜像 registry 的主机。
如果您的镜像 registry 需要身份验证,请在断开连接的环境中的主机上运行以下命令以登录到 registry:
podman login <mirror_registry>
$ podman login <mirror_registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从包含
v2/
目录的父目录运行以下命令,将镜像从本地文件上传到镜像 registry:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定上一命令输出中的
file://
路径。 - 2
- 指定要将 Operator 内容镜像到的目标 registry 的完全限定域名(FQDN)。镜像 registry
<repository>
可以是 registry 上的任何现有存储库或命名空间,如先决条件中所述,如olm-mirror
。如果在镜像过程中找到现有的存储库,存储库名称将添加到生成的镜像名称中。如果您不希望镜像名称包含存储库名称,请省略此行中的<repository>
值,例如<mirror_registry>:<port>
。 - 3
- 可选:如果需要,指定 registry 凭证文件的位置。
- 4
- 可选:如果您不想为目标 registry 配置信任,请添加
--insecure
标志。 - 5
- 可选:在有多个变体可用时,指定索引镜像的平台和架构。镜像被指定为
'<platform>/<arch>[/<variant>]'
。这不适用于索引引用的镜像。有效值为linux/amd64
,linux/ppc64le
,linux/s390x
,linux/arm64
, 和.*
注意Red Hat Quay 不支持嵌套存储库。因此,运行
oc adm catalog mirror
命令会失败,并显示401
未授权错误。作为临时解决方案,您可以在运行oc adm catalog mirror
命令时使用--max-components=2
选项来禁用嵌套存储库的创建。有关此临时解决方案的更多信息,请参阅 Unauthorized error thrown while using catalog mirror command with Quay registry。再次运行
oc adm catalog mirror
命令。使用新镜像的索引镜像作为源,以及上一步中使用的同一镜像 registry 目标:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此步骤需要
--manifests-only
标志,以便该命令不会再次复制所有镜像的内容。
重要这一步是必需的,因为上一步中生成的
imageContentSourcePolicy.yaml
文件中的镜像映射必须从本地路径更新为有效的镜像位置。如果不这样做,会在稍后的步骤中创建ImageContentSourcePolicy
对象时会导致错误。
在镜像目录后,您可以继续执行集群的其余部分。在集群安装成功完成后,您必须指定此流程中的 manifests 目录来创建 ImageContentSourcePolicy
和 CatalogSource
对象。需要这些对象才能从 OperatorHub 安装 Operator。
3.7.3. 生成的清单 复制链接链接已复制到粘贴板!
将 Operator 目录内容镜像到镜像 registry 后,会在当前目录中生成清单目录。
如果您将内容镜像到同一网络上的 registry,则目录名称采用以下模式:
manifests-<index_image_name>-<random_number>
manifests-<index_image_name>-<random_number>
如果您在上一节中将内容镜像到断开连接的主机上的 registry,则目录名称采用以下模式:
manifests-index/<repository>/<index_image_name>-<random_number>
manifests-index/<repository>/<index_image_name>-<random_number>
清单目录名称在后续过程中被引用。
manifests 目录包含以下文件,其中的一些文件可能需要进一步修改:
catalogSource.yaml
文件是CatalogSource
对象的基本定义,它预先填充索引镜像标签及其他相关元数据。此文件可原样使用,或进行相应修改来在集群中添加目录源。重要如果将内容镜像到本地文件,您必须修改 catalogSource
.yaml
文件,从metadata.name
字段中删除任何反斜杠(/
)字符。否则,当您试图创建对象时,会失败并显示 "invalid resource name” 错误。用来定义
ImageContentSourcePolicy
对象的imageContentSourcePolicy.yaml
,它可以将节点配置为在 Operator 清单中存储的镜像(image)引用和镜像 (mirror) 的 registry 间进行转换。注意如果您的集群使用
ImageContentSourcePolicy
对象来配置存储库镜像,则只能将全局 pull secret 用于镜像 registry。您不能在项目中添加 pull secret。mapping.txt
文件,在其中包含所有源镜像,并将它们映射到目标 registry。此文件与oc image mirror
命令兼容,可用于进一步自定义镜像(mirror)配置。重要如果您在镜像过程中使用
--manifests-only
标志,并希望进一步调整要镜像的软件包子集,请参阅 OpenShift Container Platform 4.7 文档中的镜像软件包清单格式目录镜像流程中有关修改mapping.txt
文件并使用oc image mirror
命令的步骤。
3.7.4. 安装后的要求 复制链接链接已复制到粘贴板!
在镜像目录后,您可以继续执行集群的其余部分。在集群安装成功完成后,您必须指定此流程中的 manifests 目录来创建 ImageContentSourcePolicy
和 CatalogSource
对象。这些对象需要填充和启用从 OperatorHub 安装 Operator。
3.8. 后续步骤 复制链接链接已复制到粘贴板!
- 在您在受限网络中置备的基础架构上安装集群,如 VMware vSphere、裸机或 Amazon Web Services。
第 4 章 使用 oc-mirror 插件为断开连接的安装镜像镜像 复制链接链接已复制到粘贴板!
可以在没有直接的互联网连接的受限网络中运行集群,方法是使用在一个私有 registry 中的 mirror OpenShift Container Platform 容器镜像安装集群。集群运行时必须始终运行此 registry。如需更多信息,请参阅先决条件部分。
您可以使用 oc-mirror OpenShift CLI (oc
)插件在完全或部分断开连接的环境中将镜像镜像到镜像 registry。您必须从具有互联网连接的系统运行 oc-mirror,以便从官方红帽 registry 中下载所需的镜像。
4.1. 关于 oc-mirror 插件 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror OpenShift CLI(oc
)插件,使用单个工具将所有所需的 OpenShift Container Platform 内容和其他镜像(mirror)镜像到您的镜像 registry。它提供以下功能:
- 提供镜像 OpenShift Container Platform 发行版本、Operator、helm chart 和其他镜像的集中方法。
- 维护 OpenShift Container Platform 和 Operator 的更新路径。
- 使用声明的镜像设置配置文件来仅包含集群所需的 OpenShift Container Platform 发行版本、Operator 和镜像。
- 执行增量镜像,从而减少将来镜像集的大小。
- 从上一执行以来,从镜像集配置中排除的目标镜像 registry 中修剪镜像的镜像。
- (可选)为 OpenShift Update Service (OSUS) 使用生成支持工件。
使用 oc-mirror 插件时,您可以在镜像设置配置文件中指定要镜像的内容。在这个 YAML 文件中,您可以将配置微调为仅包含集群需要的 OpenShift Container Platform 发行版本和 Operator。这可减少您下载和传输所需的数据量。oc-mirror 插件也可以镜像任意 helm chart 和附加容器镜像,以帮助用户将其工作负载无缝同步到镜像 registry 中。
第一次运行 oc-mirror 插件时,它会使用所需内容填充您的镜像 registry,以执行断开连接的集群安装或更新。要让断开连接的集群继续接受更新,您必须更新镜像 registry。要更新您的镜像 registry,请使用与第一次运行相同的配置运行 oc-mirror 插件。oc-mirror 插件引用存储后端的元数据,并只下载上次运行该工具后所发布的元数据。这为 OpenShift Container Platform 和 Operator 提供了更新路径,并根据需要执行依赖项解析。
4.1.1. 高级别工作流 复制链接链接已复制到粘贴板!
下列步骤概述了如何使用 oc-mirror 插件将镜像镜像到镜像 registry 的高级别工作流:
- 创建镜像设置配置文件。
使用以下方法之一将镜像设置为目标镜像 registry:
- 将镜像直接设置为目标镜像 registry。
- 镜像集合镜像到磁盘,将镜像设置为目标环境,然后将镜像上传到目标镜像 registry。
- 配置集群以使用 oc-mirror 插件生成的资源。
- 根据需要重复这些步骤以更新目标镜像 registry。
当使用 oc-mirror CLI 插件填充镜像 registry 时,必须使用 oc-mirror 插件对目标镜像 registry 进行进一步的更新。
4.2. oc-mirror 插件兼容性和支持 复制链接链接已复制到粘贴板!
oc-mirror 插件支持为 OpenShift Container Platform 版本 4.12 及之后的版本的镜像 OpenShift Container Platform 有效负载镜像和 Operator 目录。
在 aarch64
, ppc64le
, 和 s390x
架构中,oc-mirror 插件只支持 OpenShift Container Platform 版本 4.14 及更新的版本。
使用 oc-mirror 插件的最新版本,无论您需要镜像的 OpenShift Container Platform 版本是什么。
4.3. 关于镜像 registry 复制链接链接已复制到粘贴板!
您可以镜像 OpenShift Container Platform 安装所需的镜像,以及支持 Docker v2-2 (如 Red Hat Quay)的容器镜像 registry 所需的镜像。如果您无法访问大型容器 registry,可以使用 mirror registry for Red Hat OpenShift,它是一个包括在 OpenShift Container Platform 订阅中的小型容器 registry。
无论您所选 registry 是什么,都会将互联网上红帽托管站点的内容镜像到隔离的镜像 registry 相同。镜像内容后,您要将每个集群配置为从镜像 registry 中检索此内容。
OpenShift 镜像 registry 不能用作目标 registry,因为它不支持没有标签的推送,在镜像过程中需要这个推送。
如果选择不是 mirror registry for Red Hat OpenShift 的容器 registry,您必须可以被您置备的集群中的每个机器访问。如果 registry 无法访问,安装、更新或常规操作(如工作负载重新定位)可能会失败。因此,您必须以高度可用的方式运行镜像 registry,镜像 registry 至少必须与 OpenShift Container Platform 集群的生产环境可用性相匹配。
使用 OpenShift Container Platform 镜像填充镜像 registry 时,可以遵循以下两种情况。如果您的主机可以同时访问互联网和您的镜像 registry,而不能访问您的集群节点,您可以直接从该机器中镜像该内容。这个过程被称为 连接的镜像(mirror)。如果没有这样的主机,则必须将该镜像文件镜像到文件系统中,然后将该主机或者可移动介质放入受限环境中。这个过程被称为 断开连接的镜像。
对于已镜像的 registry,若要查看拉取镜像的来源,您必须查看 Trying 以访问
CRI-O 日志中的日志条目。查看镜像拉取源的其他方法(如在节点上使用 crictl images
命令)显示非镜像镜像名称,即使镜像是从镜像位置拉取的。
红帽没有针对 OpenShift Container Platform 测试第三方 registry。
4.4. 先决条件 复制链接链接已复制到粘贴板!
您必须在托管 OpenShift Container Platform 集群的位置(如 Red Hat Quay)中有一个支持 Docker v2-2 的容器镜像 registry。
注意如果使用 Red Hat Quay,则必须在 oc-mirror 插件中使用 3.6 或更高版本。如果您有 Red Hat Quay 权利,请参阅有关部署 Red Hat Quay for 概念验证 的文档,或使用 Red Hat Quay Operator。如果您需要额外的帮助来选择并安装 registry,请联络您的销售代表或红帽支持。
如果您还没有容器镜像 registry,OpenShift Container Platform 可以为订阅者提供一个 mirror registry for Red Hat OpenShift。您的订阅中包含 mirror registry for Red Hat OpenShift,它是一个小型容器 registry,可用于在断开连接的安装中镜像 OpenShift Container Platform 所需的容器镜像。
4.5. 准备您的镜像主机 复制链接链接已复制到粘贴板!
在使用 oc-mirror 插件镜像(mirror)前,您必须安装插件并创建容器镜像 registry 凭据文件,以允许从红帽镜像到您的镜像。
4.5.1. 安装 oc-mirror OpenShift CLI 插件 复制链接链接已复制到粘贴板!
安装 oc-mirror OpenShift CLI 插件以在断开连接的环境中管理镜像集。
先决条件
已安装 OpenShift CLI(
oc
)。如果您在完全断开连接的环境中镜像镜像集,请确保以下内容:- 您已在可访问互联网的主机上安装了 oc-mirror 插件。
- 在断开连接的环境中的主机可以访问目标镜像 registry。
-
您已在使用 oc-mirror 的操作系统中,将
umask
参数设置为0022
。 - 您已为您要使用的 RHEL 版本安装了正确的二进制文件。
流程
下载 oc-mirror CLI 插件。
- 导航到 OpenShift Cluster Manager 的 Downloads 页面。
- 在 OpenShift disconnected 安装工具部分下,点 Download for OpenShift Client(oc)mirror 插件 并保存该文件。
解压归档:
tar xvzf oc-mirror.tar.gz
$ tar xvzf oc-mirror.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如有必要,将插件文件更新为可执行。
chmod +x oc-mirror
$ chmod +x oc-mirror
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意不要重命名
oc-mirror
文件。通过将文件放在
PATH
中,例如/usr/local/bin
,安装 oc-mirror CLI 插件:sudo mv oc-mirror /usr/local/bin/.
$ sudo mv oc-mirror /usr/local/bin/.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证 oc-mirror v1 的插件是否已成功安装:
oc mirror help
$ oc mirror help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.2. 配置允许对容器镜像进行镜像的凭证 复制链接链接已复制到粘贴板!
创建容器镜像 registry 凭证文件,可让您将镜像从红帽 mirror 到您的镜像。
安装集群时不要使用此镜像 registry 凭据文件作为 pull secret。如果在安装集群时提供此文件,集群中的所有机器都将具有镜像 registry 的写入权限。
此过程需要您可以对镜像 registry 上的容器镜像 registry 进行写操作,并将凭证添加到 registry pull secret。
先决条件
- 您已将镜像 registry 配置为在断开连接的环境中使用。
- 您在镜像 registry 中标识了镜像仓库的位置,以将容器镜像镜像(mirror)到这个位置。
- 您置备了一个镜像 registry 帐户,允许将镜像上传到该镜像仓库。
流程
在安装主机上完成以下步骤:
-
从 Red Hat OpenShift Cluster Manager 下载
registry.redhat.io
pull secret。 以 JSON 格式创建您的 pull secret 副本:
cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定到存储 pull secret 的文件夹的路径,以及您创建的 JSON 文件的名称。
该文件类似于以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将文件保存为
~/.docker/config.json
或$XDG_RUNTIME_DIR/containers/auth.json
:如果
.docker
或$XDG_RUNTIME_DIR/containers
目录不存在,请输入以下命令来创建:mkdir -p <directory_name>
$ mkdir -p <directory_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<directory_name>
是~/.docker
或$XDG_RUNTIME_DIR/containers
。输入以下命令将 pull secret 复制到适当的目录中:
cp <path>/<pull_secret_file_in_json> <directory_name>/<auth_file>
$ cp <path>/<pull_secret_file_in_json> <directory_name>/<auth_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<directory_name>
是~/.docker
或$XDG_RUNTIME_DIR/containers
,<auth_file>
是config.json
或auth.json
。
为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:
echo -n '<user_name>:<password>' | base64 -w0
$ echo -n '<user_name>:<password>' | base64 -w0
1 BGVtbYk3ZHAtqXs=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 通过
<user_name>
和<password>
指定 registry 的用户名和密码。
编辑 JSON 文件并添加描述 registry 的部分:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该文件类似于以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 创建镜像设置配置 复制链接链接已复制到粘贴板!
在使用 oc-mirror 插件镜像集之前,必须先创建镜像设置配置文件。此镜像设置配置文件定义哪些 OpenShift Container Platform 发行版本、Operator 和其他镜像要镜像,以及 oc-mirror 插件的其他配置设置。
您必须在镜像设置配置文件中指定存储后端。此存储后端可以是本地目录或支持 Docker v2-2 的 registry。oc-mirror 插件在创建镜像的过程中将元数据存储在这个存储后端中。
不要删除或修改 oc-mirror 插件生成的元数据。每次针对同一镜像 registry 运行 oc-mirror 插件时,都必须使用相同的存储后端。
先决条件
- 您已创建了容器镜像 registry 凭证文件。具体步骤请参阅"配置允许镜像镜像的凭证"。
流程
使用
oc mirror init
命令为镜像设置配置创建模板,并将其保存到名为imageset-config.yaml
的文件中:oc mirror init --registry <storage_backend> > imageset-config.yaml
$ oc mirror init --registry <storage_backend> > imageset-config.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定存储后端的位置,如
example.com/mirror/oc-mirror-metadata
。
编辑该文件并根据需要调整设置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
archiveSize
以设置镜像集合中的每个文件的最大大小(以 GiB 为单位)。 - 2
- 设置后端位置,以将镜像设置元数据保存到。此位置可以是 registry 或本地目录。必须指定
storageConfig
值。 - 3
- 设置存储后端的 registry URL。
- 4
- 将频道设置为从中检索 OpenShift Container Platform 镜像。
- 5
- 添加
graph: true
以构建并推送 graph-data 镜像推送到镜像 registry。创建 OpenShift Update Service (OSUS) 需要 graph-data 镜像。graph: true
字段还会生成UpdateService
自定义资源清单。oc
命令行界面 (CLI) 可以使用UpdateService
自定义资源清单来创建 OSUS。如需更多信息,请参阅关于 OpenShift Update Service。 - 6
- 将 Operator 目录设置为从中检索 OpenShift Container Platform 镜像。
- 7
- 仅指定要包含在镜像集中的某些 Operator 软件包。删除此字段以检索目录中的所有软件包。
- 8
- 仅指定要包含在镜像集中的 Operator 软件包的某些频道。即使您没有使用该频道中的捆绑包,还必须始终包含 Operator 软件包的默认频道。您可以运行以下命令来找到默认频道:
oc mirror list operators --catalog=<catalog_name> --package=<package_name>
。 - 9
- 指定要在镜像集中包含的任何其他镜像。
注意graph: true
字段还会镜像ubi-micro
镜像,以及其他镜像的镜像。当升级 OpenShift Container Platform 延长更新支持 (EUS) 版本时,在当前和目标版本之间可能需要一个中间版本。例如,如果当前版本是
4.14
,目标版本为4.16
,您可能需要在使用 oc-mirror 插件 v1 时在ImageSetConfiguration
中包含版本,如4.15.8
。oc-mirror 插件 v1 可能并不总是自动检测,因此请检查 Cincinnati 图形网页以确认任何所需的中间版本并手动添加到您的配置中。
有关各种镜像用例,请参阅"镜像设置配置参数"和"镜像设置配置示例"。
保存更新的文件。
在镜像内容时,
oc mirror
命令需要此镜像设置配置文件。
4.7. 将镜像集镜像(mirror)到镜像 registry 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror CLI 插件在 部分断开连接的环境中或完全断开连接的环境中将镜像镜像到镜像 registry。
这些步骤假定您已设置了镜像 registry。
4.7.1. 在部分断开连接的环境中镜像设置的镜像 复制链接链接已复制到粘贴板!
在部分断开连接的环境中,您可以直接镜像到目标镜像 registry 的镜像。
4.7.1.1. 镜像(mirror)到镜像(mirror)的镜像 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror 插件将镜像直接设置为在镜像设置过程中可访问的目标镜像 registry。
您必须在镜像设置配置文件中指定存储后端。这个存储后端可以是本地目录或 Docker v2 registry。oc-mirror 插件在创建镜像的过程中将元数据存储在这个存储后端中。
不要删除或修改 oc-mirror 插件生成的元数据。每次针对同一镜像 registry 运行 oc-mirror 插件时,都必须使用相同的存储后端。
先决条件
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc
)。 -
已安装
oc-mirror
CLI 插件。 - 您已创建了镜像设置配置文件。
流程
运行
oc mirror
命令将指定镜像集配置中的镜像镜像到指定的 registry:oc mirror --config=./<imageset-config.yaml> \ docker://registry.example:5000
$ oc mirror --config=./<imageset-config.yaml> \
1 docker://registry.example:5000
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
进入生成的
oc-mirror-workspace/
目录。 -
导航到结果目录,例如,
results-1639608409/
。 -
验证
ImageContentSourcePolicy
和CatalogSource
资源是否存在 YAML 文件。
ImageContentSourcePolicy
YAML 文件的 repositoryDigestMirrors
部分在安装过程中用于 install-config.yaml
文件。
后续步骤
- 配置集群以使用 oc-mirror 生成的资源。
故障排除
4.7.2. 镜像在完全断开连接的环境中设置的镜像 复制链接链接已复制到粘贴板!
要镜像在完全断开连接的环境中设置的镜像,您必须首先将镜像集镜像到磁盘, 然后将磁盘上的镜像集文件镜像到一个镜像。
4.7.2.1. 从镜像镜像到磁盘 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror 插件生成镜像集,并将内容保存到磁盘。然后,生成的镜像集可以转移到断开连接的环境中,并镜像到目标 registry。
根据镜像设置配置文件中指定的配置,使用 oc-mirror 的镜像可能会将几百 GB 数据下载到磁盘。
您填充镜像 registry 时初始镜像集下载通常是最大镜像。因为您只下载自上次运行命令以来更改的镜像,所以再次运行 oc-mirror 插件时,所生成的镜像集通常比较小。
您必须在镜像设置配置文件中指定存储后端。这个存储后端可以是本地目录或 docker v2 registry。oc-mirror 插件在创建镜像的过程中将元数据存储在这个存储后端中。
不要删除或修改 oc-mirror 插件生成的元数据。每次针对同一镜像 registry 运行 oc-mirror 插件时,都必须使用相同的存储后端。
先决条件
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc
)。 -
已安装
oc-mirror
CLI 插件。 - 您已创建了镜像设置配置文件。
流程
运行
oc mirror
命令将指定镜像集配置镜像到磁盘:oc mirror --config=./imageset-config.yaml \ file://<path_to_output_directory>
$ oc mirror --config=./imageset-config.yaml \
1 file://<path_to_output_directory>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
进入您的输出目录:
cd <path_to_output_directory>
$ cd <path_to_output_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否创建了镜像设置
.tar
文件:ls
$ ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
mirror_seq1_000000.tar
mirror_seq1_000000.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 将镜像集 .tar 文件移动到断开连接的环境中。
故障排除
4.7.2.2. 从磁盘镜像到镜像 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror 插件将生成的镜像集的内容镜像到目标镜像 registry。
先决条件
-
您已在断开连接的环境中安装了 OpenShift CLI(
oc
)。 -
您已在断开连接的环境中安装了
oc-mirror
CLI 插件。 -
已使用
oc mirror
命令生成镜像集文件。 - 您已将镜像集文件传送到断开连接的环境中。
流程
运行
oc mirror
命令,以处理磁盘上镜像集文件,并将内容镜像到目标镜像 registry:oc mirror --from=./mirror_seq1_000000.tar \ docker://registry.example:5000
$ oc mirror --from=./mirror_seq1_000000.tar \
1 docker://registry.example:5000
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令使用镜像集更新镜像 registry,并生成
ImageContentSourcePolicy
和CatalogSource
资源。
验证
-
进入生成的
oc-mirror-workspace/
目录。 -
导航到结果目录,例如,
results-1639608409/
。 -
验证
ImageContentSourcePolicy
和CatalogSource
资源是否存在 YAML 文件。
后续步骤
- 配置集群以使用 oc-mirror 生成的资源。
故障排除
4.8. 配置集群以使用 oc-mirror 生成的资源 复制链接链接已复制到粘贴板!
将镜像设置为镜像 registry 后,您必须将生成的 ImageContentSourcePolicy
、CatalogSource
和发行版本镜像签名资源应用到集群。
ImageContentSourcePolicy
资源将镜像 registry 与源 registry 关联,并将在线 registry 中的镜像拉取请求重定向到镜像 registry。Operator Lifecycle Manager(OLM)使用 CatalogSource
资源检索有关镜像 registry 中可用 Operator 的信息。发行镜像签名用于验证镜像的发行镜像。
先决条件
- 您已将镜像设置为断开连接的环境中的 registry 镜像。
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
-
以具有
cluster-admin
角色的用户身份登录 OpenShift CLI。 运行以下命令,将结果目录中的 YAML 文件应用到集群:
oc apply -f ./oc-mirror-workspace/results-1639608409/
$ oc apply -f ./oc-mirror-workspace/results-1639608409/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果镜像(mirror)镜像,请运行以下命令将发行版本镜像签名应用到集群:
oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果要镜像 Operator 而不是集群,则不需要运行
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
。运行该命令将返回错误,因为没有要应用的发行版本镜像签名。
验证
运行以下命令验证
ImageContentSourcePolicy
资源是否已成功安装:oc get imagecontentsourcepolicy
$ oc get imagecontentsourcepolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
CatalogSource
资源是否已成功安装:oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. 更新您的镜像 registry 内容 复制链接链接已复制到粘贴板!
您可以通过更新镜像设置配置文件并将镜像集镜像到镜像 registry 来更新镜像 registry 内容。下次运行 oc-mirror 插件时,会生成一个镜像集,该镜像集仅包含之前执行以来的新和更新镜像。
在更新镜像 registry 时,您必须考虑以下注意事项:
如果镜像不再包含在生成和镜像的最新镜像集中,则会从目标镜像 registry 中修剪镜像。因此,请确保为以下关键组件相同的组合更新镜像,以便只创建并镜像不同的镜像集:
- 镜像设置配置
- 目标 registry
- 存储配置
- 当要 mirror 或 mirror 到 mirror 工作流时,可以修剪镜像。
- 生成的镜像集必须按顺序推送到目标镜像 registry。您可以从生成的镜像设置归档文件的文件名中获取序列号。
- 不要删除或修改 oc-mirror 插件生成的元数据镜像。
- 如果您在初始镜像集创建过程中为镜像 registry 指定顶层命名空间,则每次针对同一镜像 registry 运行 oc-mirror 插件时都必须使用此命名空间。
有关更新镜像 registry 内容的工作流的更多信息,请参阅"高级别工作流"部分。
4.9.1. 镜像 registry 更新示例 复制链接链接已复制到粘贴板!
本节论述了将镜像 registry 从磁盘更新到镜像的用例。
以前用于镜像的 ImageSetConfiguration
文件示例
通过修剪现有镜像来镜像特定的 OpenShift Container Platform 版本
更新了 ImageSetConfiguration
文件
- 1
- 使用
stable-4.13
修剪stable-4.12
的所有镜像。
通过修剪现有镜像升级到 Operator 的最新版本
更新了 ImageSetConfiguration
文件
- 1
- 使用相同的频道而没有指定版本会修剪现有镜像,并使用最新版本的镜像进行更新。
通过修剪现有的 Operator 来镜像新 Operator
更新了 ImageSetConfiguration
文件
- 1
- 使用
new_operator_name
替换rhacs-operator
修剪 Red Hat Advanced Cluster Security for Kubernetes Operator。
修剪所有 OpenShift Container Platform 镜像
更新了 ImageSetConfiguration
文件
4.10. 执行空运行 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror 来执行空运行,而无需实际镜像(mirror)。这可让您查看要镜像的镜像列表,以及从镜像 registry 修剪的所有镜像。使用空运行(dry run)还允许您在早期版本中捕获与镜像集配置相关的任何错误,或使用生成的镜像列表以及其他工具来执行镜像操作。
先决条件
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc
)。 -
已安装
oc-mirror
CLI 插件。 - 您已创建了镜像设置配置文件。
流程
使用
--dry-run
标志运行oc mirror
命令来执行空运行:oc mirror --config=./imageset-config.yaml \ docker://registry.example:5000 \ --dry-run
$ oc mirror --config=./imageset-config.yaml \
1 docker://registry.example:5000 \
2 --dry-run
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入生成的工作区目录:
cd oc-mirror-workspace/
$ cd oc-mirror-workspace/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看生成的
mapping.txt
文件。此文件包含将要镜像的所有镜像的列表。
查看生成的
prune-plan.json
文件。此文件包含在发布镜像集时从镜像 registry 中修剪的所有镜像的列表。
注意只有在 oc-mirror 命令指向您的镜像 registry 且需要修剪的镜像时,才会生成
prune-plan.json
文件。
4.11. 包括本地 OCI Operator 目录 复制链接链接已复制到粘贴板!
虽然将 OpenShift Container Platform 发行版本、Operator 目录和其他额外的镜像从 registry mirror 到一个部分断开连接的集群中,但您还可以在一个本地磁盘中的基于文件的目录中包含 Operator 目录镜像。本地目录必须采用开放容器项目 (OCI) 格式。
本地目录及其内容会根据镜像设置配置文件中的过滤信息,mirror 到您的目标 mirror registry。
在镜像本地 OCI 目录时,所有您要 mirror 的 OpenShift Container Platform 发行版本或其他需要和本地 OCI 格式目录一起 mirror 的镜像都必须从 registry 中拉取。
您无法在磁盘中一起 mirror OCI 目录和一个 oc-mirror 镜像集文件镜像。
使用 OCI 功能的一个用例是,您有一个 CI/CD 系统将 OCI 目录构建到磁盘上的位置,并需要将 OCI 目录以及 OpenShift Container Platform 发行版本一起 mirror 到您的 mirror 镜像 registry。
如果您为 OpenShift Container Platform 4.12 的 oc-mirror 插件使用了预览预览的 OCI 本地目录功能,则无法再使用 oc-mirror 插件的 OCI 本地目录功能在本地复制目录,并将其转换为 OCI 格式作为 mirror 到一个完全断开连接的集群中的第一步。
先决条件
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc
)。 -
已安装
oc-mirror
CLI 插件。
流程
创建镜像设置配置文件,并根据需要调整设置。
以下示例镜像设置配置在磁盘上 mirror 一个 OCI 目录,以及来自
registry.redhat.io
的 OpenShift Container Platform 发行版本和 UBI 镜像。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
oc mirror
命令将 OCI 目录 mirror 到目标 mirror registry:oc mirror --config=./imageset-config.yaml \ docker://registry.example:5000
$ oc mirror --config=./imageset-config.yaml \
1 docker://registry.example:5000
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以指定其他标记来调整 OCI 功能的行为:
--oci-insecure-signature-policy
- 不要将签名推送到目标 mirror registry。
--oci-registries-config
指定 TOML 格式的
registry.conf
文件的路径。您可以使用它来从不同的 registry 中镜像,如用于测试的预生产位置,而无需更改镜像设置配置文件。这个标志只会影响本地 OCI 目录,而不会影响任何其他被镜像的内容。registry.conf 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 配置集群以使用 oc-mirror 生成的资源。
4.12. 镜像设置配置参数 复制链接链接已复制到粘贴板!
oc-mirror 插件需要一个镜像设置配置文件,该文件定义哪些镜像要镜像(mirror)。下表列出了 ImageSetConfiguration
资源的可用参数。
参数 | 描述 | 值 |
---|---|---|
|
|
字符串.例如: |
| 镜像集中的每个存档文件的最大大小(以 GiB 为单位)。 |
整数.例如: |
| 镜像集的配置。 | 对象 |
| 镜像集的额外镜像配置。 | 对象数组。例如: additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
| 要 mirror 的镜像的标签或摘要。 |
字符串.例如: |
| 阻止 mirror 的镜像的完整标签、摘要或模式。 |
字符串数组。例如: |
| 镜像集的 helm 配置。请注意,oc-mirror 插件只支持 helm chart,在呈现时不需要用户输入。 | 对象 |
| 要镜像的本地 helm chart。 | 对象数组。例如: local: - name: podinfo path: /test/podinfo-5.0.0.tar.gz
|
| 要镜像的本地 helm chart 的名称。 |
字符串.例如: |
| 到镜像的本地 helm chart 的路径。 |
字符串.例如: |
| 从其中镜像的的远程 helm 软件仓库。 | 对象数组。例如: |
| 从其中镜像(mirror)的 helm 存储库的名称。 |
字符串.例如: |
| 从其中镜像(mirror)的 helm 存储库的 URL。 |
字符串.例如: |
| 要镜像的远程 helm chart。 | 对象数组。 |
| 要镜像的 helm chart 的名称。 |
字符串.例如: |
| 要镜像命名 helm chart 的版本。 |
字符串.例如: |
| 镜像集的 Operator 配置。 | 对象数组。例如: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16 packages: - name: elasticsearch-operator minVersion: '2.4.0'
|
| 包括在镜像集中的 Operator 目录。 |
字符串.例如: |
|
为 |
布尔值.默认值为 |
| Operator 软件包配置。 | 对象数组。例如: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16 packages: - name: elasticsearch-operator minVersion: '5.2.3-31'
|
| 镜像集中要包含的 Operator 软件包名称 |
字符串.例如: |
| Operator 软件包频道配置。 | 对象 |
| Operator 频道名称(软件包中唯一)要包括在镜像集中。 |
字符串.例如: |
| Operator 镜像的最高版本,在其中存在所有频道。详情请查看以下备注。 |
字符串.例如: |
| 要包含的最小捆绑包的名称,以及频道头更新图中的所有捆绑包。仅在命名捆绑包没有语义版本元数据时设置此字段。 |
字符串.例如: |
| Operator 的最低版本,用于镜像存在的所有频道。详情请查看以下备注。 |
字符串.例如: |
| Operator 最高版本,可跨所有存在的频道进行镜像。详情请查看以下备注。 |
字符串.例如: |
| Operator 的最低版本,用于镜像存在的所有频道。详情请查看以下备注。 |
字符串.例如: |
|
如果为 |
布尔值.默认值为 |
| 要镜像引用的目录的替代名称和可选命名空间层次结构。 |
字符串.例如: |
| 将引用的目录镜像为。
|
字符串.例如: |
|
附加到 |
字符串.例如: |
| 镜像集的平台配置。 | 对象 |
| 要镜像的平台发行版本有效负载的架构。 | 字符串数组。例如:
默认值为 |
| 镜像集的平台频道配置。 | 对象数组。例如: channels: - name: stable-4.10 - name: stable-4.16
|
|
为 |
布尔值.默认值为 |
| 发行频道的名称。 |
字符串.例如: |
| 要镜像引用的平台的最低版本。 |
字符串.例如: |
| 要镜像引用的平台的最高版本。 |
字符串.例如: |
| 切换最短的路径镜像或完整范围镜像。 |
布尔值.默认值为 |
| 要镜像的平台的类型。 |
字符串.例如: |
| 指明是否将 OSUS 图表添加到镜像集中,然后发布到镜像。 |
布尔值.默认值为 |
| 镜像集的后端配置。 | 对象 |
| 镜像集的本地后端配置。 | 对象 |
| 包含镜像设置元数据的目录路径。 |
字符串.例如: |
| 镜像集的 registry 后端配置。 | 对象 |
| 后端 registry URI。可以选择在 URI 中包含命名空间引用。 |
字符串.例如: |
| (可选)跳过引用的后端 registry 的 TLS 验证。 |
布尔值.默认值为 |
使用 minVersion
和 maxVersion
属性过滤特定 Operator 版本范围可能会导致多个频道头错误。错误信息将显示有多个频道头
。这是因为在应用过滤器时,Operator 的更新图会被截断。
Operator Lifecycle Manager 要求每个 operator 频道都包含一个端点组成更新图表的版本,即 Operator 的最新版本。在应用图形的过滤器范围时,可以进入两个或多个独立图形或具有多个端点的图形。
要避免这个错误,请不要过滤 Operator 的最新版本。如果您仍然遇到错误,具体取决于 Operator,则必须增加 maxVersion
属性,或者 minVersion
属性必须减少。因为每个 Operator 图都可以不同,所以您可能需要调整这些值,直到错误解决为止。
4.13. 镜像设置配置示例 复制链接链接已复制到粘贴板!
以下 ImageSetConfiguration
文件示例演示了各种镜像用例的配置。
使用案例:包含最短的 OpenShift Container Platform 更新路径
以下 ImageSetConfiguration
文件使用本地存储后端,并包括所有 OpenShift Container Platform 版本,以及从最低 4.11.37
版本到最大 4.12.15
版本的更新路径。
ImageSetConfiguration
文件示例
使用案例:包含对于多架构的版本的从最低到最新版本的所有 OpenShift Container Platform 版本
以下 ImageSetConfiguration
文件使用一个 registry 存储后端,并包括从最小 4.13.4
迁移到频道中最新版本的所有 OpenShift Container Platform 版本。对于每个使用此镜像集合配置的 oc-mirror,评估 stable-4.13
频道的最新发行版本,因此定期运行 oc-mirror 可确保您自动收到最新版本的 OpenShift Container Platform 镜像。
通过将 platform.architectures
的值设置为 multi
,您可以确保支持多架构版本的镜像。
ImageSetConfiguration
文件示例
使用案例:包含从最低到最新的 Operator 版本
以下 ImageSetConfiguration
文件使用本地存储后端,仅包含 stable
频道中从 4.0.1 及之后的版本开始的 Red Hat Advanced Cluster Security for Kubernetes Operator。
当您指定了一个最小或最大版本范围时,可能不会接收该范围内的所有 Operator 版本。
默认情况下,oc-mirror 排除了 Operator Lifecycle Manager (OLM)规格中跳过或被较新的版本替换的任何版本。跳过的 Operator 版本可能会受到 CVE 或包含错误的影响。改为使用较新版本。有关跳过和替换版本的更多信息,请参阅使用 OLM 创建更新图表。
要接收指定范围内的所有 Operator 版本,您可以将 mirror.operators.full
字段设置为 true
。
ImageSetConfiguration
文件示例
要指定最大版本而不是最新的版本,请设置 mirror.operators.packages.channels.maxVersion
字段。
使用案例:包含 Nutanix CSI Operator
以下 ImageSetConfiguration
文件使用本地存储后端,并包括 Nutanix CSI Operator、OpenShift Update Service (OSUS)图形镜像以及额外的 Red Hat Universal Base Image (UBI)。
ImageSetConfiguration
文件示例
使用案例:包含默认 Operator 频道
以下 ImageSetConfiguration
文件包括 OpenShift Elasticsearch Operator 的stable-5.7
和 stable
频道。即使只需要 stable-5.7
频道中的软件包,stable
频道也必须包含在 ImageSetConfiguration
文件中,因为它是 Operator 的默认频道。即使您没有使用该频道中的捆绑包,还必须始终包含 Operator 软件包的默认频道。
您可以运行以下命令来找到默认频道:oc mirror list operators --catalog=<catalog_name> --package=<package_name>
。
ImageSetConfiguration
文件示例
使用案例:包含整个目录(所有版本)
以下 ImageSetConfiguration
文件将 mirror.operators.full
字段设置为 true
,使其包含整个 Operator 目录的所有版本。
ImageSetConfiguration
文件示例
使用案例:包含整个目录(仅限频道头)
以下 ImageSetConfiguration
文件包含整个 Operator 目录的频道头。
默认情况下,对于目录中的每个 Operator,oc-mirror 都包含来自默认频道的最新 Operator 版本(频道头)。如果要镜像所有 Operator 版本,而不仅仅是频道头,您必须将 mirror.operators.full
字段设置为 true
。
本例还使用 targetCatalog
字段指定替代命名空间和名称来镜像目录。
ImageSetConfiguration
文件示例
用例:包含任意镜像和 helm chart
以下 ImageSetConfiguration
文件使用 registry 存储后端,并包含 helm chart 和额外的 Red Hat Universal Base Image(UBI)。
ImageSetConfiguration
文件示例
用例:包含 EUS 版本的升级路径
以下 ImageSetConfiguration
文件包含 eus-<version>
频道,其中 maxVersion
值至少要比 minVersion
的值高两个次版本。
例如,在这个 ImageSetConfiguration
文件中,minVersion
设置为 4.12.28
,而 eus-4.14
频道的 maxVersion
为 4.14.16
。
ImageSetConfiguration
文件示例
4.14. oc-mirror 的命令参考 复制链接链接已复制到粘贴板!
下表描述了 oc mirror
子命令和标志:
子命令 | 描述 |
---|---|
| 为指定的 shell 生成自动完成脚本。 |
| 输出镜像集合的内容。 |
| 显示有关任何子命令的帮助。 |
| 输出初始镜像设置配置模板。 |
| 列出可用平台和 Operator 内容及其版本。 |
| 输出 oc-mirror 版本。 |
标记 | 描述 |
---|---|
| 指定镜像设置配置文件的路径。 |
| 如果发生任何非镜像拉取相关的错误,请继续并尝试进行镜像(mirror)。 |
| 禁用目标 registry 的 TLS 验证。 |
| 使用 HTTP 用于目标 registry。 |
|
仅输出操作情况,不实际 mirror 镜像。生成 |
| 指定由执行 oc-mirror 生成的镜像设置归档的路径,以加载到目标 registry 中。 |
| 显示帮助。 |
| 下载镜像和打包层时,忽略过去的镜像。禁用增量镜像,并可能会下载更多数据。 |
|
为 |
|
指定限制嵌套路径的目标 registry 的最大嵌套路径数。默认值为 |
|
指定每个 registry 允许的并发请求数。默认值为 |
|
在镜像本地 OCI 目录时不要推送签名(使用 |
|
提供 registry 配置文件,以指定在镜像本地 OCI 目录(使用 |
| 跳过删除工件目录。 |
| 不要将镜像标签替换为 Operator 目录中的摘要。 |
| 发布镜像集时跳过元数据。 注意
只有在使用 |
| 如果没有找到镜像,则跳过它而不是报告错误并中止执行。不适用于在镜像设置配置中明确指定的自定义镜像。 |
| 从目标镜像 registry 禁用自动修剪镜像。 |
| 跳过摘要验证。 |
| 为源 registry 禁用 TLS 验证。 |
| 将普通 HTTP 用于源 registry。 |
|
指定日志级别详细程度的数量。有效值为 |
第 5 章 使用 oc-mirror 插件 v2 为断开连接的安装 mirror 镜像 复制链接链接已复制到粘贴板!
如果从私有 registry 中的镜像 OpenShift Container Platform 容器镜像安装集群,则可以在没有直接互联网连接的受限网络中运行集群。每当集群运行时,此 registry 必须正在运行。
正如您可以使用 oc-mirror
OpenShift CLI (oc
)插件一样,您也可以使用 oc-mirror 插件 v2 在完全或部分断开连接的环境中将镜像镜像到镜像 registry。要从官方红帽 registry 下载所需的镜像,您必须从具有互联网连接的系统运行 oc-mirror 插件 v2。
oc-mirror 插件 v2 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
5.1. 先决条件 复制链接链接已复制到粘贴板!
您必须在托管 OpenShift Container Platform 集群的位置(如 Red Hat Quay)中有一个支持 Docker V2-2 的容器镜像 registry。
注意如果使用 Red Hat Quay,请在 oc-mirror 插件中使用 3.6 或更高版本。请参阅有关在 OpenShift Container Platform 上部署 Red Hat Quay Operator 的文档(Red Hat Quay 文档)。如果您需要额外的帮助来选择并安装 registry,请联络您的销售代表或红帽支持。
- 如果您没有容器镜像 registry 的现有解决方案,OpenShift Container Platform 订阅者会收到一个 mirror registry for Red Hat OpenShift。此镜像 registry 包含在您的订阅中,并充当小型容器 registry。您可以使用此 registry 为断开连接的安装镜像 OpenShift Container Platform 所需的容器镜像。
- 置备的集群中的每个机器都必须有权访问镜像 registry。如果 registry 无法访问,安装、更新或常规操作等任务(如工作负载重新定位)可能会失败。镜像 registry 必须以高可用性的方式运行,确保其可用性与 OpenShift Container Platform 集群的生产环境可用性一致。
高级别工作流
以下步骤概述了如何使用 oc-mirror 插件 v2 将镜像镜像到镜像 registry 的高级别工作流:
- 创建镜像设置配置文件。
使用以下工作流之一将镜像设置为目标镜像 registry:
将镜像直接设置为目标镜像 registry (mirror 到 mirror)。
-
镜像设置为磁盘(Mirror-to-Disk),将
tar
文件传送到目标环境,然后将镜像设置为目标镜像 registry (Disk-to-Mirror)。
-
镜像设置为磁盘(Mirror-to-Disk),将
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
- 根据需要重复这些步骤以更新目标镜像 registry。
5.2. 关于 oc-mirror 插件 v2 复制链接链接已复制到粘贴板!
oc-mirror OpenShift CLI (oc
) 插件是一个单一工具,可将所有所需的 OpenShift Container Platform 内容和其他镜像 (mirror)镜像到您的镜像 registry。
要使用 oc-mirror 的新技术预览版本,请在 oc-mirror 插件 v2
命令行中添加--v2 标志。
oc-mirror 插件 v2 具有以下功能:
- 验证镜像设置配置中指定的完整镜像集是否已镜像到已镜像的 registry,无论镜像之前是否被镜像(mirror)。
- 使用缓存系统而不是元数据。
- 通过将新镜像合并到存档中来维护最小归档大小。
- 使用通过镜像日期选择的内容生成镜像存档。
-
可以为完整镜像集生成
ImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS) 而不是ImageContentSourcePolicy
(ICSP),而不是只针对增量更改。 - 根据捆绑包名称保存过滤器 Operator 版本。
-
不执行自动修剪。V2 现在有一个
Delete
功能,它授予用户对删除镜像的更多控制。 -
引入了对
registry.conf
的支持。此更改有助于在使用相同的缓存时镜像到多个 enclaves。
5.2.1. oc-mirror 插件 v2 兼容性和支持 复制链接链接已复制到粘贴板!
OpenShift Container Platform 支持 oc-mirror 插件 v2。
在 aarch64
,ppc64le
, 和 s390x
架构上,oc-mirror 插件 v2 只支持 OpenShift Container Platform 版本 4.14 及更新的版本。
使用 oc-mirror 插件 v2 的最新可用版本,无论您需要镜像的 OpenShift Container Platform 版本是什么。
5.3. 准备您的镜像主机 复制链接链接已复制到粘贴板!
要将 oc-mirror 插件 v2 用于镜像镜像,您需要安装插件并使用容器镜像凭证创建文件,使您能够从红帽镜像到您的镜像。
5.3.1. 安装 oc-mirror OpenShift CLI 插件 复制链接链接已复制到粘贴板!
安装 oc-mirror OpenShift CLI 插件以在断开连接的环境中管理镜像集。
先决条件
已安装 OpenShift CLI(
oc
)。如果您在完全断开连接的环境中镜像镜像集,请确保以下内容:- 您已在可访问互联网的主机上安装了 oc-mirror 插件。
- 在断开连接的环境中的主机可以访问目标镜像 registry。
-
您已在使用 oc-mirror 的操作系统中,将
umask
参数设置为0022
。 - 您已为您要使用的 RHEL 版本安装了正确的二进制文件。
流程
下载 oc-mirror CLI 插件。
- 导航到 OpenShift Cluster Manager 的 Downloads 页面。
- 在 OpenShift disconnected 安装工具部分下,点 Download for OpenShift Client(oc)mirror 插件 并保存该文件。
解压归档:
tar xvzf oc-mirror.tar.gz
$ tar xvzf oc-mirror.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如有必要,将插件文件更新为可执行。
chmod +x oc-mirror
$ chmod +x oc-mirror
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意不要重命名
oc-mirror
文件。通过将文件放在
PATH
中,例如/usr/local/bin
,安装 oc-mirror CLI 插件:sudo mv oc-mirror /usr/local/bin/.
$ sudo mv oc-mirror /usr/local/bin/.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证 oc-mirror v2 的插件是否已成功安装:
oc mirror --v2 --help
$ oc mirror --v2 --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2. 配置允许对容器镜像进行镜像的凭证 复制链接链接已复制到粘贴板!
创建容器镜像 registry 凭证文件,可让您将镜像从红帽 mirror 到您的镜像。
安装集群时不要使用此镜像 registry 凭据文件作为 pull secret。如果在安装集群时提供此文件,集群中的所有机器都将具有镜像 registry 的写入权限。
此过程需要您可以对镜像 registry 上的容器镜像 registry 进行写操作,并将凭证添加到 registry pull secret。
先决条件
- 您已将镜像 registry 配置为在断开连接的环境中使用。
- 您在镜像 registry 中标识了镜像仓库的位置,以将容器镜像镜像(mirror)到这个位置。
- 您置备了一个镜像 registry 帐户,允许将镜像上传到该镜像仓库。
流程
在安装主机上完成以下步骤:
-
从 Red Hat OpenShift Cluster Manager 下载
registry.redhat.io
pull secret。 以 JSON 格式创建您的 pull secret 副本:
cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定到存储 pull secret 的文件夹的路径,以及您创建的 JSON 文件的名称。
该文件类似于以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将文件保存为
$XDG_RUNTIME_DIR/containers/auth.json
。 为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:
echo -n '<user_name>:<password>' | base64 -w0
$ echo -n '<user_name>:<password>' | base64 -w0
1 BGVtbYk3ZHAtqXs=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 通过
<user_name>
和<password>
指定 registry 的用户名和密码。
编辑 JSON 文件并添加描述 registry 的部分:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该文件类似于以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 将镜像集镜像(mirror)到镜像 registry 复制链接链接已复制到粘贴板!
将镜像集镜像到镜像 registry 可确保所需的镜像在安全且受控的环境中可用,从而促进平稳部署、更新和维护任务。
5.4.1. 构建镜像设置配置 复制链接链接已复制到粘贴板!
oc-mirror 插件 v2 使用镜像设置配置作为输入文件,以确定镜像镜像所需的镜像。
ImageSetConfiguration
输入文件示例
5.4.2. 在部分断开连接的环境中镜像设置的镜像 复制链接链接已复制到粘贴板!
您可以在带有受限互联网访问的环境中使用 oc-mirror 插件 v2 将镜像集镜像到 registry。
先决条件
- 在运行 oc-mirror 插件 v2 的环境中,您可以访问互联网和镜像 registry。
流程
运行以下命令,将指定镜像设置配置中的镜像镜像到指定的 registry:
oc mirror -c isc.yaml --workspace file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c isc.yaml --workspace file://<file_path> docker://<mirror_registry_url> --v2
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定存储镜像并从中删除镜像的镜像 registry 的 URL 或地址。
验证
-
进入到
working-dir
中的cluster-resources
目录,它在<file_path>
目录中生成。 -
验证
ImageDigestMirrorSet
、ImageTagMirrorSet
和CatalogSource
资源是否存在 YAML 文件。
后续步骤
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
5.4.3. 镜像在完全断开连接的环境中设置的镜像 复制链接链接已复制到粘贴板!
您可以在 OpenShift Container Platform 集群无法访问互联网的完全断开连接的环境中镜像镜像集。
- 镜像到磁盘 :准备包含为镜像设置的镜像的存档。需要访问互联网。
- 手动步骤 :将存档传输到断开连接的镜像 registry 的网络。
- 磁盘到镜像: 要将存档中的镜像集镜像到目标断开连接的 registry,请从可访问镜像 registry 的环境运行 oc-mirror 插件 v2。
5.4.3.1. 从镜像镜像到磁盘 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror 插件 v2 生成镜像集,并将内容保存到磁盘。然后,您可以将生成的镜像集传送到断开连接的环境中,并镜像到目标 registry。
oc-mirror 插件 v2 从镜像设置配置中指定的源中检索容器镜像,并将它们打包到本地目录中的 tar 存档中。
流程
运行以下命令,将指定镜像集配置中的镜像镜像到磁盘:
oc mirror -c isc.yaml file://<file_path> --v2
$ oc mirror -c isc.yaml file://<file_path> --v2
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加所需的文件路径。
验证
-
进入生成的
<file_path>
目录。 - 验证存档文件是否已生成。
后续步骤
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
5.4.3.2. 从磁盘镜像到镜像 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror
插件 v2 将磁盘中的镜像集镜像到目标镜像 registry。
oc-mirror
插件 v2 从本地磁盘检索容器镜像并将其传送到指定的镜像 registry。
流程
运行以下命令,处理磁盘上的镜像集文件,并将内容镜像到目标镜像 registry:
oc mirror -c isc.yaml --from file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c isc.yaml --from file://<file_path> docker://<mirror_registry_url> --v2
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定存储镜像并从中删除镜像的镜像 registry 的 URL 或地址。
验证
-
进入到
working-dir
中的cluster-resources
目录,它在<file_path>
目录中生成。 -
验证
ImageDigestMirrorSet
、ImageTagMirrorSet
和CatalogSource
资源是否存在 YAML 文件。
后续步骤
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
5.5. 其他资源 复制链接链接已复制到粘贴板!
5.6. 关于 v2 生成的自定义资源 复制链接链接已复制到粘贴板!
使用 oc-mirror 插件 v2 时,如果至少找到一个标签,则默认生成 ImageDigestMirrorSet
(IDMS) 和 ImageTagMirrorSet
(ITMS)。这些集合包含由版本、Operator 目录和其他镜像中的摘要或标签引用的镜像的镜像。
ImageDigestMirrorSet
(IDMS) 将镜像 registry 链接到源 registry,并使用摘要规格转发镜像拉取请求。但是,ImagetagMirrorSet
(ITMS) 资源使用镜像标签重定向镜像拉取请求。
Operator Lifecycle Manager (OLM) 使用 CatalogSource
资源来检索有关镜像 registry 中可用 Operator 的信息。
OSUS 服务使用 UpdateService
资源为断开连接的环境提供 Cincinnati 图。
5.6.1. 配置集群以使用 oc-mirror 插件 v2 生成的资源 复制链接链接已复制到粘贴板!
将镜像设置为镜像 registry 后,您必须将生成的 ImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS)、CatalogSource
和 UpdateService
应用到集群。
在 oc-mirror 插件 v2 中,IDMS 和 ITMS 文件涵盖了整个镜像集,这与 oc-mirror 插件 v1 中的 ICSP 文件不同。因此,即使您仅在增量镜像过程中添加新镜像,IDMS 和 ITMS 文件还包含集合的所有镜像。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
运行以下命令,将结果目录中的 YAML 文件应用到集群:
oc apply -f <path_to_oc-mirror_workspace>/working-dir/cluster-resources
$ oc apply -f <path_to_oc-mirror_workspace>/working-dir/cluster-resources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证
ImageDigestMirrorSet
资源是否已成功安装:oc get imagedigestmirrorset
$ oc get imagedigestmirrorset
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
ImageTagMirrorSet
资源是否已成功安装:oc get imagetagmirrorset
$ oc get imagetagmirrorset
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
CatalogSource
资源是否已成功安装:oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7. 在断开连接的环境中删除镜像 复制链接链接已复制到粘贴板!
在使用 oc-mirror 插件 v2 之前,您必须删除之前部署的镜像。oc-mirror 插件 v2 不再执行自动修剪。
在使用 oc-mirror 插件 v2 时,您必须创建 DeleteImageSetConfiguration
文件来删除镜像配置。这可防止在使用 ImageSetConfig.yaml
更改时意外删除必要的或部署的镜像。
在以下示例中,DeleteImageSetConfiguration
会删除以下内容:
- OpenShift Container Platform release 4.13.3 的所有镜像。
-
目录镜像
redhat-operator-index
v4.12
。 -
aws-load-balancer-operator
v0.0.1 捆绑包及其所有相关镜像。 -
相应的摘要引用的额外镜像
ubi
和ubi-minimal
。
示例: DeleteImageSetConfig
考虑使用 mirror-to-disk 和 disk-to-mirror 工作流来减少镜像问题。
在镜像删除工作流中,oc-mirror 插件 v2 只删除镜像的清单,这不会减少 registry 中占用的存储。
要从不必要的镜像(如带有删除的清单)中释放存储空间,您必须在容器 registry 上启用垃圾收集器。启用垃圾收集器后,registry 将删除不再引用任何清单的镜像 Blob,从而减少之前由已删除 Blob 占用的存储。启用垃圾收集器会因容器 registry 而异。
要在删除镜像时跳过删除 Operator 目录镜像,您必须在 DeleteImageSetConfiguration
文件中的 Operator 目录镜像下列出特定的 Operator。这样可确保只有指定的 Operator 被删除,而不是目录镜像。
如果只指定 Operator 目录镜像,则该目录中的所有 Operator 以及目录镜像本身都将被删除。
5.7.1. 从断开连接的环境中删除镜像 复制链接链接已复制到粘贴板!
要使用 oc-mirror 插件 v2 从断开连接的环境中删除镜像,请按照以下步骤操作。
流程
创建删除之前镜像的 YAML 文件:
oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>
$ oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
<previously_mirrored_work_folder>
:使用镜像之前在镜像过程中镜像或存储的目录。 -
<remote_registry>
: 插入从中删除镜像的远程容器 registry 的 URL 或地址。
-
-
进入创建的
<previously_mirrored_work_folder>/delete directory
。 -
验证
delete-images.yaml
文件是否已生成。 - 手工确保文件中列出的每个镜像不再被集群需要,可以安全地从 registry 中删除。
在生成
delete
YAML 文件后,从远程 registry 中删除镜像:oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/delete/delete-images.yaml docker:/ <remote_registry>
$ oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/delete/delete-images.yaml docker:/ <remote_registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<previously_mirrored_work_folder>
:指定之前镜像的工作文件夹。重要使用 mirror-to-mirror 时,镜像不会在本地缓存,因此您无法从本地缓存中删除镜像。
5.8. 验证您选择的镜像以进行镜像 复制链接链接已复制到粘贴板!
您可以使用 oc-mirror 插件 v2 执行不实际镜像任何镜像的测试运行(dry run)。这可让您查看要镜像的镜像列表。您也可以在早期使用空运行来捕获与镜像设置配置的任何错误。在镜像到磁盘工作流上运行空运行时,oc-mirror 插件 v2 会检查镜像集中的所有镜像是否在其缓存中可用。missing.txt
文件中列出了任何缺少的镜像。在镜像前执行空运行时,missing.txt
和 mapping.txt
文件都包含相同的镜像列表。
5.8.1. 为 oc-mirror 插件 v2 执行空运行 复制链接链接已复制到粘贴板!
通过在不镜像的情况下执行空运行来验证您的镜像设置。这样可确保您的设置正确,并防止意外更改。
流程
要执行测试运行,请运行
oc mirror
命令,并在命令中使用--dry-run
参数:oc mirror -c <image_set_config_yaml> --from file://<oc_mirror_workspace_path> docker://<mirror_registry_url> --dry-run --v2
$ oc mirror -c <image_set_config_yaml> --from file://<oc_mirror_workspace_path> docker://<mirror_registry_url> --dry-run --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
<image_set_config_yaml>
:使用您刚才创建的镜像设置配置文件。 -
<oc_mirror_workspace_path>
:插入 workspace 路径的地址。 <mirror_registry_url>
: 插入从中删除镜像的远程容器 registry 的 URL 或地址。输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
验证
进入生成的工作区目录:
cd <oc_mirror_workspace_path>
$ cd <oc_mirror_workspace_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查生成的
mapping.txt
和missing.txt
文件。这些文件包含将要镜像的所有镜像的列表。
5.8.2. oc-mirror 插件 v2 错误故障排除 复制链接链接已复制到粘贴板!
oc-mirror 插件 v2 现在会在单独的文件中记录所有镜像同步错误,从而更轻松地跟踪和诊断失败。
如果镜像(mirror)发行版本或发行组件镜像时出现错误,它们至关重要。这会立即停止镜像(mirror)过程。
镜像 (mirror) Operator、与 Operator 相关的镜像或其他镜像的错误不会停止镜像(mirror)过程。镜像 (mirror) 过程将继续,oc-mirror 插件 v2 会在处理每 8 个镜像后记录更新日志。
当一个镜像无法被镜像(mirror)时,该镜像会作为一个或多个 Operator 捆绑包的一部分被镜像(mirror),oc-mirror 插件 v2 会通知用户 Operator 不完整,从而明确提供受错误影响的 Operator 捆绑包的信息。
流程
检查与服务器相关的问题:
错误示例
[ERROR] : [Worker] error mirroring image localhost:55000/openshift/graph-image:latest error: copying image 1/4 from manifest list: trying to reuse blob sha256:edab65b863aead24e3ed77cea194b6562143049a9307cd48f86b542db9eecb6e at destination: pinging container registry localhost:5000: Get "https://localhost:5000/v2/": http: server gave HTTP response to HTTPS client
[ERROR] : [Worker] error mirroring image localhost:55000/openshift/graph-image:latest error: copying image 1/4 from manifest list: trying to reuse blob sha256:edab65b863aead24e3ed77cea194b6562143049a9307cd48f86b542db9eecb6e at destination: pinging container registry localhost:5000: Get "https://localhost:5000/v2/": http: server gave HTTP response to HTTPS client
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 oc-mirror 插件 v2 输出目录中,打开
working-dir/logs
文件夹中的mirroring_error_date_time.log
文件。 -
查找表示服务器端问题的错误消息,如
HTTP 500
错误、令牌过期或超时。 - 如果问题仍然存在,请重试镜像过程或联系技术支持。
-
在 oc-mirror 插件 v2 输出目录中,打开
检查对 Operator 进行镜像的过程不完整:
错误示例
error mirroring image docker://registry.redhat.io/3scale-amp2/zync-rhel9@sha256:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/zync-rhel9:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d: reading manifest 8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d in localhost:55000/3scale-amp2/zync-rhel9: manifest unknown error mirroring image docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d error: skipping operator bundle docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d because one of its related images failed to mirror error mirroring image docker://registry.redhat.io/3scale-amp2/system-rhel7@sha256:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
error mirroring image docker://registry.redhat.io/3scale-amp2/zync-rhel9@sha256:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/zync-rhel9:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d: reading manifest 8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d in localhost:55000/3scale-amp2/zync-rhel9: manifest unknown error mirroring image docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d error: skipping operator bundle docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d because one of its related images failed to mirror error mirroring image docker://registry.redhat.io/3scale-amp2/system-rhel7@sha256:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在控制台或日志文件中检查相关的警告,以了解哪些 Operator 不完整。
如果一个 Operator 被标记为不完整,与该 Operator 相关的镜像可能会无法镜像 (mirror)。
- 手动镜像(mirror)缺少的镜像或重试镜像 (mirror) 的过程。
检查与生成的集群资源相关的错误。即使无法镜像(mirror)某些镜像,oc-mirror v2 仍会为已成功镜像(mirror)的镜像生成集群资源,如
IDMS.yaml
和ITMS.yaml
文件。- 在输出目录中检查生成的文件。
- 如果特定镜像缺少了这些文件,请确保在镜像(mirror)过程中没有发生关键错误。
按照以下步骤,您可以更好地诊断问题并确保更顺畅地进行镜像。
5.9. enclave 支持的好处 复制链接链接已复制到粘贴板!
enclave 支持限制内部访问网络的特定部分。与一个 demilitarized zone (DMZ)网络不同,它允许通过防火墙界限和出站流量访问,enclaves 不跨防火墙界限。
enclave Support 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
新的 enclave 支持功能适用于在至少一个中间断开连接的网络中保护的多个 enclave 时需要镜像(mirror)。
enclave 支持有以下优点:
- 您可以镜像多个 enclaves 的内容,并将其集中到一个内部 registry 中。因为有些客户希望在镜像的内容上运行安全检查,所以此设置他们可以一次性运行这些检查。然后,在镜像到下游 enclaves 之前,内容会被检查。
- 您可以直接从集中式内部 registry 中镜像内容,而无需为每个 enclave 重启镜像过程。
- 您可以最小化网络阶段的数据传输,以确保 Blob 或镜像仅从一个阶段传输到另一个阶段。
5.9.1. enclave 镜像工作流 复制链接链接已复制到粘贴板!
上一个镜像概述了在不同环境中使用 oc-mirror 插件的流程,包括在有互联网连接和没有互联网连接的环境中进行。
带有互联网连接的环境 :
- 用户执行 oc-mirror 插件 v2,将在线 registry 的内容镜像到本地磁盘目录。
- 镜像内容保存到磁盘中,用于在离线环境中使用。
断开连接的企业环境(没有互联网 ):
流 1:
-
用户运行 oc-mirror 插件 v2,从磁盘目录中加载镜像的内容(来自在线的环境)加载到
enterprise-registry.in
registry。
-
用户运行 oc-mirror 插件 v2,从磁盘目录中加载镜像的内容(来自在线的环境)加载到
流 2:
-
更新
registry.conf
文件后,用户执行 oc-mirror 插件 v2 以将来自enterprise-registry.in
registry 的内容镜像到 enclave 环境中。 - 内容被保存到一个磁盘目录,用于转移到 enclave。
-
更新
Enclave 环境 (没有互联网):
-
用户运行 oc-mirror 插件 v2,将目录从磁盘目录加载到
enclave-registry.in
registry 中。
图显示了跨这些环境的数据流,侧重于使用 oc-mirror 来处理断开连接的环境和没有互联网连接的环境。
5.9.2. 镜像到 enclave 复制链接链接已复制到粘贴板!
当镜像到 enclave 时,您必须首先将必要的镜像从一个或多个 enclaves 传送到企业中央 registry 中。
中央 registry 位于安全网络中,特别是断开连接的环境,且不会直接链接到公共互联网。但是,用户必须在一个可访问公共互联网的环境中执行 oc mirror
。
流程
在断开连接的环境中运行 oc-mirror 插件 v2 之前,请创建一个
registry.conf
文件。该文件的 TOML 格式如下所述:注意建议将文件存储在
$HOME/.config/containers/registries.conf
或/etc/containers/registries.conf
下。registry.conf
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成镜像存档。
要将所有 OpenShift Container Platform 内容收集到磁盘的一个归档中(
<file_path>/enterprise-content
),请运行以下命令:oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
$ oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
Copy to Clipboard Copied! Toggle word wrap Toggle overflow isc.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成存档后,它将传送到断开连接的环境中。传输机制不是 oc-mirror 插件 v2 的一部分。企业网络管理员需要负责制定传输策略。
在某些情况下,传输是手动完成的,例如在一个没有网络连接的环境中,将磁盘从一个物理机器中拔出,并插入到另外一个系统。在其他情况下,使用安全文件传输协议 (SFTP) 或其他协议。
完成存档传输后,您可以再次执行 oc-mirror 插件 v2,以便将相关存档内容镜像到 registry (在示例中是
entrerpise_registry.in
),如下例所示:oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/
$ oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
--from
指向包含存档的文件夹。它以file://
开头。 -
docker://
是镜像 (mirror) 的目的地,这是最后的参数。因为它是一个 docker registry。 -
-c
(--config
)是一个强制参数。它可让 oc-mirror 插件 v2 最终仅将存档的子部分镜像到 registry。一个存档可能包含几个 OpenShift Container Platform 版本,但断开连接的环境或 enclave 可能只镜像几个。
-
准备
imageSetConfig
YAML 文件,该文件描述了要镜像到 enclave 的内容:示例 isc-enclave.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须在可访问断开连接的 registry 的机器上运行 oc-mirror 插件 v2。在上例中,可以访问断开连接的环境
enterprise-registry.in
。更新图形 URL
如果您使用
graph:true
,oc-mirror 插件 v2 会尝试访问cincinnati
API 端点。由于此环境断开连接,因此请务必导出环境变量UPDATE_URL_OVERRIDE
,以引用 OpenShift Update Service (OSUS)的 URL:export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph
$ export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关在 OpenShift 集群上设置 OSUS 的更多信息,请参阅"使用 OpenShift Update Service 在断开连接的环境中更新集群"。
当升级 OpenShift Container Platform 延长更新支持 (EUS) 版本时,在当前和目标版本之间可能需要一个中间版本。例如,如果当前版本是 4.14
,目标版本为 4.16
,您可能需要在使用 oc-mirror 插件 v2 时在 ImageSetConfiguration
中包含版本,如 4.15.8
。
oc-mirror 插件 v2 可能并不总是自动检测,因此请检查 Cincinnati 图形网页以确认任何所需的中间版本并手动添加到您的配置中。
为 enclave 从企业 registry 中生成镜像存档。
要为
enclave1
准备存档,用户使用针对那个 enclave 专用的imageSetConfiguration
在企业断开连接的环境中执行 oc-mirror 插件 v2。这样可确保仅镜像 enclave 需要的镜像:oc mirror --v2 -c isc-enclave.yaml
$ oc mirror --v2 -c isc-enclave.yaml file:///disk-enc1/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此操作将所有 OpenShift Container Platform 内容收集到存档中,并在磁盘上生成存档。
-
生成存档后,它将传送到
enclave1
网络。传输机制不是 oc-mirror 插件 v2 的责任。 将内容镜像到 enclave registry
完成存档传输后,用户可以再次执行 oc-mirror 插件 v2,以便将相关存档内容镜像到 registry。
oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in
$ oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in
Copy to Clipboard Copied! Toggle word wrap Toggle overflow enclave1
中的 OpenShift Container Platform 集群的管理员现在可以安装或升级该集群。
5.10. 过滤在 Operator 目录中如何工作 复制链接链接已复制到粘贴板!
oc-mirror 插件 v2 通过处理 imageSetConfig
中的信息来选择用于镜像的捆绑包列表。
当 oc-mirror 插件 v2 选择用于镜像的捆绑包时,它不会推断 Group Version Kind (GVK) 或捆绑包依赖项,从镜像集中省略它们。相反,它严格遵循用户指令。您必须明确指定任何所需的依赖软件包及其版本。
捆绑包版本通常使用语义版本标准 (SemVer),您可以根据版本在频道中对捆绑包进行排序。您可以选择位于 ImageSetConfig
中的特定范围的 buncles。
此选择算法确保与 oc-mirror 插件 v1 相比的一致性结果。但是,它不包括升级图形详情,如 replaces
, skip
, 和 skipRange
。这种方法与 OLM 算法不同。它可能会比升级集群所需的更多捆绑包进行镜像(mirror),因为 minVersion
和 maxVersion
之间的升级路径可能比较短。
ImageSetConfig operator 过滤 | 预期的捆绑包版本 |
---|---|
场景 1 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
| 对于目录中每个包(1 个捆绑包),对应于该软件包的默认频道的头版本。 |
场景 2 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true
| 指定目录的所有频道的所有捆绑包 |
场景 3 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 packages: - name: compliance-operator
| 一个捆绑包,对应于该软件包的默认频道的头版本 |
场景 4 | 指定软件包的所有频道捆绑包 |
场景 5 |
默认频道中的所有捆绑包(从 |
场景 6 |
默认频道中的所有捆绑包都低于该软件包的 |
场景 7 |
默认频道中的所有捆绑包,在那个软件包的 |
场景 8 | 该软件包所选频道的头捆绑包。 |
场景 9 | 指定软件包和频道的所有捆绑包。 |
场景 10 | 该软件包每个所选频道的头捆绑包。 |
场景 11 |
在该软件包所选频道中,所有版本都以 |
场景 12 |
在该软件包所选频道中,所有版本都最多为 |
场景 13 |
在该软件包的所选频道中, |
场景 14 | 只有为每个软件包指定的捆绑包才会包含在过滤中。 |
场景 15 |
不要使用这个场景。通过频道过滤,以及不允许带有 |
场景 16 |
请勿使用此场景。您不能使用 |
场景 17 |
请勿使用此场景。您不能使用 |
5.11. oc-mirror 插件 v2 的 ImageSet 配置参数 复制链接链接已复制到粘贴板!
oc-mirror 插件 v2 需要一个镜像设置配置文件,该文件定义哪些镜像要镜像(mirror)。下表列出了 ImageSetConfiguration
资源的可用参数。
使用 minVersion
和 maxVersion
属性过滤特定 Operator 版本范围可能会导致多个频道头错误。错误信息将显示有多个频道头
。这是因为在应用过滤器时,Operator 的更新图会被截断。
OLM 要求每个 Operator 频道都包含组成一个更新图表的版本,它只有一个端点,即 Operator 的最新版本。在应用图形的过滤器范围时,可以进入两个或多个独立图形或具有多个端点的图形。
要避免这个错误,请不要过滤 Operator 的最新版本。如果您仍然遇到错误,具体取决于 Operator,则必须增加 maxVersion
属性,或者 minVersion
属性必须减少。因为每个 Operator 图都可以不同,所以您可能需要调整这些值,直到错误解决为止。
参数 | 描述 | 值 |
---|---|---|
|
|
字符串示例: |
| 镜像集中的每个存档文件的最大大小(以 GiB 为单位)。 |
整数示例: |
| 镜像集的配置。 | 对象 |
| 镜像集的额外镜像配置。 | 对象数组 Example: additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
| 要 mirror 的镜像的标签或摘要。 |
字符串示例: |
| 用于阻止镜像(tag)或摘要(SHA)的镜像列表。 |
字符串数组示例: |
| 镜像集的 Operator 配置。 | 对象数组 Example: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.16 packages: - name: elasticsearch-operator minVersion: '2.4.0'
|
| 包括在镜像集中的 Operator 目录。 |
字符串示例: |
|
为 |
布尔值,默认值为 |
| Operator 软件包配置。 | 对象数组 Example: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.16 packages: - name: elasticsearch-operator minVersion: '5.2.3-31'
|
| 镜像集中要包含的 Operator 软件包名称。 |
字符串示例: |
| Operator 软件包频道配置 | 对象 |
| Operator 频道名称(软件包中唯一)要包括在镜像集中。 |
字符串示例: |
| Operator 镜像的最高版本,在其中存在所有频道。 |
字符串示例: |
| Operator 的最低版本,用于镜像存在的所有频道 |
字符串示例: |
| Operator 最高版本,可跨所有存在的频道进行镜像。 |
字符串示例: |
| Operator 的最低版本,用于镜像存在的所有频道。 |
字符串示例: |
| 选择的捆绑包配置 | 对象数组 Example: |
| 为镜像选择的捆绑包的名称(因为它出现在目录中)。 |
字符串示例: |
| 将引用的目录镜像为的替代名称和可选命名空间层次结构 |
字符串示例: |
| 用于完成 oc-mirror 插件 v2 生成的 catalogSource 自定义资源的模板的路径。 |
字符串示例: |
|
附加到 |
字符串示例: |
| 镜像集的平台配置。 | 对象 |
| 要镜像的平台发行版本有效负载的架构。 | 字符串数组示例:
默认值为 |
| 镜像集的平台频道配置。 | 对象数组示例: channels: - name: stable-4.12 - name: stable-4.16
|
|
为 |
布尔值,默认为 |
| 版本频道的名称 |
字符串示例: |
| 要镜像引用的平台的最低版本。 |
字符串示例: |
| 要镜像引用的平台的最高版本。 |
字符串示例: |
| 切换最短的路径镜像或完整范围镜像。 |
布尔值,默认为 |
| 要镜像的平台的类型 |
字符串示例: |
| 指明是否将 OSUS 图表添加到镜像集中,然后发布到镜像。 |
布尔值,默认为 |
5.11.1. 删除 ImageSet 配置参数 复制链接链接已复制到粘贴板!
要使用 oc-mirror 插件 v2,您必须有删除镜像设置配置文件,该文件定义要从镜像 registry 中删除哪些镜像。下表列出了 DeleteImageSetConfiguration
资源的可用参数。
参数 | 描述 | 值 |
---|---|---|
|
|
字符串示例: |
| 镜像集要删除的配置。 | 对象 |
| 删除镜像集的额外镜像配置。 | 对象数组示例: additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
| 要删除的镜像的标签或摘要。 |
字符串示例: |
| 删除镜像集的 Operator 配置。 | 对象数组示例: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: elasticsearch-operator minVersion: '2.4.0'
|
| 要在 delete 镜像集中包含的 Operator 目录。 |
字符串示例: |
| 如果为 true,则删除完整目录、Operator 软件包或 Operator 频道。 |
布尔值,默认为 |
| Operator 软件包配置 | 对象数组示例: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: elasticsearch-operator minVersion: '5.2.3-31'
|
| 要在 delete 镜像集中包含的 Operator 软件包名称。 |
字符串示例: |
| Operator 软件包频道配置 | 对象 |
| Operator 频道名称(在软件包中是唯一的)包括在 delete 镜像集中。 |
字符串示例: |
| 在所选频道中删除的 Operator 的最高版本。 |
字符串示例: |
| 在存在的选择中删除 Operator 的最低版本。 |
字符串示例: |
| 在存在的所有频道中删除 Operator 的最高版本。 |
字符串示例: |
| 在存在的所有频道中删除 Operator 的最低版本。 |
字符串示例: |
| 所选捆绑包配置 | 对象数组 您不能为同一 Operator 选择频道和捆绑包。 Example: |
| 选择要删除的捆绑包的名称(因为它显示在目录中) |
字符串示例: |
| 镜像集的平台配置 | 对象 |
| 要删除的平台发行版本有效负载的架构。 | 字符串数组示例:
默认值为 |
| 镜像集的平台频道配置。 | 对象数组 Example: channels: - name: stable-4.12 - name: stable-4.16
|
|
为 |
布尔值,默认为 |
| 版本频道的名称 |
字符串示例: |
| 要删除的引用平台的最低版本。 |
字符串示例: |
| 要删除的引用平台的最高版本。 |
字符串示例: |
| 在删除最短路径并删除完整范围之间切换。 |
布尔值,默认为 |
| 要删除的平台的类型 |
字符串示例: |
| 确定是否在镜像 registry 上也删除 OSUS 图形。 |
布尔值,默认为 |
5.12. oc-mirror 插件 v2 的命令参考 复制链接链接已复制到粘贴板!
下表描述了 oc mirror
子命令和 oc-mirror 插件 v2 的标志:
子命令 | 描述 |
---|---|
| 显示有关任何子命令的帮助 |
| 输出 oc-mirror 版本 |
| 删除远程 registry 和本地缓存中的镜像。 |
标记 | 描述 |
---|---|
|
显示身份验证文件的字符串路径。默认为 |
| 指定镜像设置配置文件的路径。 |
| 在访问容器 registry 或守护进程时,需要 HTTPS 并验证证书。 |
| 打印没有 mirror 镜像的操作 |
| 指定通过执行 oc-mirror 插件 v2 来加载目标 registry 生成的镜像设置存档的路径。 |
| 显示帮助 |
|
显示字符串日志级别。支持的值包括 info、debug、trace、error。默认为 |
|
确定 oc-mirror 插件 v2 本地存储实例使用的 HTTP 端口。默认值为 |
|
指定限制嵌套路径的目标 registry 的最大嵌套路径数。默认值为 |
|
默认值为 |
|
包含自指定日期以来的所有新内容(格式: |
| 在访问容器 registry 或守护进程时,需要 HTTPS 并验证证书。 |
|
默认值为 |
| 显示 oc-mirror 插件 v2 的版本。 |
| 决定字符串 oc-mirror 插件 v2 工作区,其中生成资源和内部工件。 |
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.