3.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)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

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

3.5.1. 关于 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)资源,这些资源覆盖了使用 v1 的每个镜像集合的镜像集,而不是 ImageContentSourcePolicy (ICSP)资源,它包括了对每个镜像操作设置的增量更改。
  • 保存根据捆绑包名称过滤的 Operator 版本。
  • 不执行自动修剪。v2 现在使用 Delete 功能,这可让用户更好地控制对镜像进行删除。
  • 引入了对 registry.conf 文件的支持。此更改有助于在使用相同的缓存时镜像到多个 enclaves。

3.5.1.1. 高级别工作流

以下步骤概述了如何使用 oc-mirror 插件 v2 将镜像 mirror 到 mirror registry 的高级别工作流:

  1. 创建镜像设置配置文件。
  2. 使用以下工作流之一将镜像设置为目标镜像 registry:

    • 将镜像直接设置为目标镜像 registry (mirror 到 mirror)。
    • 将镜像设置为 disk (mirror to disk),将 tar 文件传送到目标环境,然后将镜像设置为目标镜像 registry (disk to mirror)。
  3. 配置集群以使用 oc-mirror 插件 v2 生成的资源。
  4. 根据需要重复这些步骤以更新目标镜像 registry。

3.5.1.2. 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 版本是什么。

3.5.2. 先决条件

  • 您必须在托管 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 集群的生产环境可用性一致。

3.5.3. 准备您的镜像主机

要将 oc-mirror 插件 v2 用于镜像镜像,您需要安装插件并使用容器镜像凭证创建文件,使您能够从红帽镜像到您的镜像。

3.5.3.1. 安装 oc-mirror OpenShift CLI 插件

安装 oc-mirror OpenShift CLI 插件以在断开连接的环境中管理镜像集。

先决条件

  • 已安装 OpenShift CLI(oc)。如果您在完全断开连接的环境中镜像镜像集,请确保以下内容:

    • 您已在可访问互联网的主机上安装了 oc-mirror 插件。
    • 在断开连接的环境中的主机可以访问目标镜像 registry。
  • 您已在使用 oc-mirror 的操作系统中,将 umask 参数设置为 0022
  • 您已为您要使用的 RHEL 版本安装了正确的二进制文件。

流程

  1. 下载 oc-mirror CLI 插件:

    1. 进入到 Red Hat Hybrid Cloud Console 的 Downloads 页。
    2. OpenShift disconnected installation tools 部分中,从下拉菜单中选择 OpenShift Client (oc) mirror pluginOS typeArchitecture type
    3. Download 保存文件。
  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

3.5.3.2. 配置允许对容器镜像进行镜像的凭证

创建容器镜像 registry 凭证文件,可让您将镜像从红帽 mirror 到您的镜像。

警告

安装集群时不要使用此镜像 registry 凭据文件作为 pull secret。如果在安装集群时提供此文件,集群中的所有机器都将具有镜像 registry 的写入权限。

先决条件

  • 您已将镜像 registry 配置为在断开连接的环境中使用。
  • 您在镜像 registry 中标识了镜像仓库的位置,以将容器镜像镜像(mirror)到这个位置。
  • 您置备了一个镜像 registry 帐户,允许将镜像上传到该镜像仓库。
  • 对镜像 registry 有写权限。

流程

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

  1. 从 Red Hat OpenShift Cluster Manager 下载 registry.redhat.io pull secret
  2. 运行以下命令,以 JSON 格式生成 pull secret 副本:

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
    1
    指定到存储 pull secret 的文件夹的路径,以及您创建的 JSON 文件的名称。

    pull secret 示例

    {
      "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"
        }
      }
    }

  3. 如果 $XDG_RUNTIME_DIR/containers 目录不存在,请输入以下命令来创建:

    $ mkdir -p $XDG_RUNTIME_DIR/containers
  4. 将 pull secret 文件保存为 $XDG_RUNTIME_DIR/containers/auth.json
  5. 运行以下命令,为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:

    $ echo -n '<user_name>:<password>' | base64 -w0 1
    1
    通过 <user_name><password> 指定 registry 的用户名和密码。

    输出示例

    BGVtbYk3ZHAtqXs=

  6. 编辑 JSON 文件并添加描述 registry 的部分:

      "auths": {
        "<mirror_registry>": { 1
          "auth": "<credentials>", 2
          "email": "you@example.com"
        }
      },
    1
    指定 registry 域名,以及您的镜像 registry 用来提供内容的可选端口。例如:registry.example.comregistry.example.com:8443
    2
    指定镜像 registry 的 base64 编码用户名和密码。

    修改的 pull secret 示例

    {
      "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"
        }
      }
    }

