7.2.2. Operator 控制器(技术预览)


Operator Controller 是 Operator Lifecycle Manager (OLM) 1.0 的核心组件,并消耗其他 OLM 1.0 组件、RukPak 和 catalogd。它使用一个 API 扩展 Kubernetes,用户可以安装 Operator 和扩展。

重要

OLM 1.0 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

7.2.2.1. Operator API

Operator Controller 提供了一个新的 Operator API 对象,它是一个代表已安装 Operator 实例的单个资源。此 operator.operators.operatorframework.io API 通过将面向用户的 API 整合到单个对象来简化已安装的 Operator 管理。

重要

在 OLM 1.0 中,Operator 对象是集群范围的。这与早期的 OLM 版本不同,Operator 可以是命名空间范围的或集群范围的,具体取决于其相关 SubscriptionOperatorGroup 对象的配置。

如需有关之前行为的更多信息,请参阅多租户和 Operator 共处

Operator 对象示例

apiVersion: operators.operatorframework.io/v1alpha1
kind: Operator
metadata:
  name: <operator_name>
spec:
  packageName: <package_name>
  channel: <channel_name>
  version: <version_number>

注意

当使用 OpenShift CLI (oc) 时,由在此技术预览阶段中的 OLM 1.0 所提供的 Operator 资源需要指定完整的 <resource>.<group> 格式: operator.operators.operatorframework.io。例如:

$ oc get operator.operators.operatorframework.io

如果您在没有 API 组的情况下只指定 Operator 资源,CLI 会为早期的 API (operator.operators.coreos.com) 返回的结果与 OLM 1.0 不相关。

7.2.2.1.1. 关于 OLM 1.0 中的目标版本

在 Operator Lifecycle Manager(OLM)1.0 中,集群管理员在 Operator 的自定义资源(CR)中以声明性方式设置 Operator 的目标版本。

如果在 Operator 的 CR 中指定频道,OLM 1.0 会从指定频道安装最新版本。当向指定的频道发布更新时,OLM 1.0 会自动更新至该频道的最新发行版本。

带有指定频道的 CR 示例

apiVersion: operators.operatorframework.io/v1alpha1
kind: Operator
metadata:
  name: quay-example
spec:
  packageName: quay-operator
  channel: stable-3.8 
1

1
安装发布至指定频道的最新发行版本。对频道的更新会自动安装。

如果在 CR 中指定 Operator 的目标版本,OLM 1.0 将安装指定的版本。当在 Operator 的 CR 中指定目标版本时,OLM 1.0 在向目录发布更新时不会更改目标版本。

如果要更新集群中安装的 Operator 版本,您必须手动更新 Operator 的 CR。指定 Operator 的目标版本将 Operator 的版本固定到指定的发行版本。

指定了目标版本的 CR 示例

apiVersion: operators.operatorframework.io/v1alpha1
kind: Operator
metadata:
  name: quay-example
spec:
  packageName: quay-operator
  version: 3.8.12 
1

1
指定目标版本。如果要更新集群中安装的 Operator 版本,您必须手动将这个字段更新为所需的目标版本。

如果要更改 Operator 的安装版本,请将 Operator 的 CR 编辑为所需的目标版本。

警告

在以前的 OLM 版本中,Operator 作者可以定义升级边缘,以防止您升级到不支持的版本。在开发的当前状态中,OLM 1.0 不强制升级边缘定义。您可以指定 Operator 的任何版本,OLM 1.0 会尝试应用更新。

您可以运行以下命令来检查 Operator 的目录内容,包括可用版本和频道:

命令语法

$ oc get package <catalog_name>-<package_name> -o yaml

创建或更新 CR 后,运行以下命令来创建或修改 Operator:

命令语法

$ oc apply -f <extension_name>.yaml

故障排除

  • 如果指定了不存在的目标版本或频道,您可以运行以下命令来检查 Operator 的状态:

    $ oc get operator.operators.operatorframework.io <operator_name> -o yaml

    输出示例

    apiVersion: operators.operatorframework.io/v1alpha1
    kind: Operator
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"operators.operatorframework.io/v1alpha1","kind":"Operator","metadata":{"annotations":{},"name":"quay-example"},"spec":{"packageName":"quay-operator","version":"999.99.9"}}
      creationTimestamp: "2023-10-19T18:39:37Z"
      generation: 3
      name: quay-example
      resourceVersion: "51505"
      uid: 2558623b-8689-421c-8ed5-7b14234af166
    spec:
      packageName: quay-operator
      version: 999.99.9
    status:
      conditions:
      - lastTransitionTime: "2023-10-19T18:50:34Z"
        message: package 'quay-operator' at version '999.99.9' not found
        observedGeneration: 3
        reason: ResolutionFailed
        status: "False"
        type: Resolved
      - lastTransitionTime: "2023-10-19T18:50:34Z"
        message: installation has not been attempted as resolution failed
        observedGeneration: 3
        reason: InstallationStatusUnknown
        status: Unknown
        type: Installed

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部