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 使用新目录以避免冲突。
-
oc-mirror 插件 v1
将
ImageContentSourcePolicy
(ICSP)资源替换为 IDMS/ITMS :重要删除所有
ImageContentSourcePolicy
(ICSP)资源可能会删除与 oc-mirror 无关的配置。为了避免意外删除,请在删除前识别 oc-mirror 生成的 ICSP 资源。如果您不确定,请与集群管理员进行检查。如需更多信息,请参阅"使用 oc-mirror 插件 v2 为断开连接的安装镜像镜像"。
-
在 oc-mirror 插件 v2 中,ICSP 资源由
ImageDigestMirrorSet
(IDMS)和ImageTagMirrorSet
(ITMS)资源替代。
-
在 oc-mirror 插件 v2 中,ICSP 资源由
3.6.2. 迁移到 oc-mirror 插件 v2
要从 oc-mirror 插件 v1 迁移到 v2,您必须手动更新 ImageSetConfiguration
文件,修改镜像命令并清理 v1 工件。按照以下步骤完成迁移。
流程
修改 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
运行以下命令,检查工作目录中的 IDMS、ITMS、
CatalogSource
和ClusterCatalog
资源中的cluster-resources
目录:$ ls <v2_workspace>/working-dir/cluster-resources/
迁移完成后,验证镜像的镜像和目录是否可用:
- 确保镜像过程中没有发生错误或警告。
-
确保没有生成错误文件(
working-dir/logs/mirroring_errors_YYYYMMdd_HHmmss.txt
)。
使用以下命令验证镜像镜像和目录是否可用:
$ oc get catalogsource -n openshift-marketplace
$ oc get imagedigestmirrorset,imagetagmirrorset -n openshift-config
如需更多信息,请参阅"使用 oc-mirror 插件 v2 为断开连接的安装镜像镜像"。
可选:使用 oc-mirror 插件 v1 删除镜像镜像:
- 使用 oc-mirror 插件 v1 镜像镜像。
将
ImageSetConfiguration
文件中的 API 版本从v1alpha2
(v1)更新至v2alpha1
(v2),然后运行以下命令:$ oc-mirror -c isc.yaml file://some-dir --v2
注意storageConfig
不是ImageSetConfiguration
和DeleteImageSetConfiguration
文件中的有效字段。当升级到 oc-mirror 插件 v2 时删除此字段。运行以下命令生成删除清单并删除 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
。有关删除镜像的更多信息,请参阅"从断开连接的环境中删除镜像"。
运行以下命令,根据生成的清单删除镜像:
$ oc-mirror delete --delete-yaml-file some-dir/working-dir/delete/delete-images.yaml docker://registry.example:5000 --v2
3.6.3. 其他资源
- 在部分断开连接的环境中镜像设置的镜像
- 镜像在完全断开连接的环境中设置的镜像
- 有关配置更改的详情,请参阅从 oc-mirror 插件 v1 改为 v2。
- 有关删除镜像的更多信息,请参阅从断开连接的环境中删除镜像。