3.6. 从 oc-mirror 插件 v1 迁移到 v2


oc-mirror v2 插件对镜像镜像工作流进行了重大更改。本指南为迁移提供了步骤说明,同时确保与 oc-mirror 插件 v2 兼容。

重要

您必须通过修改 API 版本并删除已弃用的字段来手动更新配置。如需更多信息,请参阅"从 oc-mirror 插件 v1 改为 v2"。

3.6.1. 从 oc-mirror 插件 v1 改为 v2

在从 oc-mirror 插件 v1 迁移到 v2 之前,请参阅 oc-mirror 插件 v1 和 v2 之间的以下区别:

  • 显式版本选择:在使用 oc-mirror 时,用户必须明确指定-- v2。如果没有指定版本,则默认执行 v1。此行为预期会在以后的版本中改变,其中-- v2 是默认设置。
  • 更新了命令:镜像工作流的命令已更改为与 oc-mirror 插件 v2 的新工作流保持一致。

    • 对于 mirror-to-disk,请运行以下命令:

      $ oc-mirror --config isc.yaml file://<directory_name> --v2
    • 对于 disk-to-mirror,运行以下命令:

      $ oc-mirror --config isc.yaml --from file://<directory_name> docker://<remote_registry> --v2
    • 对于 mirror-to-mirror,运行以下命令:

      $ oc-mirror --config isc.yaml --workspace file://<directory_name> docker://<remote_registry> --v2
      注意

      mirror-to-mirror 操作现在需要 --workspace

  • API 版本更新: ImageSetConfiguration API 版本从 v1alpha2 (v1)改为 v2alpha1 (v2)。迁移前,您必须手动更新配置文件。
  • 配置更改:

    • storageConfig 必须在 oc-mirror 插件 v2 中删除。
    • 现在,通过工作目录或本地缓存自动处理增量镜像。
  • 在结果目录中更改:要应用到断开连接的集群的所有自定义资源都会在迁移后的 < workspace_path>/working-dir/cluster-resources 目录中生成。

    • oc-mirror 插件 v2 中的输出不会存储在与 oc-mirror 插件 v1 相同的位置。
    • 您必须检查工作目录中的 cluster-resources 文件夹以查找以下资源:

      • ImageDigestMirrorSet (IDMS)
      • ImageTagMirrorSet (ITMS)
      • CatalogSource
      • ClusterCatalog
      • UpdateService
  • 工作区和目录命名:遵循新的 oc-mirror v2 约定,以防止在不同版本间进行转换时潜在的数据不一致。

    • oc-mirror 插件 v1 oc-mirror-workspace 目录不再需要。
    • 为 oc-mirror 插件 v2 使用新目录以避免冲突。
  • ImageContentSourcePolicy (ICSP)资源替换为 IDMS/ITMS :

    重要

    删除所有 ImageContentSourcePolicy (ICSP)资源可能会删除与 oc-mirror 无关的配置。

    为了避免意外删除,请在删除前识别 oc-mirror 生成的 ICSP 资源。如果您不确定,请与集群管理员进行检查。如需更多信息,请参阅"使用 oc-mirror 插件 v2 为断开连接的安装镜像镜像"。

    • 在 oc-mirror 插件 v2 中,ICSP 资源由 ImageDigestMirrorSet (IDMS)和 ImageTagMirrorSet (ITMS)资源替代。

3.6.2. 迁移到 oc-mirror 插件 v2

要从 oc-mirror 插件 v1 迁移到 v2,您必须手动更新 ImageSetConfiguration 文件,修改镜像命令并清理 v1 工件。按照以下步骤完成迁移。

流程

  1. 修改 API 版本并删除 ImageSetConfiguration 中的已弃用字段。

    带有 oc-mirror 插件 v1 配置的 ImageSetConfiguration 文件示例

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v1alpha2
    mirror:
      platform:
        channels:
          - name: stable-4.17
        graph: true
      helm:
        repositories:
          - name: sbo
            url: https://redhat-developer.github.io/service-binding-operator-helm-chart/
      additionalImages:
        - name: registry.redhat.io/ubi8/ubi:latest
        - name: quay.io/openshifttest/hello-openshift@sha256:example_hash
      operators:
        - catalog: oci:///test/redhat-operator-index
          packages:
            - name: aws-load-balancer-operator
    storageConfig:  # REMOVE this field in v2
      local:
        path: /var/lib/oc-mirror

    带有 oc-mirror 插件 v2 配置的 ImageSetConfiguration 文件示例

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v2alpha1
    mirror:
      platform:
        channels:
          - name: stable-4.17
        graph: true
      helm:
        repositories:
          - name: sbo
            url: https://redhat-developer.github.io/service-binding-operator-helm-chart/
      additionalImages:
        - name: registry.redhat.io/ubi8/ubi:latest
        - name: quay.io/openshifttest/hello-openshift@sha256:example_hash
      operators:
        - catalog: oci:///test/redhat-operator-index
          packages:
            - name: aws-load-balancer-operator

  2. 运行以下命令,检查工作目录中的 IDMS、ITMS、CatalogSourceClusterCatalog 资源中的 cluster-resources 目录:

    $ ls <v2_workspace>/working-dir/cluster-resources/
  3. 迁移完成后,验证镜像的镜像和目录是否可用:

    • 确保镜像过程中没有发生错误或警告。
    • 确保没有生成错误文件(working-dir/logs/mirroring_errors_YYYYMMdd_HHmmss.txt)。
  4. 使用以下命令验证镜像镜像和目录是否可用:

    $ oc get catalogsource -n openshift-marketplace
    $ oc get imagedigestmirrorset,imagetagmirrorset -n openshift-config

    如需更多信息,请参阅"使用 oc-mirror 插件 v2 为断开连接的安装镜像镜像"。

  5. 可选:使用 oc-mirror 插件 v1 删除镜像镜像:

    1. 使用 oc-mirror 插件 v1 镜像镜像。
    2. ImageSetConfiguration 文件中的 API 版本从 v1alpha2 (v1)更新至 v2alpha1 (v2),然后运行以下命令:

      $ oc-mirror -c isc.yaml file://some-dir --v2
      注意

      storageConfig 不是 ImageSetConfigurationDeleteImageSetConfiguration 文件中的有效字段。当升级到 oc-mirror 插件 v2 时删除此字段。

    3. 运行以下命令生成删除清单并删除 v1 镜像:

      $ oc-mirror delete --config=delete-isc.yaml --generate --delete-v1-images --workspace file://some-dir docker://registry.example:5000  --v2
      重要

      oc-mirror 插件 v2 不会自动修剪目标 registry,这与 oc-mirror 插件 v1 不同。要清理不再需要的镜像,请使用 v2 中的删除功能及 --delete-v1-images 命令标志。

      删除所有使用 oc-mirror 插件 v1 的镜像后,您不再需要使用此标志。如果您需要删除使用 oc-mirror 插件 v2 镜像,请不要 set --delete-v1-images

      有关删除镜像的更多信息,请参阅"从断开连接的环境中删除镜像"。

    4. 运行以下命令,根据生成的清单删除镜像:

      $ oc-mirror delete --delete-yaml-file some-dir/working-dir/delete/delete-images.yaml docker://registry.example:5000 --v2

3.6.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.