×

如果您从私有注册表中镜像的 OpenShift Container Platform 容器镜像集安装集群,则可以在断开连接的环境中运行集群。只要集群运行,此注册表就必须运行。

就像您可以使用oc-mirror OpenShift CLI (oc) 插件一样,您也可以使用 oc-mirror 插件 v2 将镜像镜像到完全或部分断开连接的环境中的镜像注册表。要从官方 Red Hat 注册表下载所需的镜像,您必须从具有互联网连接的系统运行 oc-mirror 插件 v2。

oc-mirror 插件 v2 仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可以提前访问即将推出的产品功能,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

关于 oc-mirror 插件 v2

oc-mirror OpenShift CLI (oc) 插件是一个单一工具,可将所有必需的 OpenShift Container Platform 内容和其他镜像镜像到您的镜像注册表。

要使用 oc-mirror 的新技术预览版本,请将--v2标志添加到 oc-mirror 插件 v2 命令行。

oc-mirror 插件 v2 具有以下功能

  • 验证镜像集配置文件中指定的完整镜像集是否已镜像到镜像注册表,无论镜像是否已镜像。

  • 使用缓存系统而不是元数据,这避免了在单个步骤失败的情况下需要重新启动镜像过程。

  • 通过仅将新图像合并到存档中,保持最小的存档大小。

  • 生成镜像存档,内容由镜像日期选择。

  • 可以生成ImageDigestMirrorSet (IDMS) 和 ImageTagMirrorSet (ITMS) 资源,它们涵盖完整的图像集,而不是ImageContentSourcePolicy (ICSP) 资源,后者仅涵盖 v1 中每次镜像操作的图像集增量更改。

  • 保存按捆绑包名称过滤的 Operator 版本。

  • 不执行自动修剪。v2 现在使用Delete功能,使用户能够更好地控制图像删除。

  • 引入对registries.conf文件的支持。此更改有助于在使用相同缓存的同时镜像到多个隔离区。

高级工作流程

以下步骤概述了如何使用 oc-mirror 插件 v2 将镜像镜像到镜像注册表的高级工作流程。

  1. 创建一个镜像集配置文件。

  2. 使用以下工作流程之一将镜像集镜像到目标镜像注册表。

    • 将镜像集直接镜像到目标镜像注册表(镜像到镜像)。

    • 将镜像集镜像到磁盘(镜像到磁盘),将tar文件传输到目标环境,然后将镜像集镜像到目标镜像注册表(磁盘到镜像)。

  3. 配置您的集群以使用 oc-mirror 插件 v2 生成的资源。

  4. 根据需要重复这些步骤来更新您的目标镜像注册表。

oc-mirror 插件 v2 兼容性和支持

oc-mirror 插件 v2 支持 OpenShift Container Platform。

aarch64ppc64les390x架构上,oc-mirror 插件 v2 仅支持 OpenShift Container Platform 4.14 和更高版本。

无论您需要镜像哪个版本的 OpenShift Container Platform,都应使用最新版本的 oc-mirror 插件 v2。

先决条件

  • 您必须拥有一个支持Docker V2-2的容器镜像注册表,该注册表位于托管 OpenShift Container Platform 集群的位置,例如 Red Hat Quay。

    • 如果您使用 Red Hat Quay,请与 oc-mirror 插件一起使用 3.6 或更高版本。请参见在 OpenShift Container Platform 上部署 Red Hat Quay Operator(Red Hat Quay 文档)。如果您需要选择和安装注册表的额外帮助,请联系您的销售代表或 Red Hat 支持。

    • 如果您没有现有的容器镜像注册表解决方案,OpenShift Container Platform 订阅者将收到 Red Hat OpenShift 的镜像注册表。此镜像注册表包含在您的订阅中,并用作小型容器注册表。您可以使用此注册表镜像 OpenShift Container Platform 的必要容器镜像,以进行脱机安装。

  • 已配置集群中的每台机器都必须能够访问镜像注册表。如果注册表无法访问,则安装、更新或诸如工作负载重新定位之类的例行操作可能会失败。镜像注册表必须以高可用性方式运行,确保其可用性与 OpenShift Container Platform 集群的生产可用性保持一致。

准备镜像主机

要使用 oc-mirror 插件 v2 进行镜像镜像,您必须安装该插件并创建一个包含容器镜像凭据的文件,从而使您可以从 Red Hat 镜像到您的镜像。

安装 oc-mirror OpenShift CLI 插件

安装 oc-mirror OpenShift CLI 插件以管理脱机环境中的镜像集。

先决条件
  • 您已安装 OpenShift CLI (oc)。如果您在完全脱机的环境中镜像镜像集,请确保:

    • 您已在具有互联网访问权限的主机上安装了 oc-mirror 插件。

    • 脱机环境中的主机可以访问目标镜像注册表。

  • 您已将使用 oc-mirror 的操作系统的umask参数设置为0022

  • 您已安装适合您正在使用的 RHEL 版本的正确二进制文件。

步骤
  1. 下载 oc-mirror CLI 插件

    1. 导航到 Red Hat Hybrid Cloud Console 的下载页面。

    2. 在“OpenShift 脱机安装工具”部分,从下拉菜单中选择OpenShift 客户端 (oc) 镜像插件操作系统类型架构类型

    3. 单击下载以保存文件。

  2. 通过运行以下命令解压缩存档:

    $ tar xvzf oc-mirror.tar.gz
  3. 如有必要,通过运行以下命令更新插件文件使其可执行:

    $ chmod +x oc-mirror

    不要重命名oc-mirror文件。

  4. 通过将文件放在您的PATH中(例如/usr/local/bin)来安装 oc-mirror CLI 插件,运行以下命令:

    $ sudo mv oc-mirror /usr/local/bin/.
