4.5. 创建目录
目录维护人员可以使用基于文件的目录格式创建新目录,以用于 OpenShift Container Platform 上的 Operator Lifecycle Manager (OLM) v1。
4.5.1. 创建基于文件的目录镜像 复制链接链接已复制到粘贴板!
您可以使用 opm CLI 创建一个目录镜像,它使用纯文本(基于文件的目录)格式(JSON 或 YAML),替换已弃用的 SQLite 数据库格式。
先决条件
-
已安装
opmCLI。 -
您有
podman版本 1.9.3+。 - 已构建捆绑包镜像并推送到支持 Docker v2-2 的 registry。
流程
初始化目录:
运行以下命令,为目录创建一个目录:
$ mkdir <catalog_dir>运行
opm generate dockerfile命令生成可构建目录镜像的 Dockerfile:$ opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4.221 - 1
- 使用
-i标志指定官方红帽基础镜像,否则 Dockerfile 使用默认的上游镜像。
Dockerfile 必须与您在上一步中创建的目录目录位于相同的父目录中:
目录结构示例
.1 ├── <catalog_dir>2 └── <catalog_dir>.Dockerfile3 运行
opm init命令,使用 Operator 的软件包定义填充目录:$ opm init <operator_name> \1 --default-channel=preview \2 --description=./README.md \3 --icon=./operator-icon.svg \4 --output yaml \5 > <catalog_dir>/index.yaml6
运行
opm render命令向目录添加捆绑包:$ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \1 --output=yaml \ >> <catalog_dir>/index.yaml2 为捆绑包添加频道条目。例如,根据您的规格修改以下示例,并将其添加到
<catalog_dir>/index.yaml文件中:频道条目示例
--- schema: olm.channel package: <operator_name> name: preview entries: - name: <operator_name>.v0.1.01 - 1
- 确定在
<operator_name>之后、版本v中包含句点 (.)。否则,条目无法传递opm validate命令。
验证基于文件的目录:
针对目录目录运行
opm validate命令:$ opm validate <catalog_dir>检查错误代码是否为
0:$ echo $?输出示例
0
运行
podman build命令构建目录镜像:$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>将目录镜像推送到 registry:
如果需要,运行
podman login命令与目标 registry 进行身份验证:$ podman login <registry>运行
podman push命令来推送目录镜像:$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>