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.8.2.3. 更新软件包清单格式目录镜像
集群管理员将 OperatorHub 配置为使用自定义 Operator 目录镜像后,管理员可通过红帽提供的 App Registry 目录获得更新,使其 OpenShift Container Platform 集群与最新的 Operator 保持一致。这可以通过构建和推送新的 Operator 目录镜像,然后将 CatalogSource 对象中现有的 spec.image 参数替换为新镜像摘要。
在本例中,该流程假设已配置了自定义 redhat-operators 目录镜像,以便与 OperatorHub 搭配使用。
只有 oc 客户端的 Linux 版本可用于此流程,因为 Windows 和 macOS 版本不提供 oc adm catalog build 命令。
先决条件
- 没有网络访问限制的工作站
-
oc版本 4.3.5+ Linux 客户端 -
podman版本 1.9.3+ 访问支持 Docker v2-2 的镜像(mirror)registry
重要OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。
- OperatorHub 配置为使用自定义目录镜像
如果您正在使用私有 registry,请将
REG_CREDS环境变量设置为到 registry 凭证的文件路径。例如,对于podmanCLI:REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您正在使用 quay.io 帐户可访问的私有命名空间,您必须设置 Quay 身份验证令牌。使用您的 quay.io 凭证对登录 API 发出请求,从而设置用于
--auth-token标志的AUTH_TOKEN环境变量:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在没有网络访问限制的工作站中,与目标镜像(mirror) registry 进行身份验证:
podman login <registry_host_name>
$ podman login <registry_host_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
registry.redhat.io进行身份验证,以便在构建期间拉取基础镜像:podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 根据 Quay.io 中的
redhat-operators目录构建新目录镜像,标记并将其推送到您的镜像 registry:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 从 App Registry 实例中拉取的机构(命名空间)。
- 2
- 使用与目标 OpenShift Container Platform 集群主版本和次版本匹配的标签将
--from设置为 Operator Registry 基础镜像。 - 3
- 将
--filter-by-os设置为用于基本镜像的操作系统和架构,该镜像必须与目标 OpenShift Container Platform 集群匹配。有效值是linux/amd64、linux/ppc64le和linux/s390x。 - 4
- 为您的目录镜像命名并包含一个标签,例如:
v2,因为它是更新的目录。 - 5
- 可选:如果需要,指定 registry 凭证文件的位置。
- 6
- 可选:如果您不想为目标 registry 配置信任,请添加
--insecure标志。 - 7
- 可选:如果使用其他不公开的应用程序 registry 目录,则需要指定 Quay 身份验证令牌。
输出示例
INFO[0013] loading Bundles dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 ... Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v2
INFO[0013] loading Bundles dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 ... Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将目录镜像 (mirror) 到目标 registry。以下
oc adm catalog mirror命令提取自定义 Operator catalog 镜像的内容,以生成镜像 (mirror) 和把镜像(image)镜像 (mirror)到 registry 所需的清单:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用新生成的清单:
oc replace -f ./manifests-redhat-operators-<random_number>
$ oc replace -f ./manifests-redhat-operators-<random_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您可能不需要应用
imageContentSourcePolicy.yaml清单。对文件进行一个diff操作来决定是否需要改变。更新
CatalogSource对象以引用您的目录镜像。如果您有此
CatalogSource对象的原始catalogsource.yaml文件:编辑
catalogsource.yaml文件,在spec.image字段中引用新目录镜像 :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 Operator 目录镜像。
使用更新的文件替换
CatalogSource对象:oc replace -f catalogsource.yaml
$ oc replace -f catalogsource.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
或者,使用以下命令编辑目录源,在
spec.image参数中引用您的新目录镜像 :oc edit catalogsource <catalog_source_name> -n openshift-marketplace
$ oc edit catalogsource <catalog_source_name> -n openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,OpenShift Container Platform 集群上的 OperatorHub 页中应可以提供更新的 Operator。