4.11. 以 OCI 格式镜像基于文件的目录 Operator 镜像
您可以使用 oc-mirror 插件以 Open Containerprojects (OCI)镜像格式而不是 Docker v2 格式镜像 Operator。您可以使用 OCI 格式将 Operator 镜像复制到磁盘上基于文件的目录。然后,您可以将本地 OCI 镜像复制到目标镜像 registry。
使用 oc-mirror 插件以 OCI 格式镜像 Operator 镜像只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
使用 OCI 功能时,镜像不会自动从目标镜像 registry 中修剪。
先决条件
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc)。 -
已安装
oc-mirrorCLI 插件。
流程
可选:检索您需要的目录和镜像,并将其保存到磁盘上。如果您已在磁盘上有 OCI 格式的目录镜像,您可以跳过这一步。
创建镜像设置配置文件:
复制到磁盘的镜像设置配置文件示例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12 packages: - name: aws-load-balancer-operator注意使用 OCI 功能时,只有
mirror.operators.catalog设置可供使用。storageConfig设置将被忽略,而是传递给oc mirror命令的位置。运行
oc mirror命令将指定镜像集配置镜像到磁盘:$ oc mirror --config=./imageset-config.yaml \1 --use-oci-feature \2 --oci-feature-action=copy \3 oci://my-oci-catalog4 注意您可以选择使用
--oci-registries-config标志来指定到 TOML 格式的registry.conf文件的路径。您可以使用它来从不同的 registry 中镜像,如用于测试的预生产位置,而无需更改镜像设置配置文件。registry.conf 文件示例
[[registry]] location = "registry.redhat.io:5000" insecure = false blocked = false mirror-by-digest-only = true prefix = "" [[registry.mirror]] location = "preprod-registry.example.com" insecure = false将
registry.mirror部分中的location字段设置为您要从中拉取镜像的替代 registry 位置。registry部分中的location字段必须与您在镜像设置配置文件中指定的 registry 位置相同。列出目录内容并验证是否已创建以下目录:
$ ls -l输出示例
my-oci-catalog1 oc-mirror-workspace2 olm_artifacts3
更新镜像设置配置文件,以指定磁盘上要镜像到目标镜像 registry 的目录位置:
镜像设置配置文件示例,用于镜像 registry
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 mirror: operators: - catalog: oci:///home/user/oc-mirror/my-oci-catalog/redhat-operator-index1 packages: - name: aws-load-balancer-operator- 1
- 指定磁盘上 OCI 目录位置的绝对路径。此流程假设您使用
my-oci-catalog作为目录并镜像redhat-operator-index目录。该路径必须以oci://开头。
运行 oc mirror 命令,以处理磁盘上镜像集文件,并将内容镜像到目标镜像 registry:
$ oc mirror --config=./imageset-config.yaml \1 --use-oci-feature \2 --oci-feature-action=mirror \3 docker://registry.example:50004 注意您可以选择使用
--oci-insecure-signature-policy标志将签名推送到目标镜像 registry。
后续步骤
- 配置集群以使用 oc-mirror 生成的资源。