3.5.4. 将镜像集镜像(mirror)到镜像 registry

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

3.5.4.1. 创建镜像设置配置

在使用 oc-mirror 插件 v2 mirror 镜像之前,必须先创建镜像设置配置文件。此镜像设置配置文件定义哪些 OpenShift Container Platform 发行版本、Operator 和其他要 mirror 的镜像,以及 oc-mirror 插件 v2 的其他配置设置。

先决条件

  • 您已创建了容器镜像 registry 凭证文件。具体步骤,请参阅配置允许镜像镜像的凭证

流程

  • 创建 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 镜像推送到镜像 registry。创建 OpenShift Update Service (OSUS) 需要 graph-data 镜像。graph: true 字段还会生成 UpdateService 自定义资源清单。oc 命令行界面 (CLI) 可以使用 UpdateService 自定义资源清单来创建 OSUS。如需更多信息,请参阅关于 OpenShift Update Service
    3
    将 Operator 目录设置为从中检索 OpenShift Container Platform 镜像。
    4
    仅指定要包含在镜像集中的某些 Operator 软件包。删除此字段以检索目录中的所有软件包。
    5
    指定要在镜像集中包含的任何其他镜像。

3.5.4.2. 在部分断开连接的环境中镜像设置的镜像

您可以在带有受限互联网访问的环境中使用 oc-mirror 插件 v2 将镜像集镜像到 registry。

先决条件

  • 在运行 oc-mirror 插件 v2 的环境中,您可以访问互联网和镜像 registry。

流程

  • 运行以下命令,将指定镜像设置配置中的镜像镜像到指定的 registry:

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

    其中:

    <image_set_configuration>
    指定镜像设置配置文件的名称。
    <file_path>
    指定生成集群资源的目录。
    <mirror_registry_url>
    指定镜像存储并从中删除镜像 registry 的 URL 或地址。

验证

  1. 进入 <file_path> 目录中生成的 working-dir/cluster-resources 目录。
  2. 验证 ImageDigestMirrorSetImageTagMirrorSetCatalogSource 资源是否存在 YAML 文件。

后续步骤

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

3.5.4.3. 镜像在完全断开连接的环境中设置的镜像

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

  1. Mirror to disk :将镜像集 mirror 到一个存档。
  2. Disk transfer :手动将存档传输到断开连接的镜像 registry 的网络。
  3. Disk to mirror: 将存档中的镜像集 mirror 到目标断开连接的 registry。
3.5.4.3.1. 从镜像镜像到磁盘

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

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

流程

  • 运行以下命令,将指定镜像集配置中的镜像镜像到磁盘:

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

    其中:

    <image_set_configuration>
    指定镜像设置配置文件的名称。
    <file_path>
    指定在其中生成包含镜像集的存档的目录。

验证

  1. 进入生成的 <file_path> 目录。
  2. 验证存档文件是否已生成。

后续步骤

  • 从磁盘镜像到镜像
3.5.4.3.2. 从磁盘镜像到镜像

您可以使用 oc-mirror 插件 v2 将磁盘中的镜像集镜像到目标镜像 registry。

oc-mirror 插件 v2 从本地磁盘检索容器镜像并将其传送到指定的镜像 registry。

流程

  1. 将包含 mirror 镜像集的磁盘传输到包含目标镜像 registry 的环境。
  2. 运行以下命令,处理磁盘上的镜像集文件,并将内容镜像到目标镜像 registry:

    $ 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>
    指定用于存储镜像的 mirror registry 的 URL 或地址。

