4.5. 创建目录


目录维护人员可以使用基于文件的目录格式创建新目录,以用于 OpenShift Container Platform 上的 Operator Lifecycle Manager (OLM) v1。

4.5.1. 创建基于文件的目录镜像

您可以使用 opm CLI 创建一个目录镜像,它使用纯文本(基于文件的目录)格式(JSON 或 YAML),替换已弃用的 SQLite 数据库格式。

先决条件

  • 已安装 opm CLI。
  • 您有 podman 版本 1.9.3+。
  • 已构建捆绑包镜像并推送到支持 Docker v2-2 的 registry。

流程

  1. 初始化目录:

    1. 运行以下命令,为目录创建一个目录:

      $ mkdir <catalog_dir>
    2. 运行 opm generate dockerfile 命令生成可构建目录镜像的 Dockerfile:

      $ opm generate dockerfile <catalog_dir> \
          -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4.22 
      1
      1
      使用 -i 标志指定官方红帽基础镜像,否则 Dockerfile 使用默认的上游镜像。

      Dockerfile 必须与您在上一步中创建的目录目录位于相同的父目录中:

      目录结构示例

      . 
      1
      
      ├── <catalog_dir> 
      2
      
      └── <catalog_dir>.Dockerfile 
      3

      1
      父目录
      2
      Catalog 目录
      3
      opm generate dockerfile 命令生成的 Dockerfile
    3. 运行 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.yaml 
      6
      1
      operator 或 package, name
      2
      在未指定时该订阅默认到的频道
      3
      Operator 的 README.md 或者其它文档的路径
      4
      到 Operator 图标的路径
      5
      输出格式:JSON 或 YAML
      6
      创建目录配置文件的路径

      此命令在指定的目录配置文件中生成 olm.package 声明性配置 blob。

  2. 运行 opm render 命令向目录添加捆绑包:

    $ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \ 
    1
    
        --output=yaml \
        >> <catalog_dir>/index.yaml 
    2
    1
    拉取捆绑包镜像的 spec
    2
    目录配置文件的路径
    注意

    频道必须至少包含一个捆绑包。

  3. 为捆绑包添加频道条目。例如,根据您的规格修改以下示例,并将其添加到 <catalog_dir>/index.yaml 文件中:

    频道条目示例

    ---
    schema: olm.channel
    package: <operator_name>
    name: preview
    entries:
      - name: <operator_name>.v0.1.0 
    1

    1
    确定在 <operator_name> 之后、版本 v 中包含句点 (.)。否则,条目无法传递 opm validate 命令。
  4. 验证基于文件的目录:

    1. 针对目录目录运行 opm validate 命令:

      $ opm validate <catalog_dir>
    2. 检查错误代码是否为 0:

      $ echo $?

      输出示例

      0

  5. 运行 podman build 命令构建目录镜像:

    $ podman build . \
        -f <catalog_dir>.Dockerfile \
        -t <registry>/<namespace>/<catalog_image_name>:<tag>
  6. 将目录镜像推送到 registry:

    1. 如果需要,运行 podman login 命令与目标 registry 进行身份验证:

      $ podman login <registry>
    2. 运行 podman push 命令来推送目录镜像:

      $ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部