4.8.2. 使用 Package Manifest Format 的自定义目录
4.8.2.1. 构建软件包清单格式目录镜像
集群管理员可以根据 Operator Lifecycle Manager(OLM)使用的 Package Manifest Format 来构建自定义 Operator 目录镜像。目录镜像可推送到支持 Docker v2-2 的容器镜像 registry。对于受限网络中的集群,此 registry 可以是集群有网络访问权限的 registry,如在受限网络集群安装过程中创建的镜像 registry。
OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。
在这一示例中,流程假定在使用镜像 registry 时可访问您的网络以及互联网。
只有 oc
客户端的 Linux 版本可用于此流程,因为 Windows 和 macOS 版本不提供 oc adm catalog build
命令。
先决条件
- 没有网络访问限制的工作站
-
oc
版本 4.3.5+ Linux 客户端 -
podman
版本 1.9.3+ - 访问支持 Docker v2-2 的镜像(mirror)registry
如果您正在使用私有 registry,请将
REG_CREDS
环境变量设置为到 registry 凭证的文件路径。例如,对于podman
CLI:$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
如果您正在使用 quay.io 帐户可访问的私有命名空间,您必须设置 Quay 身份验证令牌。使用您的 quay.io 凭证对登录 API 发出请求,从而设置用于
--auth-token
标志的AUTH_TOKEN
环境变量:$ AUTH_TOKEN=$(curl -sH "Content-Type: application/json" \ -XPOST https://quay.io/cnr/api/v1/users/login -d ' { "user": { "username": "'"<quay_username>"'", "password": "'"<quay_password>"'" } }' | jq -r '.token')
流程
在没有网络访问限制的工作站中,与目标镜像(mirror) registry 进行身份验证:
$ podman login <registry_host_name>
使用
registry.redhat.io
进行身份验证,以便在构建期间拉取基础镜像:$ podman login registry.redhat.io
根据 Quay.io 中的
redhat-operators
目录构建目录镜像,进行标记并将其推送到您的镜像 registry:$ oc adm catalog build \ --appregistry-org redhat-operators \1 --from=registry.redhat.io/openshift4/ose-operator-registry:v4.7 \2 --filter-by-os="linux/amd64" \3 --to=<registry_host_name>:<port>/olm/redhat-operators:v1 \4 [-a ${REG_CREDS}] \5 [--insecure] \6 [--auth-token "${AUTH_TOKEN}"] 7
- 1
- 从 App Registry 实例中拉取的机构(命名空间)。
- 2
- 使用与目标 OpenShift Container Platform 集群主版本和次版本匹配的标签将
--from
设置为 Operator Registry 基础镜像。 - 3
- 将
--filter-by-os
设置为用于基本镜像的操作系统和架构,该镜像必须与目标 OpenShift Container Platform 集群匹配。有效值是linux/amd64
、linux/ppc64le
和linux/s390x
。 - 4
- 为您的目录镜像命名并包含标签,例如:
v1
。 - 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:v1
有时红帽提供的无效清单是意外引入的目录 ; 当发生这种情况时,您可能会看到一些错误:
出错的输出示例
... INFO[0014] directory dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 file=4.2 load=package W1114 19:42:37.876180 34665 builder.go:141] error building database: error loading package into db: fuse-camel-k-operator.v7.5.0 specifies replacement that couldn't be found Uploading ... 244.9kB/s
这些错误通常不是致命的,如果所提及 Operator 软件包不包含您计划安装的 Operator 或其依赖项,则可以忽略它们。
其它资源