验证

  1. 进入到 working-dir 中的 cluster-resources 目录,它在 <file_path> 目录中生成。
  2. 验证 ImageDigestMirrorSetImageTagMirrorSetCatalogSource 资源是否存在 YAML 文件。

后续步骤

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

3.5.5. 关于 v2 生成的自定义资源

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

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

OpenShift Update Service 使用 UpdateService 资源为断开连接的环境提供更新图形数据。

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

在将您的镜像集 mirror 到镜像 registry 后,您必须将生成的 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 生成的资源后,请参阅下一步以了解有关您可以使用 mirror 镜像执行的任务的信息。

3.5.6. 在断开连接的环境中删除镜像

如果您之前使用 oc-mirror 插件 v2 部署镜像,您可以删除这些镜像来释放镜像 registry 中的空间。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 捆绑包及其所有相关镜像。
  • ubiubi-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

重要

考虑使用 mirror-to-disk 和 disk-to-mirror 工作流来减少镜像问题。

oc-mirror 插件 v2 只删除镜像的清单,这不会减少 registry 中占用的存储。

要从不必要的镜像(如带有删除的清单)中释放存储空间,您必须在容器 registry 上启用垃圾收集器。启用垃圾收集器后,registry 将删除不再引用任何清单的镜像 Blob,从而减少之前由已删除 Blob 占用的存储。启用垃圾收集器的过程因容器 registry 而异。

重要
  • 要在删除 Operator 镜像时跳过删除 Operator 目录镜像,您必须在 DeleteImageSetConfiguration 文件中列出 Operator 目录镜像下的特定 Operator。这样可确保只有指定的 Operator 被删除,而不是目录镜像。

    如果只指定 Operator 目录镜像,则该目录中的所有 Operator 以及目录镜像本身都将被删除。

  • oc-mirror 插件 v2 不会自动删除 Operator 目录镜像,因为其他 Operator 可能仍然被部署并依赖于这些镜像。

    如果您不确定目录中的 Operator 没有保留在 registry 或集群中,您可以在 DeleteImageSetConfiguration 中明确将目录镜像添加到 additionalImages 中以移除它。

  • 垃圾回收行为取决于 registry。有些 registry 不会自动删除已删除的镜像,需要系统管理员手动触发垃圾回收来释放空间。

3.5.6.1. 从断开连接的环境中删除镜像

要使用 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> 3
      operators:
        - catalog: <operator_catalog_name> 4
          packages:
          - name: <operator_name> 5
             minVersion: <operator_max_version> 6
             maxVersion: <operator_min_version> 7
      additionalImages:
        - name: <additional_images> 8

    1 1
    指定要删除的 OpenShift Container Platform 频道的名称,如 stable-4.15
    2 3
    指定要在频道中删除的镜像版本范围,例如,4.15.0 为最小版本,4.15.1 为最大版本。要只删除一个版本的镜像,在 minVersionmaxVersion 字段中都使用要删除的版本号。
    4
    指定要删除的 Operator 目录镜像,如 registry.redhat.io/redhat/redhat-operator-index:v4.14。要删除目录镜像,您必须使用 delete.operators.packages 参数指定独立的 Operator。
    5
    指定要删除的特定 Operator 捆绑包,如 aws-load-balancer-operator。如果指定了单独的 Operator,Operator 目录镜像不会被删除。
    6 7
    指定为 Operator 删除的镜像版本范围,如最小版本为 0.0.1,最大版本为0.0.2。要只删除一个版本的镜像,在 minVersionmaxVersion 字段中都使用要删除的版本号。
    8
    指定要删除的额外镜像,如 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>

    其中:

    <previously_mirrored_work_folder>
    指定镜像以前被 mirror 到的或在 mirror 过程中存储镜像的目录。
    <remote_registry>
    指定将从中删除镜像的远程容器 registry 的 URL 或地址。
  3. 进入创建的 <previously_mirrored_work_folder>/delete 目录。
  4. 验证 delete-images.yaml 文件是否已生成。
  5. 手工确保文件中列出的每个镜像不再被集群需要,可以安全地从 registry 中删除。
  6. 生成 delete-images YAML 文件后,运行以下命令来从远程 registry 中删除镜像:

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

    其中:

    <previously_mirrored_work_folder>
    指定镜像以前被 mirror 到的或在 mirror 过程中存储镜像的目录。
    <remote_registry>

    指定将从中删除镜像的远程容器 registry 的 URL 或地址。

    重要

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

