10.4. 更新 Operator 目录镜像


集群管理员将 OperatorHub 配置为使用自定义 Operator 目录镜像后,管理员可通过红帽的 App Registry 目录获得相应的更新,使其 OpenShift Container Platform 集群与最新的 Operator 保持一致。这可以通过构建和推送一个新的 Operator 目录镜像,然后将现有的 CatalogSource 的 spec.image 参数替换为新的镜像摘要。

在本例中,该流程假设已配置了自定义 redhat-operators 目录镜像,以便与 OperatorHub 搭配使用。

先决条件

  • 具有无限网络访问权限的 Linux 工作站 [1]
  • oc 版本 4.3.5+
  • podman 1.4.4+ 版
  • 访问支持 Docker v2-2 的镜像(mirror)registry
  • OperatorHub 配置为使用自定义目录镜像
  • 如果您正在使用私有 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')

流程

  1. 在没有网络访问限制的工作站中,与目标镜像(mirror) registry 进行身份验证:

    $ podman login <registry_host_name>

    还可使用 registry.redhat.io 验证,以便在构建期间拉取基础镜像:

    $ podman login registry.redhat.io
  2. 根据 quay.io 中的 redhat-operators 目录构建一个新的目录镜像,进行标记并将其推送到您的镜像(mirror) registry:

    $ oc adm catalog build \
        --appregistry-org redhat-operators \
    1
    
        --from=registry.redhat.io/openshift4/ose-operator-registry:v4.3 \
    2
    
        --filter-by-os="linux/amd64" \
    3
    
        --to=<registry_host_name>:<port>/olm/redhat-operators:v2 \
    4
    
        [-a ${REG_CREDS}] \
    5
    
        [--insecure] \
    6
    
        [--auth-token "${AUTH_TOKEN}"] 
    7
    
    
    INFO[0013] loading Bundles                               dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605
    ...
    Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v2
    1
    从 App Registry 实例中拉取的机构(命名空间)。
    2
    使用与目标 OpenShift Container Platform 集群主版本和次版本匹配的标签,将 --from 设置为 ose-operator-registry 基础镜像。
    3
    --filter-by-os 设置为用于基本镜像的操作系统和架构,该镜像必须与目标 OpenShift Container Platform 集群匹配。有效值是 linux/amd64linux/ppc64lelinux/s390x
    4
    为您的目录镜像命名并包含一个标签,例如: v2 ,因为它是更新的目录。
    5
    可选:如果需要,指定 registry 凭证文件的位置。
    6
    可选:如果您不想为目标 registry 配置信任,请添加 --insecure 标志。
    7
    可选:如果使用其他不公开的应用程序 registry 目录,则需要指定 Quay 身份验证令牌。
  3. 将目录镜像 (mirror) 到目标 registry。以下 oc adm catalog mirror 命令提取自定义 Operator catalog 镜像的内容,以生成镜像 (mirror) 和把镜像(image)镜像 (mirror)到 registry 所需的清单:

    $ oc adm catalog mirror \
        <registry_host_name>:<port>/olm/redhat-operators:v2 \
    1
    
        <registry_host_name>:<port> \
        [-a ${REG_CREDS}] \
    2
    
        [--insecure] \
    3
    
        [--filter-by-os="<os>/<arch>"] 
    4
    
    
    mirroring ...
    1
    指定新 Operator 目录镜像。
    2
    可选:如果需要,指定 registry 凭证文件的位置。
    3
    可选:如果您不想为目标 registry 配置信任,请添加 --insecure 标志。
    4
    可选: 因为目录可能会引用支持多个架构和操作系统的镜像,您可以根据架构和操作系统进行过滤来只对匹配的镜像进行镜像(mirror)。有效值是 linux/amd64linux/ppc64lelinux/s390x
  4. 应用新生成的清单:

    $ oc apply -f ./redhat-operators-manifests
    重要

    您可能不需要应用 imageContentSourcePolicy.yaml 清单。对文件进行一个 diff 操作来决定是否需要改变。

  5. 更新 CatalogSource 对象来引用您的目录镜像。

    1. 如果您有此 CatalogSource 的原始 catalogsource.yaml 文件:

      1. 编辑 catalogsource.yaml 文件,在 spec.image 字段中引用新目录镜像 :

        apiVersion: operators.coreos.com/v1alpha1
        kind: CatalogSource
        metadata:
          name: my-operator-catalog
          namespace: openshift-marketplace
        spec:
          sourceType: grpc
          image: <registry_host_name>:<port>/olm/redhat-operators:v2 
        1
        
          displayName: My Operator Catalog
          publisher: grpc
        1
        指定新 Operator 目录镜像。
      2. 使用更新的文件替换 CatalogSource 对象:

        $ oc replace -f catalogsource.yaml
    2. 或者,使用以下命令编辑 CatalogSource,在 spec.image 参数中引用您的新目录镜像 :

      $ oc edit catalogsource <catalog_source_name> -n openshift-marketplace

现在,OpenShift Container Platform 集群上的 OperatorHub 页中应可以提供更新的 Operator。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部