This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.7. 管理自定义目录
本指南介绍了如何在 OpenShift Container Platform 的 Operator Lifecycle Manager (OLM) 中处理以 Bundle Format 或传统的 Bundle Format 打包的自定义目录。
4.7.1. 使用捆绑格式(Bundle Format)的自定义目录 复制链接链接已复制到粘贴板!
4.7.1.1. 先决条件 复制链接链接已复制到粘贴板!
-
安装
opm
CLI。
4.7.1.2. 创建索引镜像 复制链接链接已复制到粘贴板!
您可以使用 opm
CLI 创建索引镜像。
先决条件
-
opm
版本 1.12.3+ -
podman
版本 1.9.3+ 构建并推送到支持 Docker v2-2 的 registry 的捆绑包镜像
重要OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。
流程
启动一个新的索引:
opm index add \ --bundles <registry>/<namespace>/<bundle_image_name>:<tag> \ --tag <registry>/<namespace>/<index_image_name>:<tag> \ [--binary-image <registry_base_image>]
$ opm index add \ --bundles <registry>/<namespace>/<bundle_image_name>:<tag> \
1 --tag <registry>/<namespace>/<index_image_name>:<tag> \
2 [--binary-image <registry_base_image>]
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将索引镜像推送到 registry。
如果需要,与目标 registry 进行身份验证:
podman login <registry>
$ podman login <registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 推送索引镜像:
podman push <registry>/<namespace>/test-catalog:latest
$ podman push <registry>/<namespace>/test-catalog:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.1.3. 从索引镜像创建目录 复制链接链接已复制到粘贴板!
您可以从索引镜像创建 Operator 目录,并将其应用到 OpenShift Container Platform 集群,供 Operator Lifecycle Manager(OLM)使用。
先决条件
- 构建并推送到 registry 的索引镜像。
流程
创建一个
CatalogSource
对象来引用索引镜像。根据您的规格修改以下内容,并将它保存为
catalogSource.yaml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用该文件创建
CatalogSource
对象:oc apply -f catalogSource.yaml
$ oc apply -f catalogSource.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确定成功创建以下资源。
检查 pod:
oc get pods -n openshift-marketplace
$ oc get pods -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查目录源:
oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查软件包清单:
oc get packagemanifest -n openshift-marketplace
$ oc get packagemanifest -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CATALOG AGE jaeger-product My Operator Catalog 93s
NAME CATALOG AGE jaeger-product My Operator Catalog 93s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以在 OpenShift Container Platform Web 控制台中通过 OperatorHub 安装 Operator。
4.7.1.4. 更新索引镜像 复制链接链接已复制到粘贴板!
在将 OperatorHub 配置为使用引用自定义索引镜像的目录源后,集群管理员可通过将捆绑包镜像添加到索引镜像来保持其集群上的可用 Operator 最新状态。
您可以使用 opm index add
命令来更新存在的索引镜像。
先决条件
-
opm
版本 1.12.3+ -
podman
版本 1.9.3+ - 构建并推送到 registry 的索引镜像。
- 引用索引镜像的现有目录源。
流程
通过添加捆绑包镜像来更新现有索引:
opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \ --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \ --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \ --pull-tool podman
$ opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \
1 --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \
2 --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \
3 --pull-tool podman
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<registry>
-
指定 registry 的主机名,如
quay.io
或mirror.example.com
。 <namespace>
-
指定 registry 的命名空间,如
ocs-dev
或abc
。 <new_bundle_image>
-
指定要添加到 registry 的新捆绑包镜像,如
ocs-operator
。 <digest>
-
指定捆绑包镜像的 SHA 镜像 ID 或摘要,如
c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41
。 <existing_index_image>
-
指定之前推送的镜像,如
abc-redhat-operator-index
。 <existing_tag>
-
指定之前推送的镜像标签,如
4.6
。 <updated_tag>
-
指定要应用到更新的索引镜像的镜像标签,如
4.6.1
。
示例命令
opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4.6 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.6.1 \ --pull-tool podman
$ opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4.6 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.6.1 \ --pull-tool podman
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 推送更新的索引镜像:
podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
$ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator Lifecycle Manager(OLM)会在常规时间段内自动轮询目录源中引用的索引镜像,验证是否已成功添加新软件包:
oc get packagemanifests -n openshift-marketplace
$ oc get packagemanifests -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.1.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 login <target_registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定您要包括在您的修剪索引中的软件包列表。
运行您要修剪容器中的源索引镜像。例如:
podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.6
$ podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.6... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051
Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.6... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在一个单独的终端会话中,使用
grpcurl
命令获取由索引提供的软件包列表:grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
$ grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
package.out
文件,确定要保留在此列表中的哪个软件包名称。例如:软件包列表片断示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在您执行
podman run
命令的终端会话中,按 Ctrl 和 C 停止容器进程。
运行以下命令来修剪指定软件包以外的所有源索引:
opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4.6 \ -p advanced-cluster-management,jaeger-product,quay-operator \ [-i registry.redhat.io/openshift4/ose-operator-registry:v4.6] \ -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4.6
$ opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4.6 \
1 -p advanced-cluster-management,jaeger-product,quay-operator \
2 [-i registry.redhat.io/openshift4/ose-operator-registry:v4.6] \
3 -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4.6
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令将新索引镜像推送到目标 registry:
podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4.6
$ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4.6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<namespace>
是 registry 上的任何现有命名空间。