3.5.7. 验证您选择的镜像以进行镜像

您可以使用 oc-mirror 插件 v2 执行不实际镜像任何镜像的测试运行(dry run)。这可让您查看要镜像的镜像列表。您也可以在早期使用空运行来捕获与镜像设置配置的任何错误。在镜像到磁盘工作流上运行空运行时,oc-mirror 插件 v2 会检查镜像集中的所有镜像是否在其缓存中可用。missing.txt 文件中列出了任何缺少的镜像。在镜像前执行空运行时,missing.txtmapping.txt 文件都包含相同的镜像列表。

3.5.7.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

验证

  1. 进入生成的工作区目录:

    $ cd <oc_mirror_workspace_path>
  2. 检查生成的 mapping.txtmissing.txt 文件。这些文件包含将要镜像的所有镜像的列表。

3.5.7.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 捆绑包的信息。

流程

  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://localhost: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://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

    1. 在控制台或日志文件中检查相关的警告,以了解哪些 Operator 不完整。

      如果一个 Operator 被标记为不完整,与该 Operator 相关的镜像可能会无法镜像 (mirror)。

    2. 手动镜像(mirror)缺少的镜像或重试镜像 (mirror) 的过程。
  3. 检查与生成的集群资源相关的错误。即使无法镜像(mirror)某些镜像,oc-mirror v2 仍会为已成功镜像(mirror)的镜像生成集群资源,如 IDMS.yamlITMS.yaml 文件。

    1. 在输出目录中检查生成的文件。
    2. 如果特定镜像缺少了这些文件,请确保在镜像(mirror)过程中没有发生关键错误。

按照以下步骤,您可以更好地诊断问题并确保更顺畅地进行镜像。

3.5.8. enclave 支持的好处

enclave 支持限制内部访问网络的特定部分。与一个 demilitarized zone (DMZ)网络不同,它允许通过防火墙界限和出站流量访问,enclaves 不跨防火墙界限。

重要

enclave Support 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

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

新的 enclave 支持功能适用于在至少一个中间断开连接的网络中保护的多个 enclave 时需要镜像(mirror)。

enclave 支持有以下优点:

  • 您可以镜像多个 enclaves 的内容,并将其集中到一个内部 registry 中。因为有些客户希望在镜像的内容上运行安全检查,所以此设置他们可以一次性运行这些检查。然后,在镜像到下游 enclaves 之前,内容会被检查。
  • 您可以直接从集中式内部 registry 中镜像内容,而无需为每个 enclave 重启镜像过程。
  • 您可以最小化网络阶段的数据传输,以确保 Blob 或镜像仅从一个阶段传输到另一个阶段。

3.5.8.1. enclave 镜像工作流

Enclave 支持

上一个镜像概述了在不同环境中使用 oc-mirror 插件的流程,包括在有互联网连接和没有互联网连接的环境中进行。

带有互联网连接的环境

  1. 用户执行 oc-mirror 插件 v2,将在线 registry 的内容镜像到本地磁盘目录。
  2. 镜像内容保存到磁盘中,用于在离线环境中使用。

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

  • 流 1:

    • 用户运行 oc-mirror 插件 v2,从磁盘目录中加载镜像的内容(来自在线的环境)加载到 enterprise-registry.in registry。
  • 流 2:

    1. 更新 registry.conf 文件后,用户执行 oc-mirror 插件 v2 以将来自 enterprise-registry.in registry 的内容镜像到 enclave 环境中。
    2. 内容被保存到一个磁盘目录,用于转移到 enclave。