验证
  • 通过运行以下命令验证 oc-mirror 插件 v2 是否已成功安装:

    $ oc mirror --v2 --help

配置允许镜像镜像的凭据

创建一个容器镜像注册表凭据文件,使您可以将镜像从 Red Hat 镜像到您的镜像。

安装集群时,请勿将此镜像注册表凭据文件用作拉取密钥。如果您在安装集群时提供此文件,则集群中的所有机器都将对您的镜像注册表具有写入权限。

先决条件
  • 您已配置要在脱机环境中使用的镜像注册表。

  • 您已在镜像注册表上确定了要将镜像镜像到的镜像存储库位置。

  • 您已配置允许将镜像上传到该镜像存储库的镜像注册表帐户。

  • 您可以写入镜像注册表。

步骤

在安装主机上完成以下步骤:

  1. 从 Red Hat OpenShift 集群管理器下载您的registry.redhat.io拉取密钥

  2. 通过运行以下命令创建拉取密钥的 JSON 格式副本:

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> (1)
    1 指定要存储拉取密钥的文件夹路径以及要创建的 JSON 文件的名称。
    拉取密钥示例:
    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "[email protected]"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "[email protected]"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "[email protected]"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "[email protected]"
        }
      }
    }
  3. 如果$XDG_RUNTIME_DIR/containers目录不存在,请通过输入以下命令创建一个:

    $ mkdir -p $XDG_RUNTIME_DIR/containers
  4. 将拉取密钥文件保存为$XDG_RUNTIME_DIR/containers/auth.json

  5. 通过运行以下命令生成镜像注册表的 base64 编码用户名和密码或令牌:

    $ echo -n '<user_name>:<password>' | base64 -w0 (1)
    1 对于<user_name><password>,请指定您为注册表配置的用户名和密码。
    示例输出:
    BGVtbYk3ZHAtqXs=
  6. 编辑 JSON 文件,并添加一个描述您的注册表的节:

      "auths": {
        "<mirror_registry>": { (1)
          "auth": "<credentials>", (2)
          "email": "[email protected]"
        }
      },
    1 指定镜像注册表用于提供内容的注册表域名,以及可选的端口,例如registry.example.comregistry.example.com:8443
    2 指定镜像注册表的 base64 编码用户名和密码。
    修改后的拉取密钥示例:
    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "[email protected]"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "[email protected]"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "[email protected]"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "[email protected]"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "[email protected]"
        }
      }
    }

将镜像集镜像到镜像注册表

将镜像集镜像到镜像注册表可确保所需的镜像在安全受控的环境中可用,从而促进更顺利的部署、更新和维护任务。

创建镜像集配置

在使用 oc-mirror 插件 v2 镜像镜像之前,必须创建一个镜像集配置文件。此镜像集配置文件定义了要镜像的 OpenShift Container Platform 版本、Operators 和其他镜像,以及 oc-mirror 插件 v2 的其他配置设置。

先决条件
  • 您已创建容器镜像注册表凭据文件。有关说明,请参阅配置允许镜像镜像的凭据

步骤
  • 创建一个ImageSetConfiguration YAML 文件并修改它以包含您所需的镜像。

    ImageSetConfiguration YAML 文件示例
    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v2alpha1
    mirror:
      platform:
        channels:
        - name: stable-4.17 (1)
          minVersion: 4.17.2
          maxVersion: 4.17.2
        graph: true (2)
      operators:
        - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 (3)
          packages: (4)
           - name: aws-load-balancer-operator
           - name: 3scale-operator
           - name: node-observability-operator
      additionalImages: (5)
       - name: registry.redhat.io/ubi8/ubi:latest
       - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
    1 设置通道以从中检索 OpenShift Container Platform 镜像。
    2 添加graph: true 以构建和推送 graph-data 镜像到镜像注册表。graph-data 镜像是创建 OpenShift 更新服务 (OSUS) 所必需的。graph: true 字段还会生成UpdateService 自定义资源清单。oc 命令行界面 (CLI) 可以使用UpdateService 自定义资源清单来创建 OSUS。有关更多信息,请参阅关于 OpenShift 更新服务
    3 设置 Operator 目录以从中检索 OpenShift Container Platform 镜像。
    4 仅指定要包含在镜像集中的某些 Operator 包。删除此字段以检索目录中的所有包。
    5 指定要包含在镜像集中的任何其他镜像。

在部分断开连接的环境中镜像镜像集

您可以在具有受限互联网访问权限的环境中,使用 oc-mirror 插件 v2 将镜像集镜像到注册表。

先决条件
  • 您可以在运行 oc-mirror 插件 v2 的环境中访问互联网和镜像注册表。

步骤
  • 通过运行以下命令,将镜像从指定的镜像集配置镜像到指定的注册表

    $ oc mirror -c <image_set_configuration> --workspace file://<file_path> docker://<mirror_registry_url> --v2 (1)

    其中

    <image_set_configuration>

    指定镜像集配置文件的名称。

    <file_path>

    指定将在其中生成集群资源的目录。

    <mirror_registry_url>

    指定存储镜像并需要从中删除镜像的镜像注册表的 URL 或地址。

