Menu Close
4.8.5. 修剪索引镜像
基于 Operator Bundle Format 的索引镜像是 Operator 目录的容器化快照。您可以修剪除指定的软件包列表以外的所有索引,创建只包含您想要的 Operator 的源索引副本。
先决条件
-
podman
版本 1.9.3+ -
grpcurl
(第三方命令行工具) -
opm
版本 1.18.0+ 访问支持 Docker v2-2 的 registry
重要OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。
流程
通过目标 registry 进行身份验证:
$ podman login <target_registry>
确定您要包括在您的修剪索引中的软件包列表。
运行您要修剪容器中的源索引镜像。例如:
$ podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.8
输出示例
Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.8... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051
在一个单独的终端会话中,使用
grpcurl
命令获取由索引提供的软件包列表:$ grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
检查
package.out
文件,确定要保留在此列表中的哪个软件包名称。例如:软件包列表片断示例
... { "name": "advanced-cluster-management" } ... { "name": "jaeger-product" } ... { { "name": "quay-operator" } ...
-
在您执行
podman run
命令的终端会话中,按 Ctrl 和 C 停止容器进程。
运行以下命令来修剪指定软件包以外的所有源索引:
$ opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4.8 \1 -p advanced-cluster-management,jaeger-product,quay-operator \2 [-i registry.redhat.io/openshift4/ose-operator-registry:v4.8] \3 -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4.8 4
运行以下命令将新索引镜像推送到目标 registry:
$ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4.8
其中
<namespace>
是 registry 上的任何现有命名空间。