Enclave 环境 (没有互联网):

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

图显示了跨这些环境的数据流,侧重于使用 oc-mirror 来处理断开连接的环境和没有互联网连接的环境。

3.5.8.2. 镜像到 enclave

当镜像到 enclave 时,您必须首先将必要的镜像从一个或多个 enclaves 传送到企业中央 registry 中。

中央 registry 位于安全网络中,特别是断开连接的环境,且不会直接链接到公共互联网。但是,用户必须在一个可访问公共互联网的环境中执行 oc mirror

流程

  1. 在断开连接的环境中运行 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>"

  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,以便将相关存档内容镜像到 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 可能只镜像几个。
  4. 准备 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

  5. 更新图形 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 在断开连接的环境中更新集群"。

    注意

    当在 OpenShift Container Platform 延长更新支持 (EUS) 版本间进行更新时,还需要包括在当前版本和目标版本间的中间次版本的镜像。oc-mirror 插件 v2 可能并不总是自动检测此要求,因此请检查 Red Hat OpenShift Container Platform Update Graph 页以确认包括了所需的中间版本。

    使用 Update Graph 页查找应用程序推荐的中间次版本,在使用 oc-mirror 插件 v2 时,在 ImageSetConfiguration 文件中包括这些版本。

  6. 为 enclave 从企业 registry 中生成镜像存档。

    要为 enclave1 准备存档,用户使用针对那个 enclave 专用的 imageSetConfiguration 在企业断开连接的环境中执行 oc-mirror 插件 v2。这样可确保仅镜像 enclave 需要的镜像:

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

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

  7. 生成存档后,它将传送到 enclave1 网络。传输机制不是 oc-mirror 插件 v2 的责任。
  8. 将内容镜像到 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 集群的管理员现在可以安装或升级该集群。

3.5.9. 过滤在 Operator 目录中如何工作

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

当 oc-mirror 插件 v2 选择用于镜像的捆绑包时,它不会推断 Group Version Kind (GVK) 或捆绑包依赖项,从镜像集中省略它们。相反,它严格遵循用户指令。您必须明确指定任何所需的依赖软件包及其版本。

捆绑包版本通常使用语义版本标准 (SemVer),您可以根据版本在频道中对捆绑包进行排序。您可以选择位于 ImageSetConfig 中的特定范围的 buncles。

此选择算法确保与 oc-mirror 插件 v1 相比的一致性结果。但是,它不包括升级图形详情,如 replaces, skip, 和 skipRange。这种方法与 OLM 算法不同。它可能会比升级集群所需的更多捆绑包进行镜像(mirror),因为 minVersionmaxVersion 之间的升级路径可能比较短。

表 3.4. 使用下表查看在不同场景中包括哪些捆绑包版本
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