验证
  1. 导航到在<file_path>目录中生成的working-dir/cluster-resources目录。

  2. 验证ImageDigestMirrorSetImageTagMirrorSetCatalogSource资源的 YAML 文件是否存在。

后续步骤
  • 配置您的集群以使用 oc-mirror 插件 v2 生成的资源。

在完全断开连接的环境中镜像镜像集

您可以在 OpenShift Container Platform 集群无法访问公共互联网的完全断开连接的环境中镜像镜像集。以下高级工作流程描述了镜像过程

  1. 镜像到磁盘:将镜像集镜像到存档。

  2. 磁盘传输:手动将存档传输到断开连接的镜像注册表的网络。

  3. 磁盘到镜像:将镜像集从存档镜像到目标断开连接的注册表。

从镜像到磁盘的镜像

您可以使用 oc-mirror 插件 v2 生成镜像集并将内容保存到磁盘。之后,您可以将生成的镜像集传输到断开连接的环境并将其镜像到目标注册表。

oc-mirror 插件 v2 从镜像集配置文件中指定的源检索容器镜像,并将它们打包到本地目录中的 tar 存档中。

步骤
  • 通过运行以下命令将镜像从指定的镜像集配置镜像到磁盘

    $ oc mirror -c <image_set_configuration> file://<file_path> --v2

    其中

    <image_set_configuration>

    指定镜像集配置文件的名称。

    <file_path>

    指定将在其中生成包含镜像集的存档的目录。

验证
  1. 导航到生成的<file_path>目录。

  2. 验证存档文件是否已生成。

后续步骤
  • 从磁盘镜像到镜像

从磁盘镜像到镜像

您可以使用 oc-mirror 插件 v2 将镜像集从磁盘镜像到目标镜像注册表。

oc-mirror 插件 v2 从本地磁盘检索容器镜像,并将它们传输到指定的镜像注册表。

步骤
  1. 将包含镜像镜像集的磁盘传输到包含目标镜像注册表的环境。

  2. 处理磁盘上的镜像集文件,并通过运行以下命令将内容镜像到目标镜像注册表

    $ oc mirror -c <image_set_configuration> --from file://<file_path> docker://<mirror_registry_url> --v2

    其中

    <image_set_configuration>

    指定镜像集配置文件的名称。

    <file_path>

    指定磁盘上包含存档的目录。此文件夹还将包含为您生成的集群资源,以便应用于集群,例如 ImageDigestMirrorSet (IDMS) 或 ImageTagMirrorSet (ITMS) 资源。

    <mirror_registry_url>

    指定存储镜像的镜像注册表的 URL 或地址。

验证
  1. 导航到在<file_path>目录中生成的working-dir目录内的cluster-resources目录。

  2. 验证ImageDigestMirrorSetImageTagMirrorSetCatalogSource资源的 YAML 文件是否存在。

后续步骤
  • 配置您的集群以使用 oc-mirror 插件 v2 生成的资源。

关于 v2 生成的自定义资源

使用 oc-mirror 插件 v2,如果镜像集的至少一个镜像通过摘要进行镜像,则默认情况下会生成ImageDigestMirrorSet (IDMS) 资源。如果镜像集中的至少一个镜像通过标签进行镜像,则会生成ImageTagMirrorSet (ITMS) 资源。

Operator Lifecycle Manager (OLM) 使用CatalogSource资源来检索有关镜像注册表中可用 Operator 的信息。

OpenShift 更新服务使用UpdateService资源向断开连接的环境提供更新图数据。

配置您的集群以使用 oc-mirror 插件 v2 生成的资源

将镜像集镜像到镜像注册表后,必须将生成的ImageDigestMirrorSet (IDMS)、ImageTagMirrorSet (ITMS)、CatalogSourceUpdateService资源应用到集群。

在 oc-mirror 插件 v2 中,IDMS 和 ITMS 文件涵盖整个镜像集,这与 oc-mirror 插件 v1 中的ImageContentSourcePolicy (ICSP) 文件不同。因此,即使您在增量镜像期间仅添加新镜像,IDMS 和 ITMS 文件也包含该集的所有镜像。

先决条件
  • 您可以作为具有cluster-admin角色的用户访问集群。

步骤
  1. 以具有cluster-admin角色的用户身份登录到 OpenShift CLI。

  2. 通过运行以下命令将结果目录中的 YAML 文件应用到集群

    $ oc apply -f <path_to_oc_mirror_workspace>/working-dir/cluster-resources
验证
  1. 通过运行以下命令验证ImageDigestMirrorSet资源是否已成功安装

    $ oc get imagedigestmirrorset
  2. 通过运行以下命令验证ImageTagMirrorSet资源是否已成功安装

    $ oc get imagetagmirrorset
  3. 通过运行以下命令验证CatalogSource资源是否已成功安装

    $ oc get catalogsource -n openshift-marketplace

一旦您的集群配置为使用 oc-mirror 插件 v2 生成的资源,请参阅后续步骤,了解您可以使用镜像映像执行的任务。

从断开连接的环境中删除映像

如果您之前已使用 oc-mirror 插件 v2 部署了映像,您可以删除这些映像以释放镜像注册表中的空间。oc-mirror 插件 v2 不会自动修剪 `ImageSetConfiguration` 文件中未包含的映像。这可以防止在更改 `ImageSetConfig.yaml` 文件时意外删除必要的或已部署的映像。

