2.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)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
2.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。
2.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。
2.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 版本是什么。
2.5.3. 准备您的镜像主机
要将 oc-mirror 插件 v2 用于镜像镜像,您需要安装插件并使用容器镜像凭证创建文件,使您能够从红帽镜像到您的镜像。
2.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
如有必要,将插件文件更新为可执行。
$ chmod +x oc-mirror
注意不要重命名
oc-mirror
文件。通过将文件放在
PATH
中,例如/usr/local/bin
,安装 oc-mirror CLI 插件:$ sudo mv oc-mirror /usr/local/bin/.
验证
运行以下命令,验证 oc-mirror v2 的插件是否已成功安装:
$ oc mirror --v2 --help
2.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> 1
- 1
- 指定到存储 pull secret 的文件夹的路径,以及您创建的 JSON 文件的名称。
该文件类似于以下示例:
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
-
将文件保存为
$XDG_RUNTIME_DIR/containers/auth.json
。 为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
- 通过
<user_name>
和<password>
指定 registry 的用户名和密码。
编辑 JSON 文件并添加描述 registry 的部分:
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
该文件类似于以下示例:
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
2.5.4. 将镜像集镜像(mirror)到镜像 registry
将镜像集镜像到镜像 registry 可确保所需的镜像在安全且受控的环境中可用,从而促进平稳部署、更新和维护任务。
2.5.4.1. 构建镜像设置配置
oc-mirror 插件 v2 使用镜像设置配置作为输入文件,以确定镜像镜像所需的镜像。
ImageSetConfiguration
输入文件示例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v2alpha1 mirror: platform: channels: - name: stable-4.13 minVersion: 4.13.10 maxVersion: 4.13.10 graph: true operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: aws-load-balancer-operator - name: 3scale-operator - name: node-observability-operator additionalImages: - name: registry.redhat.io/ubi8/ubi:latest - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
2.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 1
- 1
- 指定存储镜像并从中删除镜像的镜像 registry 的 URL 或地址。
验证
-
进入到
working-dir
中的cluster-resources
目录,它在<file_path>
目录中生成。 -
验证
ImageDigestMirrorSet
、ImageTagMirrorSet
和CatalogSource
资源是否存在 YAML 文件。
后续步骤
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
2.5.4.3. 镜像在完全断开连接的环境中设置的镜像
您可以在 OpenShift Container Platform 集群无法访问互联网的完全断开连接的环境中镜像镜像集。
- 镜像到磁盘 :准备包含为镜像设置的镜像的存档。需要访问互联网。
- 手动步骤 :将存档传输到断开连接的镜像 registry 的网络。
- 磁盘到镜像: 要将存档中的镜像集镜像到目标断开连接的 registry,请从可访问镜像 registry 的环境运行 oc-mirror 插件 v2。
2.5.4.3.1. 从镜像镜像到磁盘
您可以使用 oc-mirror 插件 v2 生成镜像集,并将内容保存到磁盘。然后,您可以将生成的镜像集传送到断开连接的环境中,并镜像到目标 registry。
oc-mirror 插件 v2 从镜像设置配置中指定的源中检索容器镜像,并将它们打包到本地目录中的 tar 存档中。
流程
运行以下命令,将指定镜像集配置中的镜像镜像到磁盘:
$ oc mirror -c isc.yaml file://<file_path> --v2 1
- 1
- 添加所需的文件路径。
验证
-
进入生成的
<file_path>
目录。 - 验证存档文件是否已生成。
后续步骤
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
2.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 1
- 1
- 指定存储镜像并从中删除镜像的镜像 registry 的 URL 或地址。
验证
-
进入到
working-dir
中的cluster-resources
目录,它在<file_path>
目录中生成。 -
验证
ImageDigestMirrorSet
、ImageTagMirrorSet
和CatalogSource
资源是否存在 YAML 文件。
后续步骤
- 配置集群以使用 oc-mirror 插件 v2 生成的资源。
2.5.5. 其他资源
2.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 图。
2.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
验证
运行以下命令验证
ImageDigestMirrorSet
资源是否已成功安装:$ oc get imagedigestmirrorset
运行以下命令验证
ImageTagMirrorSet
资源是否已成功安装:$ oc get imagetagmirrorset
运行以下命令验证
CatalogSource
资源是否已成功安装:$ oc get catalogsource -n openshift-marketplace
2.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
apiVersion: mirror.openshift.io/v2alpha1 kind: DeleteImageSetConfiguration delete: platform: channels: - name: stable-4.13 minVersion: 4.13.3 maxVersion: 4.13.3 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12 packages: - name: aws-load-balancer-operator minVersion: 0.0.1 maxVersion: 0.0.1 additionalImages: - name: registry.redhat.io/ubi8/ubi@sha256:bce7e9f69fb7d4533447232478fd825811c760288f87a35699f9c8f030f2c1a6 - name: registry.redhat.io/ubi8/ubi-minimal@sha256:8bedbe742f140108897fb3532068e8316900d9814f399d676ac78b46e740e34e
考虑使用 mirror-to-disk 和 disk-to-mirror 工作流来减少镜像问题。
在镜像删除工作流中,oc-mirror 插件 v2 只删除镜像的清单,这不会减少 registry 中占用的存储。
要从不必要的镜像(如带有删除的清单)中释放存储空间,您必须在容器 registry 上启用垃圾收集器。启用垃圾收集器后,registry 将删除不再引用任何清单的镜像 Blob,从而减少之前由已删除 Blob 占用的存储。启用垃圾收集器会因容器 registry 而异。
2.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>
其中:
-
<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>
其中:
<previously_mirrored_work_folder>
:指定之前镜像的工作文件夹。重要使用 mirror-to-mirror 时,镜像不会在本地缓存,因此您无法从本地缓存中删除镜像。
2.5.8. 验证您选择的镜像以进行镜像
您可以使用 oc-mirror 插件 v2 执行不实际镜像任何镜像的测试运行(dry run)。这可让您查看要镜像的镜像列表。您也可以在早期使用空运行来捕获与镜像设置配置的任何错误。在镜像到磁盘工作流上运行空运行时,oc-mirror 插件 v2 会检查镜像集中的所有镜像是否在其缓存中可用。missing.txt
文件中列出了任何缺少的镜像。在镜像前执行空运行时,missing.txt
和 mapping.txt
文件都包含相同的镜像列表。
2.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
其中:
-
<image_set_config_yaml>
:使用您刚才创建的镜像设置配置文件。 -
<oc_mirror_workspace_path>
:插入 workspace 路径的地址。 <mirror_registry_url>
: 插入从中删除镜像的远程容器 registry 的 URL 或地址。输出示例
$ oc mirror --config /tmp/isc_dryrun.yaml file://<oc_mirror_workspace_path> --dry-run --v2 [INFO] : :warning: --v2 flag identified, flow redirected to the oc-mirror v2 version. This is Tech Preview, it is still under development and it is not production ready. [INFO] : :wave: Hello, welcome to oc-mirror [INFO] : :gear: setting up the environment for you... [INFO] : :twisted_rightwards_arrows: workflow mode: mirrorToDisk [INFO] : :sleuth_or_spy: going to discover the necessary images... [INFO] : :mag: collecting release images... [INFO] : :mag: collecting operator images... [INFO] : :mag: collecting additional images... [WARN] : :warning: 54/54 images necessary for mirroring are not available in the cache. [WARN] : List of missing images in : CLID-19/working-dir/dry-run/missing.txt. please re-run the mirror to disk process [INFO] : :page_facing_up: list of all images for mirroring in : CLID-19/working-dir/dry-run/mapping.txt [INFO] : mirror time : 9.641091076s [INFO] : :wave: Goodbye, thank you for using oc-mirror
-
验证
进入生成的工作区目录:
$ cd <oc_mirror_workspace_path>
-
检查生成的
mapping.txt
和missing.txt
文件。这些文件包含将要镜像的所有镜像的列表。
2.5.9. enclave 支持的好处
enclave 支持限制内部访问网络的特定部分。与一个 demilitarized zone (DMZ)网络不同,它允许通过防火墙界限和出站流量访问,enclaves 不跨防火墙界限。
enclave Support 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
新的 enclave 支持功能适用于在至少一个中间断开连接的网络中保护的多个 enclave 时需要镜像(mirror)。
enclave 支持有以下优点:
- 您可以镜像多个 enclaves 的内容,并将其集中到一个内部 registry 中。因为有些客户希望在镜像的内容上运行安全检查,所以此设置他们可以一次性运行这些检查。然后,在镜像到下游 enclaves 之前,内容会被检查。
- 您可以直接从集中式内部 registry 中镜像内容,而无需为每个 enclave 重启镜像过程。
- 您可以最小化网络阶段的数据传输,以确保 Blob 或镜像仅从一个阶段传输到另一个阶段。
2.5.9.1. 镜像到 enclave
当镜像到 enclave 时,您必须首先将必要的镜像从一个或多个 enclaves 传送到企业中央 registry 中。
中央 registry 位于安全网络中,特别是断开连接的环境,且不会直接链接到公共互联网。但是,用户必须在一个可访问公共互联网的环境中执行 oc mirror
。
流程
在断开连接的环境中运行 oc-mirror 插件 v2 之前,请创建一个
registry.conf
文件。该文件的 TOML 格式如下所述:注意建议将文件存储在
$HOME/.config/containers/registries.conf
或/etc/containers/registries.conf
下。registry.conf
示例[[registry]] location="registry.redhat.io" [[registry.mirror]] location="<enterprise-registry.in>" [[registry]] location="quay.io" [[registry.mirror]] location="<enterprise-registry.in>"
生成镜像存档。
要将所有 OpenShift Container Platform 内容收集到磁盘的一个归档中(
<file_path>/enterprise-content
),请运行以下命令:$ oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
isc.yaml 示例
apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.0 maxVersion: 4.15.3
生成存档后,它将传送到断开连接的环境中。传输机制不是 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>/
其中:
-
--from
指向包含存档的文件夹。它以file://
开头。 -
docker://
是镜像 (mirror) 的目的地,这是最后的参数。因为它是一个 docker registry。 -
-c
(--config
)是一个强制参数。它可让 oc-mirror 插件 v2 最终仅将存档的子部分镜像到 registry。一个存档可能包含几个 OpenShift Container Platform 版本,但断开连接的环境或 enclave 可能只镜像几个。
-
准备
imageSetConfig
YAML 文件,该文件描述了要镜像到 enclave 的内容:示例 isc-enclave.yaml
apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.2 maxVersion: 4.15.2
您必须在可访问断开连接的 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
有关在 OpenShift 集群上设置 OSUS 的更多信息,请参阅"使用 OpenShift Update Service 在断开连接的环境中更新集群"。
为 enclave 从企业 registry 中生成镜像存档。
要为
enclave1
准备存档,用户使用针对那个 enclave 专用的imageSetConfiguration
在企业断开连接的环境中执行 oc-mirror 插件 v2。这样可确保仅镜像 enclave 需要的镜像:$ oc mirror --v2 -c isc-enclave.yaml file:///disk-enc1/
此操作将所有 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
enclave1
中的 OpenShift Container Platform 集群的管理员现在可以安装或升级该集群。
2.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 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true - packages: - name: elasticsearch-operator | 指定软件包的所有频道捆绑包 |
场景 5 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator minVersion: 5.6.0 |
默认频道中的所有捆绑包(从 |
场景 6 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator maxVersion: 6.0.0 |
默认频道中的所有捆绑包都低于该软件包的 |
场景 7 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator minVersion: 5.6.0 maxVersion: 6.0.0 |
默认频道中的所有捆绑包,在那个软件包的 |
场景 8 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable | 该软件包所选频道的头捆绑包。 |
场景 9 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true - packages: - name: elasticsearch-operator channels: - name: 'stable-v0' | 指定软件包和频道的所有捆绑包。 |
场景 10 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable - name: stable-5.5 | 该软件包每个所选频道的头捆绑包。 |
场景 11 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 |
在该软件包所选频道中,所有版本都以 |
场景 12 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable maxVersion: 6.0.0 |
在该软件包所选频道中,所有版本都最多为 |
场景 13 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
在该软件包的所选频道中, |
场景 14 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14 packages: - name: aws-load-balancer-operator bundles: - name: aws-load-balancer-operator.v1.1.0 - name: 3scale-operator bundles: - name: 3scale-operator.v0.10.0-mas | 只有为每个软件包指定的捆绑包才会包含在过滤中。 |
场景 15 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
不要使用这个场景。通过频道过滤,以及不允许带有 |
场景 16 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
请勿使用此场景。您不能使用 |
场景 17 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 full: true packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
请勿使用此场景。您不能使用 |
2.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 的镜像的标签或摘要。 |
字符串示例: |
| 阻止 mirror 的镜像的完整标签、摘要或模式。 |
字符串数组示例: |
| 镜像集的 Operator 配置。 | 对象数组 Example: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17 packages: - name: elasticsearch-operator minVersion: '2.4.0' |
| 包括在镜像集中的 Operator 目录。 |
字符串示例: |
|
为 |
布尔值,默认值为 |
| Operator 软件包配置。 | 对象数组 Example: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17 packages: - name: elasticsearch-operator minVersion: '5.2.3-31' |
| 镜像集中要包含的 Operator 软件包名称。 |
字符串示例: |
| Operator 软件包频道配置 | 对象 |
| Operator 频道名称(软件包中唯一)要包括在镜像集中。 |
字符串示例: |
| Operator 镜像的最高版本,在其中存在所有频道。 |
字符串示例: |
| Operator 的最低版本,用于镜像存在的所有频道 |
字符串示例: |
| Operator 最高版本,可跨所有存在的频道进行镜像。 |
字符串示例: |
| Operator 的最低版本,用于镜像存在的所有频道。 |
字符串示例: |
| 选择的捆绑包配置 | 对象数组 Example: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17 packages: - name: 3scale-operator bundles: - name: 3scale-operator.v0.10.0-mas |
| 为镜像选择的捆绑包的名称(因为它出现在目录中)。 |
字符串示例: |
| 将引用的目录镜像为的替代名称和可选命名空间层次结构 |
字符串示例: |
| 用于完成 oc-mirror 插件 v2 生成的 catalogSource 自定义资源的模板的路径。 |
字符串示例: apiVersion: operators.coreos.com/v2alpha1 kind: CatalogSource metadata: name: discarded namespace: openshift-marketplace spec: image: discarded sourceType: grpc updateStrategy: registryPoll: interval: 30m0s |
|
附加到 |
字符串示例: |
| 镜像集的平台配置。 | 对象 |
| 要镜像的平台发行版本有效负载的架构。 | 字符串数组示例: architectures: - amd64 - arm64 - multi - ppc64le - s390x
默认值为 |
| 镜像集的平台频道配置。 | 对象数组示例: channels: - name: stable-4.12 - name: stable-4.17 |
|
为 |
布尔值,默认为 |
| 版本频道的名称 |
字符串示例: |
| 要镜像引用的平台的最低版本。 |
字符串示例: |
| 要镜像引用的平台的最高版本。 |
字符串示例: |
| 切换最短的路径镜像或完整范围镜像。 |
布尔值,默认为 |
| 要镜像的平台的类型 |
字符串示例: |
| 指明是否将 OSUS 图表添加到镜像集中,然后发布到镜像。 |
布尔值,默认为 |
2.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: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: 3scale-operator bundles: - name: 3scale-operator.v0.10.0-mas |
| 选择要删除的捆绑包的名称(因为它显示在目录中) |
字符串示例: |
| 镜像集的平台配置 | 对象 |
| 要删除的平台发行版本有效负载的架构。 | 字符串数组示例: architectures: - amd64 - arm64 - multi - ppc64le - s390x
默认值为 |
| 镜像集的平台频道配置。 | 对象数组 Example: channels: - name: stable-4.12 - name: stable-4.17 |
|
为 |
布尔值,默认为 |
| 版本频道的名称 |
字符串示例: |
| 要删除的引用平台的最低版本。 |
字符串示例: |
| 要删除的引用平台的最高版本。 |
字符串示例: |
| 在删除最短路径并删除完整范围之间切换。 |
布尔值,默认为 |
| 要删除的平台的类型 |
字符串示例: |
| 确定是否在镜像 registry 上也删除 OSUS 图形。 |
布尔值,默认为 |
2.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 工作区,其中生成资源和内部工件。 |