默认频道中的所有捆绑包(从 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 进行过滤。

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

oc-mirror 插件 v2 需要一个镜像设置配置文件,该文件定义哪些镜像要镜像(mirror)。下表列出了 ImageSetConfiguration 资源的可用参数。

注意

使用 minVersionmaxVersion 属性过滤特定 Operator 版本范围可能会导致多个频道头错误。错误信息将显示有多个频道头。这是因为在应用过滤器时,Operator 的更新图会被截断。

OLM 要求每个 Operator 频道都包含组成一个更新图表的版本,它只有一个端点,即 Operator 的最新版本。在应用图形的过滤器范围时,可以进入两个或多个独立图形或具有多个端点的图形。

要避免这个错误,请不要过滤 Operator 的最新版本。如果您仍然遇到错误,具体取决于 Operator,则必须增加 maxVersion 属性,或者 minVersion 属性必须减少。因为每个 Operator 图都可以不同,所以您可能需要调整这些值,直到错误解决为止。

表 3.5. 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

镜像集的额外镜像配置。

对象数组

Example:

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

mirror.additionalImages.name

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

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

mirror.blockedImages

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

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

mirror.operators

镜像集的 Operator 配置。

对象数组

Example:

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 软件包配置。

对象数组

Example:

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

Operator 软件包频道配置

对象

mirror.operators.packages.channels.name

Operator 频道名称(软件包中唯一)要包括在镜像集中。

字符串示例:faststable-v4.15

mirror.operators.packages.channels.maxVersion

Operator 镜像的最高版本,在其中存在所有频道。

字符串示例:5.2.3-31

mirror.operators.packages.channels.minVersion

Operator 的最低版本,用于镜像存在的所有频道

字符串示例:5.2.3-31

mirror.operators.packages.maxVersion

Operator 最高版本,可跨所有存在的频道进行镜像。

字符串示例:5.2.3-31

mirror.operators.packages.minVersion

Operator 的最低版本,用于镜像存在的所有频道。

字符串示例:5.2.3-31

mirror.operators.packages.bundles

选择的捆绑包配置

对象数组

Example:

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

为镜像选择的捆绑包的名称(因为它出现在目录中)。

字符串示例: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

3.5.10.1. 删除 ImageSet 配置参数

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

表 3.6. 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

删除镜像集的 Operator 配置。

对象数组示例:

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

delete.operators.catalog

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

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

delete.operators.full

如果为 true,则删除完整目录、Operator 软件包或 Operator 频道。

布尔值,默认为 false

delete.operators.packages

Operator 软件包配置

对象数组示例:

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

delete.operators.packages.name

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

字符串示例:elasticsearch-operator

delete.operators.packages.channels

Operator 软件包频道配置

对象

delete.operators.packages.channels.name

Operator 频道名称(在软件包中是唯一的)包括在 delete 镜像集中。

字符串示例: faststable-v4.15

delete.operators.packages.channels.maxVersion

在所选频道中删除的 Operator 的最高版本。

字符串示例:5.2.3-31

delete.operators.packages.channels.minVersion

在存在的选择中删除 Operator 的最低版本。

字符串示例:5.2.3-31

delete.operators.packages.maxVersion

在存在的所有频道中删除 Operator 的最高版本。

字符串示例:5.2.3-31

delete.operators.packages.minVersion

在存在的所有频道中删除 Operator 的最低版本。

字符串示例:5.2.3-31

delete.operators.packages.bundles

所选捆绑包配置

对象数组

您不能为同一 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

delete.operators.packages.bundles.name

选择要删除的捆绑包的名称(因为它显示在目录中)

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

delete.platform

镜像集的平台配置

对象

delete.platform.architectures

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

字符串数组示例:

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

默认值为 amd64

delete.platform.channels

镜像集的平台频道配置。

对象数组

Example:

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

确定是否在镜像 registry 上也删除 OSUS 图形。

布尔值,默认为 false

3.5.11. oc-mirror 插件 v2 的命令参考

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

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

帮助

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

version

输出 oc-mirror 版本

delete

删除远程 registry 和本地缓存中的镜像。

表 3.8. oc mirror 标记
标记描述

--authfile

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

-c, --config <string>

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

--dest-tls-verify

在访问容器 registry 或守护进程时,需要 HTTPS 并验证证书。

--dry-run

打印没有 mirror 镜像的操作

--from <string>

指定通过执行 oc-mirror 插件 v2 来加载目标 registry 生成的镜像设置存档的路径。

-h,--help

显示帮助

--loglevel

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

-p, --port

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

--max-nested-paths <int>

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

--secure-policy

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

--since

包含自指定日期以来的所有新内容(格式:yyyy-mm-dd)。如果没有提供,自以前的镜像(mirror)以来的新内容会被镜像。

--src-tls-verify

在访问容器 registry 或守护进程时,需要 HTTPS 并验证证书。

--strict-archive

默认值为 false。如果您设置了值,命令会生成比 imageSetConfig 自定义资源 (CR) 中设置的 archiveSize 的存档。如果正在归档的文件超过 archiveSize (GB),则镜像已存在。

-v, --version

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

--workspace

决定字符串 oc-mirror 插件 v2 工作区,其中生成资源和内部工件。

3.5.12. 后续步骤

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.