您必须创建一个 `DeleteImageSetConfiguration` 文件来指定要删除的映像。

在以下示例中,`DeleteImageSetConfiguration` 文件将删除以下映像:

  • OpenShift Container Platform 4.13.3 的所有发行版映像。

  • `redhat-operator-index` `v4.12` 目录映像。

  • `aws-load-balancer-operator` v0.0.1 软件包及其所有相关映像。

  • 通过其对应的摘要引用的 `ubi` 和 `ubi-minimal` 的附加映像。

示例 `DeleteImageSetConfiguration` 文件
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

考虑使用镜像到磁盘和磁盘到镜像的工作流程来减少镜像问题。

oc-mirror 插件 v2 仅删除映像的清单,不会减少注册表中占用的存储空间。

要释放不需要的映像(例如已删除清单的映像)的存储空间,必须在容器注册表上启用垃圾收集器。启用垃圾收集器后,注册表将删除不再引用任何清单的映像块,从而减少先前被删除块占用的存储空间。启用垃圾收集器的过程取决于您的容器注册表。

要在删除 Operator 映像时跳过删除 Operator 目录映像,必须在 `DeleteImageSetConfiguration` 文件中列出 Operator 目录映像下的特定 Operator。这确保仅删除指定的 Operator,而不是目录映像。

如果仅指定 Operator 目录映像,则将删除该目录中的所有 Operator 以及目录映像本身。

从断开连接的环境中删除映像

要使用 oc-mirror 插件 v2 从断开连接的环境中删除映像,请按照以下步骤操作。

先决条件
  • 您已在环境中启用垃圾回收以删除不再引用清单的映像。

步骤
  1. 创建一个 `delete-image-set-config.yaml` 文件并包含以下内容:

    `DeleteImageSetConfiguration` 文件
    apiVersion: mirror.openshift.io/v2alpha1
    kind: DeleteImageSetConfiguration
    delete:
      platform:
        channels:
          - name: <channel_name> (1)
            minVersion: <channel_min_version> (2)
            maxVersion: <channel_max_version> (2)
      operators:
        - catalog: <operator_catalog_name> (3)
          packages:
          - name: <operator_name> (4)
             minVersion: <operator_max_version> (5)
             maxVersion: <operator_min_version> (5)
      additionalImages:
        - name: <additional_images> (6)
    1 指定要删除的 OpenShift Container Platform 通道的名称,例如 `stable-4.15`。
    2 指定要在通道内删除的映像的版本范围,例如 `4.15.0` 为最小版本,`4.15.1` 为最大版本。要仅删除一个版本的映像,请对 `minVersion` 和 `maxVersion` 字段使用该版本号。
    3 指定要删除的 Operator 目录映像,例如 `registry.redhat.io/redhat/redhat-operator-index:v4.14`。要删除目录映像,您必须不要使用 `delete.operators.packages` 参数指定单个 Operator。
    4 指定要删除的特定 Operator 软件包,例如 `aws-load-balancer-operator`。如果您指定单个 Operator,则不会删除 Operator 目录映像。
    5 指定要为 Operator 删除的映像的版本范围,例如 `0.0.1` 为最小版本,`0.0.2` 为最大版本。要仅删除一个版本的映像,请对 `minVersion` 和 `maxVersion` 字段使用该版本号。
    6 指定要删除的其他映像,例如 `registry.redhat.io/ubi9/ubi-init:latest`。
  2. 通过运行以下命令创建 `delete-images.yaml` 文件:

    $ oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>

    其中

    <之前镜像的工作文件夹>

    指定映像之前镜像到或在镜像过程中存储到的目录。

    <远程注册表>

    指定将从中删除映像的远程容器注册表的 URL 或地址。

  3. 转到已创建的 `<之前镜像的工作文件夹>/delete` 目录。

  4. 验证是否已生成 `delete-images.yaml` 文件。

  5. 手动确保文件中列出的每个映像不再被集群需要,并且可以安全地从注册表中删除。

  6. 生成 `delete-images` YAML 文件后,通过运行以下命令从远程注册表中删除映像:

    $ oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/working-dir/delete/delete-images.yaml docker://<remote_registry>

    其中

    <之前镜像的工作文件夹>

    指定映像之前镜像到或在镜像过程中存储到的目录。

    <远程注册表>

    指定将从中删除映像的远程容器注册表的 URL 或地址。

    使用镜像到镜像方法镜像映像时,映像不会缓存在本地,因此您无法从本地缓存中删除映像。

验证您选择的镜像

您可以使用 oc-mirror 插件 v2 执行测试运行(预运行),该运行不会实际镜像任何映像。这使您可以查看将要镜像的映像列表。您还可以使用预运行尽早发现映像集配置中的任何错误。在镜像到磁盘工作流程上运行预运行时,oc-mirror 插件 v2 会检查映像集中所有映像在其缓存中是否可用。任何缺失的映像都列在 `missing.txt` 文件中。在镜像之前执行预运行时,`missing.txt` 和 `mapping.txt` 文件都包含相同的映像列表。

执行 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>`:插入工作区路径的地址。

    • `<mirror_registry_url>`:插入将从中删除映像的远程容器注册表的 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
验证
  1. 导航到已生成的工作区目录。

    $ cd <oc_mirror_workspace_path>
  2. 查看已生成的 `mapping.txt` 和 `missing.txt` 文件。这些文件包含将要镜像的所有映像的列表。

oc-mirror 插件 v2 错误的故障排除

oc-mirror 插件 v2 现在将所有映像镜像错误记录在单独的文件中,从而更容易跟踪和诊断故障。

当镜像发行版或发行版组件映像时发生错误时,这些错误是严重的。这会立即停止镜像过程。

镜像 Operator、与 Operator 相关的映像或附加映像的错误不会停止镜像过程。镜像将继续进行,oc-mirror 插件 v2 每 8 个映像更新一次日志。

当映像镜像失败,并且该映像作为一个或多个 Operator 软件包的一部分镜像时,oc-mirror 插件 v2 会通知用户哪些 Operator 不完整,从而清楚地说明受错误影响的 Operator 软件包。

步骤
  1. 检查服务器相关问题

    错误示例
    [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://127.0.0.1:5000/v2/": http: server gave HTTP response to HTTPS client
    1. 打开位于 oc-mirror 插件 v2 输出目录中的 `working-dir/logs` 文件夹中的 `mirroring_error_date_time.log` 文件。

    2. 查找通常指示服务器端问题的错误消息,例如 `HTTP 500` 错误、令牌过期或超时。

    3. 如果问题仍然存在,请重试镜像过程或联系支持人员。

  2. 检查 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://127.0.0.1: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://127.0.0.1:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
    1. 检查控制台或日志文件中指示哪些 Operator 不完整的警告。

      如果 Operator 被标记为不完整,则与该 Operator 相关的映像可能镜像失败。

    2. 手动镜像缺失的映像或重试镜像过程。

  3. 检查与生成的集群资源相关的错误。即使某些镜像镜像失败,oc-mirror v2 仍将为成功镜像的镜像生成集群资源,例如IDMS.yamlITMS.yaml 文件。

    1. 检查输出目录中的生成文件。

    2. 如果特定镜像缺少这些文件,请确保镜像过程中这些镜像没有出现严重错误。

按照这些步骤,您可以更好地诊断问题并确保镜像过程更顺畅。

飞地支持的优势

飞地支持将内部访问权限限制在网络的特定部分。与允许通过防火墙边界进行入站和出站流量访问的非军事区 (DMZ) 网络不同,飞地不会跨越防火墙边界。

飞地支持仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

新的飞地支持功能适用于需要为位于至少一个中间断开连接的网络后面的多个飞地镜像内容的场景。

飞地支持具有以下优势:

  • 您可以为多个飞地镜像内容,并将其集中在一个内部注册表中。由于某些客户希望对镜像的内容运行安全检查,因此通过此设置,他们可以一次性运行所有这些检查。然后在将内容镜像到下游飞地之前对其进行验证。

  • 您可以直接从集中的内部注册表将内容镜像到飞地,而无需为每个飞地从互联网重新启动镜像过程。

  • 您可以最大限度地减少网络阶段之间的数据传输,以确保仅将 Blob 或镜像从一个阶段传输到另一个阶段一次。

飞地镜像工作流程

Enclave Support

之前的图像概述了在不同环境中使用 oc-mirror 插件的流程,包括具有和不具有互联网连接的环境。

具有互联网连接的环境:

  1. 用户执行 oc-mirror 插件 v2 以将内容从在线注册表镜像到本地磁盘目录。

  2. 镜像的内容被保存到磁盘中,以便传输到离线环境。

断开连接的企业环境(无互联网):

  • 流程 1

    • 用户运行 oc-mirror 插件 v2 将从在线环境传输的磁盘目录中的镜像内容加载到enterprise-registry.in 注册表中。

  • 流程 2

    1. 更新registries.conf 文件后,用户执行 oc-mirror 插件 v2 将内容从enterprise-registry.in 注册表镜像到飞地环境。

    2. 内容被保存到磁盘目录中,以便传输到飞地。

飞地环境(无互联网):

  • 用户运行 oc-mirror 插件 v2 将内容从磁盘目录加载到enclave-registry.in 注册表中。

该图像直观地表示了跨这些环境的数据流,并强调了使用 oc-mirror 处理没有互联网连接的断开连接和飞地环境。

镜像到飞地

将镜像到飞地时,必须首先将必要的镜像从一个或多个飞地传输到企业中央注册表。

中央注册表位于安全网络(特别是断开连接的环境)中,并且没有直接链接到公共互联网。但用户必须在可以访问公共互联网的环境中执行oc mirror

步骤
  1. 在断开连接的环境中运行 oc-mirror 插件 v2 之前,请创建registries.conf 文件。该文件的 TOML 格式在此规范中进行了描述。

    建议将文件存储在$HOME/.config/containers/registries.conf/etc/containers/registries.conf 下。

    registries.conf 示例
    [[registry]]
    location="registry.redhat.io"
    [[registry.mirror]]
    location="<enterprise-registry.in>"
    
    [[registry]]
    location="quay.io"
    [[registry.mirror]]
    location="<enterprise-registry.in>"
  2. 生成镜像存档。

    1. 要将所有 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) 或其他协议。

  3. 传输存档完成后,您可以再次执行 oc-mirror 插件 v2 以将相关的存档内容镜像到注册表(示例中的entrerpise_registry.in),如下例所示:

    $ oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/

    其中:

    • --from 指向包含存档的文件夹。它以file:// 开头。

    • docker:// 是镜像的目标,它是最终参数。因为它是一个 Docker 注册表。

    • -c--config)是必需参数。它使 oc-mirror 插件 v2 最终只能将存档的子部分镜像到注册表。一个存档可能包含多个 OpenShift Container Platform 版本,但断开连接的环境或飞地可能只镜像几个版本。

  4. 准备imageSetConfig YAML 文件,该文件描述要镜像到飞地的内容。

    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

    必须在可以访问断开连接的注册表的机器上运行 oc-mirror 插件 v2。在前面的示例中,断开连接的环境enterprise-registry.in 是可访问的。

  5. 更新图 URL

    如果您使用的是graph:true,oc-mirror 插件 v2 将尝试访问cincinnati API 端点。由于此环境已断开连接,因此请确保导出环境变量UPDATE_URL_OVERRIDE 以引用 OpenShift 更新服务 (OSUS) 的 URL。

    $ export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph

    有关在 OpenShift 集群上设置 OSUS 的更多信息,请参见“使用 OpenShift 更新服务更新断开连接的环境中的集群”。

    在 OpenShift Container Platform 扩展更新支持 (EUS) 版本之间更新时,还必须包含当前版本和目标版本之间中间次要版本的镜像。oc-mirror 插件 v2 可能并不总是自动检测到此要求,因此请检查Red Hat OpenShift Container Platform 更新图页面 以确认任何所需的中间版本。

    使用“更新图表”页面查找应用程序建议的中间次要版本,并在使用 oc-mirror 插件 v2 时将这些版本中的任何一个包含在ImageSetConfiguration文件中。

  6. 从企业注册表为飞地生成镜像存档。

    要为enclave1准备存档,用户可以使用该飞地特有的imageSetConfiguration在企业断开连接的环境中执行 oc-mirror 插件 v2。这确保了只有该飞地需要的镜像才会被镜像。

    $ oc mirror --v2 -c isc-enclave.yaml
    file:///disk-enc1/

    此操作会将所有 OpenShift Container Platform 内容收集到一个存档中,并在磁盘上生成一个存档。

  7. 存档生成后,它将被传输到enclave1网络。传输机制不是 oc-mirror 插件 v2 的责任。

  8. 将镜像内容镜像到飞地注册表

    存档传输完成后,用户可以再次执行 oc-mirror 插件 v2,以便将相关的存档内容镜像到注册表。

    $ oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in

    enclave1中 OpenShift Container Platform 集群的管理员现在可以安装或升级该集群了。

操作符目录中的过滤工作原理

oc-mirror 插件 v2 通过处理imageSetConfig中的信息来选择要镜像的捆绑包列表。

当 oc-mirror 插件 v2 选择要镜像的捆绑包时,它不会推断组版本种类 (GVK) 或捆绑包依赖关系,而是将它们从镜像集中省略。相反,它严格遵守用户指令。您必须明确指定任何所需的依赖包及其版本。

捆绑包版本通常使用语义版本控制标准 (SemVer),您可以按版本对通道内的捆绑包进行排序。您可以在ImageSetConfig中选择落在特定范围内的捆绑包。

此选择算法确保与 oc-mirror 插件 v1 相比结果一致。但是,它不包括升级图表详细信息,例如replacesskipskipRange。这种方法与 OLM 算法不同。由于minVersionmaxVersion之间的升级路径可能较短,因此它可能镜像比升级集群所需更多捆绑包。

表 1. 使用下表查看不同场景中包含哪些捆绑包版本
ImageSetConfig 操作符过滤 预期的捆绑包版本

场景 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

默认通道中的所有捆绑包,从minVersion到该包的通道头部,不依赖于升级图表的最近路径。

场景 6

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        maxVersion: 6.0.0

默认通道中低于该包的maxVersion的所有捆绑包。

场景 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

默认通道中该包的minVersionmaxVersion之间的所有捆绑包。即使过滤中包含多个通道,也不会包含通道的头部。

场景 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

在该包的所选通道内,从minVersion到通道头部的所有版本。此场景不依赖于升级图表的最近路径。

场景 12

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
            maxVersion: 6.0.0

在该包的所选通道内,直到maxVersion的所有版本(不依赖于升级图表的最近路径)。即使过滤中包含多个通道,也不会包含通道的头部。

场景 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

在该包的所选通道内,minVersionmaxVersion之间的所有版本,不依赖于升级图表的最近路径。即使过滤中包含多个通道,也不会包含通道的头部。

场景 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

不要使用此场景。不允许使用minVersionmaxVersion按通道和按包进行过滤。

场景 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

不要使用此场景。您不能使用full:trueminVersionmaxVersion进行过滤。

场景 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

不要使用此场景。您不能使用full:trueminVersionmaxVersion进行过滤。

oc-mirror 插件 v2 的ImageSet配置参数

oc-mirror 插件 v2 需要一个镜像集配置文件来定义要镜像的镜像。下表列出了ImageSetConfiguration资源的可用参数。

使用minVersionmaxVersion属性过滤特定 Operator 版本范围可能会导致多个通道头错误。错误消息指出存在多个通道头。这是因为应用过滤器时,Operator 的更新图表被截断。

OLM 要求每个 Operator 通道包含形成更新图表的版本,该图表只有一个端点,即 Operator 的最新版本。应用过滤器范围后,该图表可能会变成两个或多个单独的图表,或者一个具有多个端点的图表。

为避免此错误,请勿过滤掉 Operator 的最新版本。如果您仍然遇到此错误,则根据 Operator 的不同,需要增加maxVersion属性或减小minVersion属性。由于每个 Operator 图表可能不同,您可能需要调整这些值,直到错误解决。

表 2. ImageSetConfiguration 参数
参数 描述

apiVersion

ImageSetConfiguration内容的 API 版本。

字符串示例:mirror.openshift.io/v2alpha1

archiveSize

镜像集内每个存档文件的最大大小(以 GiB 为单位)。

整数示例:4

kubeVirtContainer

设置为true时,包含来自 HyperShift KubeVirt CoreOS 容器的镜像。

布尔值示例 ImageSetConfiguration 文件

apiVersion: mirror.openshift.io/v2alpha1
kind: ImageSetConfiguration
mirror:
  platform:
    channels:
    - name: stable-4.16
      minVersion: 4.16.0
      maxVersion: 4.16.0
    kubeVirtContainer: true

mirror

镜像集的配置。

对象

mirror.additionalImages

镜像集的附加镜像配置。

对象数组

示例

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest

mirror.additionalImages.name

要镜像的镜像的标签或摘要。

字符串示例:registry.redhat.io/ubi8/ubi:latest

mirror.blockedImages

要阻止镜像的镜像的完整标签、摘要或模式。

字符串数组示例:docker.io/library/alpine

mirror.operators

镜像集的操作符配置。

对象数组

示例

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17
    packages:
      - name: elasticsearch-operator
        minVersion: '2.4.0'

mirror.operators.catalog

要包含在镜像集中的 Operator 目录。

字符串示例:registry.redhat.io/redhat/redhat-operator-index:v4.15

mirror.operators.full

true时,下载完整的目录、Operator 包或 Operator 通道。

布尔值 默认值为false

mirror.operators.packages

Operator 包配置。

对象数组

示例

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17
    packages:
      - name: elasticsearch-operator
        minVersion: '5.2.3-31'

mirror.operators.packages.name

要包含在镜像集中的 Operator 包名称。

字符串示例:elasticsearch-operator

mirror.operators.packages.channels

操作符包通道配置

对象

mirror.operators.packages.channels.name

操作符通道名称,在包内唯一,包含在镜像集中。

字符串示例:faststable-v4.15

mirror.operators.packages.channels.maxVersion

操作符镜像在所有包含它的通道中的最高版本。

字符串示例:5.2.3-31

mirror.operators.packages.channels.minVersion

操作符镜像在所有包含它的通道中的最低版本

字符串示例:5.2.3-31

mirror.operators.packages.maxVersion

操作符镜像在所有包含它的通道中的最高版本。

字符串示例:5.2.3-31

mirror.operators.packages.minVersion

操作符镜像在所有包含它的通道中的最低版本。

字符串示例:5.2.3-31

mirror.operators.packages.bundles

选择的bundle配置

对象数组

示例

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17
    packages:
    - name: 3scale-operator
      bundles:
      - name: 3scale-operator.v0.10.0-mas

mirror.operators.packages.bundles.name

选择用于镜像的bundle名称(在目录中显示的名称)。

字符串示例:3scale-operator.v0.10.0-mas

mirror.operators.targetCatalog

镜像引用的目录的替代名称和可选的命名空间层次结构

字符串示例:my-namespace/my-operator-catalog

mirror.operators.targetCatalogSourceTemplate

磁盘上用于模板的路径,用于完成oc-mirror插件v2生成的catalogSource自定义资源。

字符串示例:/tmp/catalog-source_template.yaml 模板文件示例

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: discarded
  namespace: openshift-marketplace
spec:
  image: discarded
  sourceType: grpc
  updateStrategy:
    registryPoll:
      interval: 30m0s

mirror.operators.targetTag

附加到targetNametargetCatalog 的替代标签。

字符串示例:v1

mirror.platform

镜像集的平台配置。

对象

mirror.platform.architectures

要镜像的平台发行版负载的架构。

字符串数组示例

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x

默认值为amd64。值为multi确保镜像支持所有可用的架构,无需指定单个架构。

mirror.platform.channels

镜像集的平台通道配置。

对象数组示例

channels:
  - name: stable-4.12
  - name: stable-4.17

mirror.platform.channels.full

true时,将minVersion设置为通道中的第一个发行版,将maxVersion设置为通道中的最后一个发行版。

布尔值 默认值为false

mirror.platform.channels.name

发行版通道的名称

字符串示例:stable-4.15

mirror.platform.channels.minVersion

要镜像的引用的平台的最低版本。

字符串示例:4.12.6

mirror.platform.channels.maxVersion

要镜像的引用的平台的最高版本。

字符串示例:4.15.1

mirror.platform.channels.shortestPath

切换最短路径镜像或全范围镜像。

布尔值 默认值为false

mirror.platform.channels.type

要镜像的平台的类型

字符串示例:ocpokd。默认为ocp

mirror.platform.graph

指示是否将OSUS图添加到镜像集并随后发布到镜像。

布尔值 默认值为false

删除ImageSet配置参数

要使用oc-mirror插件v2,必须具有删除镜像集配置文件,该文件定义要从镜像注册表中删除哪些镜像。下表列出了DeleteImageSetConfiguration资源的可用参数。

表3. DeleteImageSetConfiguration参数
参数 描述

apiVersion

DeleteImageSetConfiguration内容的API版本。

字符串示例:mirror.openshift.io/v2alpha1

delete

要删除的镜像集的配置。

对象

delete.additionalImages

要删除的镜像集的其他镜像配置。

对象数组示例

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest

delete.additionalImages.name

要删除的镜像的标签或摘要。

字符串示例:registry.redhat.io/ubi8/ubi:latest

delete.operators

要删除的镜像集的操作符配置。

对象数组示例

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version}
    packages:
      - name: elasticsearch-operator
        minVersion: '2.4.0'

delete.operators.catalog

要包含在要删除的镜像集中的操作符目录。

字符串示例:registry.redhat.io/redhat/redhat-operator-index:v4.15

delete.operators.full

如果为true,则删除完整的目录、操作符包或操作符通道。

布尔值 默认值为false

delete.operators.packages

操作符包配置

对象数组示例

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version}
    packages:
      - name: elasticsearch-operator
        minVersion: '5.2.3-31'

delete.operators.packages.name

要包含在要删除的镜像集中的操作符包名称。

字符串示例:elasticsearch-operator

delete.operators.packages.channels

操作符包通道配置

对象

delete.operators.packages.channels.name

操作符通道名称,在包内唯一,包含在要删除的镜像集中。

字符串示例:faststable-v4.15

delete.operators.packages.channels.maxVersion

要在选定通道中删除的操作符的最高版本。

字符串示例:5.2.3-31

delete.operators.packages.channels.minVersion

要在选择中删除的操作符的最低版本。

字符串示例:5.2.3-31

delete.operators.packages.maxVersion

在所有包含它的通道中要删除的操作符的最高版本。

字符串示例:5.2.3-31

delete.operators.packages.minVersion

在所有包含它的通道中要删除的操作符的最低版本。

字符串示例:5.2.3-31

delete.operators.packages.bundles

选择的bundle配置

对象数组

不能为同一个操作符同时选择通道和bundle。

示例

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version}
    packages:
    - name: 3scale-operator
      bundles:
      - name: 3scale-operator.v0.10.0-mas

delete.operators.packages.bundles.name

选择要删除的bundle的名称(在目录中显示的名称)

字符串示例:3scale-operator.v0.10.0-mas

delete.platform

镜像集的平台配置

对象

delete.platform.architectures

要删除的平台发行版负载的架构。

字符串数组示例

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x

默认值为amd64

delete.platform.channels

镜像集的平台通道配置。

对象数组

示例

channels:
  - name: stable-4.12
  - name: stable-4.17

delete.platform.channels.full

true时,将minVersion设置为通道中的第一个发行版,将maxVersion设置为通道中的最后一个发行版。

布尔值 默认值为false

delete.platform.channels.name

发行版通道的名称

字符串示例:stable-4.15

delete.platform.channels.minVersion

要删除的引用的平台的最低版本。

字符串示例:4.12.6

delete.platform.channels.maxVersion

要删除的引用的平台的最高版本。

字符串示例:4.15.1

delete.platform.channels.shortestPath

在删除最短路径和删除全范围之间切换。

布尔值 默认值为false

delete.platform.channels.type

要删除的平台的类型

字符串示例:ocpokd 默认值为ocp

delete.platform.graph

确定是否也从镜像注册表中删除OSUS图。

布尔值 默认值为false

oc-mirror插件v2的命令参考

下表描述了oc-mirror插件v2的oc mirror子命令和标志

表4. oc-mirror插件v2的子命令和标志
子命令 描述

help

显示关于任何子命令的帮助

version

输出oc-mirror版本

delete

删除远程注册表和本地缓存中的镜像。

表5. oc mirror标志
标志 描述

--authfile

显示身份验证文件的字符串路径。默认为${XDG_RUNTIME_DIR}/containers/auth.json

-c, --config <string>

指定镜像集配置文件的路径。

--dest-tls-verify

访问容器注册表或守护程序时,需要 HTTPS 并验证证书。

--dry-run

打印操作,但不镜像镜像。

--from <string>

指定由执行 oc-mirror 插件 v2 生成的镜像集存档的路径,用于加载目标注册表。

-h, --help

显示帮助信息。

--loglevel

显示字符串日志级别。支持的值包括 info、debug、trace、error。默认值为info

-p, --port

确定 oc-mirror 插件 v2 本地存储实例使用的 HTTP 端口。默认值为55000

--max-nested-paths <int>

指定限制嵌套路径的目标注册表的最大嵌套路径数。默认值为0

--secure-policy

默认值为false。如果设置非默认值,则命令启用签名验证,这是签名验证的安全策略。

--since

包含自指定日期(格式:yyyy-mm-dd)以来的所有新内容。如果未提供,则镜像自上次镜像以来的新内容。

--src-tls-verify

访问容器注册表或守护程序时,需要 HTTPS 并验证证书。

--strict-archive

默认值为false。如果设置了值,则命令生成的存档严格小于在imageSetConfig自定义资源 (CR) 中设置的archiveSize。如果要存档的文件超过archiveSize (GB),则镜像会出错。

-v, --version

显示 oc-mirror 插件 v2 的版本。

--workspace

确定 oc-mirror 插件 v2 工作区(字符串),资源和内部工件在此生成。

后续步骤

使用 oc-mirror 插件 v2 将镜像镜像到您的断开连接的环境后,您可以执行以下任何操作: