4.12. 管理平台 Operator (技术预览)


平台 Operator 是一个基于 OLM 的 Operator,可在 OpenShift Container Platform 集群的第 0 天操作期间或之后安装,并参与集群的生命周期。作为集群管理员,您可以使用 PlatformOperator API 管理平台 Operator。

重要

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

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

4.12.1. 关于平台 Operator

Operator Lifecycle Manager (OLM) 引入了一个新的 Operator 类型,名为 平台 Operator。平台 Operator 是一个基于 OLM 的 Operator,可在 OpenShift Container Platform 集群的第 0 天操作期间或之后安装,并参与集群的生命周期。作为集群管理员,您可以使用平台 Operator 来进一步自定义 OpenShift Container Platform 安装,以满足您的要求和用例。

使用 OpenShift Container Platform 中的现有集群功能功能,集群管理员可能已经禁用了基于 Cluster Version Operator(CVO)的部分组件,因为对于集群安装前的初始负载,它们被视为是非必须的。平台 Operator 通过提供额外的自定义选项来迭代此模型。通过平台 Operator 机制,依赖于 RukPak 组件中的资源,现在可在集群安装时安装基于 OLM 的 Operator,如果 Operator 无法成功安装,则可阻止集群推出部署。

在 OpenShift Container Platform 4.12 中,这个技术预览版本侧重于基本平台 Operator 机制,并构建在即将发布的版本中扩展概念的基础。您可以使用集群范围的 PlatformOperator API 在启用了 TechPreviewNoUpgrade 功能集的集群中或之后配置 Operator。

4.12.1.1. 平台 Operator 的技术预览限制

在 OpenShift Container Platform 4.12 中,平台 Operator 功能的技术预览版本中,以下限制决定是否可以通过平台 Operator 机制安装 Operator:

  • Kubernetes 清单必须使用 Operator Lifecycle Manager (OLM) registry+v1 捆绑包格式进行打包。
  • Operator 无法声明软件包或 group/version/kind (GVK) 依赖项。
  • Operator 无法指定 AllNamespaces 以外的集群服务版本 (CSV) 安装模式
  • Operator 无法指定任何 WebhookAPIService 定义。
  • 所有软件包捆绑包都必须位于 redhat-operators 目录源中。

在考虑这些限制后,可以成功安装以下 Operator:

表 4.2. 基于 OLM 的 Operator 可作为平台 Operator 安装

3scale-operator

amq-broker-rhel8

amq-online

amq-streams

ansible-cloud-addons-operator

apicast-operator

container-security-operator

eap

file-integrity-operator

gatekeeper-operator-product

integration-operator

jws-operator

kiali-ossm

node-healthcheck-operator

odf-csi-addons-operator

odr-hub-operator

openshift-custom-metrics-autoscaler-operator

openshift-gitops-operator

openshift-pipelines-operator-rh

quay-operator

red-hat-camel-k

rhpam-kogito-operator

service-registry-operator

servicemeshoperator

skupper-operator

 
注意

在此技术预览版本中不提供以下功能:

  • 集群推出部署后自动升级平台 Operator 软件包
  • 扩展平台 Operator 机制以支持任何基于 CVO 的可选组件

4.12.2. 先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。
  • 在集群中启用 TechPreviewNoUpgrades 功能集

    警告

    启用 TechPreviewNoUpgrade 功能集将无法撤消,并防止次版本更新。不建议在生产环境集群中使用这些功能集。

  • 仅在集群中启用 redhat-operators 目录源。这是技术预览版本期间的一个限制。
  • oc 命令在工作站上安装。

4.12.3. 在集群创建过程中安装平台 Operator

作为集群管理员,您可以通过在创建集群过程中提供 FeatureGatePlatformOperator 清单来安装平台 Operator。

流程

  1. 从受支持的基于 OLM 的 Operator 集合中选择一个平台 Operator。有关此集合列表以及当前限制的详情,请参阅"平台 Operator 的技术预览限制"。
  2. 选择集群安装方法并按照创建 install-config.yaml 文件进行操作。有关准备集群安装的详情,请参阅"选择集群安装方法并为用户准备它"。
  3. 创建 install-config.yaml 文件并完成对其所做的任何修改后,切换到包含安装程序的目录并创建清单:

    $ ./openshift-install create manifests --dir <installation_directory> 1
    1
    对于 <installation_directory>,请指定包含集群的 install-config.yaml 文件的目录名称。
  4. <installation_directory>/manifests/ 目录中创建一个 FeatureGate 对象 YAML 文件,该文件启用了 TechPreviewNoUpgrade 功能集,例如 feature-gate.yaml 文件:

    feature-gate.yaml 文件示例

    apiVersion: config.openshift.io/v1
    kind: FeatureGate
    metadata:
      annotations:
        include.release.openshift.io/self-managed-high-availability: "true"
        include.release.openshift.io/single-node-developer: "true"
        release.openshift.io/create-only: "true"
      name: cluster
    spec:
      featureSet: TechPreviewNoUpgrade 1

    1
    启用 TechPreviewNoUpgrade 功能集。
  5. <installation_directory>/manifests/ 目录中为所选平台 Operator 创建 PlatformOperator 对象 YAML 文件,如 Red Hat OpenShift Service Mesh Operator 的 service-mesh-po.yaml 文件:

    service-mesh-po.yaml 文件示例

    apiVersion: platform.openshift.io/v1alpha1
    kind: PlatformOperator
    metadata:
      name: service-mesh-po
    spec:
      package:
        name: servicemeshoperator

  6. 当您准备好完成集群安装时,请参阅您选择的安装方法并继续运行 openshift-install create cluster 命令。

    在集群创建过程中,提供的清单用于启用 TechPreviewNoUpgrade 功能集并安装所选平台 Operator。

    重要

    无法成功安装平台 Operator 将阻止集群安装过程。

验证

  1. 运行以下命令,检查 service-mesh-po platform Operator 的状态:

    $ oc get platformoperator service-mesh-po -o yaml

    输出示例

    ...
    status:
      activeBundleDeployment:
        name: service-mesh-po
      conditions:
      - lastTransitionTime: "2022-10-24T17:24:40Z"
        message: Successfully applied the service-mesh-po BundleDeployment resource
        reason: InstallSuccessful
        status: "True" 1
        type: Installed

    1
    等待 Installed 状态报告为 True
  2. 验证 platform-operators-aggregated 集群 Operator 是否已报告 Available=True 状态:

    $ oc get clusteroperator platform-operators-aggregated -o yaml

    输出示例

    ...
    status:
      conditions:
      - lastTransitionTime: "2022-10-24T17:43:26Z"
        message: All platform operators are in a successful state
        reason: AsExpected
        status: "False"
        type: Progressing
      - lastTransitionTime: "2022-10-24T17:43:26Z"
        status: "False"
        type: Degraded
      - lastTransitionTime: "2022-10-24T17:43:26Z"
        message: All platform operators are in a successful state
        reason: AsExpected
        status: "True"
        type: Available

4.12.4. 在集群创建后安装平台 Operator

作为集群管理员,您可以在使用集群范围的 PlatformOperator API 启用 TechPreviewNoUpgrades 功能集的集群中安装平台 Operator。

流程

  1. 从受支持的基于 OLM 的 Operator 集合中选择一个平台 Operator。有关此集合列表以及当前限制的详情,请参阅"平台 Operator 的技术预览限制"。
  2. 为所选平台 Operator 创建 PlatformOperator 对象 YAML 文件,如 Red Hat OpenShift Service Mesh Operator 的 service-mesh-po.yaml 文件:

    sevice-mesh-po.yaml 文件示例

    apiVersion: platform.openshift.io/v1alpha1
    kind: PlatformOperator
    metadata:
      name: service-mesh-po
    spec:
      package:
        name: servicemeshoperator

  3. 运行以下命令来创建 PlatformOperator 对象:

    $ oc apply -f service-mesh-po.yaml
    注意

    如果您的集群没有启用 TechPreviewNoUpgrade 功能集,则对象创建会失败,并显示以下信息:

    error: resource mapping not found for name: "service-mesh-po" namespace: "" from "service-mesh-po.yaml": no matches for kind "PlatformOperator" in version "platform.openshift.io/v1alpha1"
    ensure CRDs are installed first

验证

  1. 运行以下命令,检查 service-mesh-po platform Operator 的状态:

    $ oc get platformoperator service-mesh-po -o yaml

    输出示例

    ...
    status:
      activeBundleDeployment:
        name: service-mesh-po
      conditions:
      - lastTransitionTime: "2022-10-24T17:24:40Z"
        message: Successfully applied the service-mesh-po BundleDeployment resource
        reason: InstallSuccessful
        status: "True" 1
        type: Installed

    1
    等待 Installed 状态报告为 True
  2. 验证 platform-operators-aggregated 集群 Operator 是否已报告 Available=True 状态:

    $ oc get clusteroperator platform-operators-aggregated -o yaml

    输出示例

    ...
    status:
      conditions:
      - lastTransitionTime: "2022-10-24T17:43:26Z"
        message: All platform operators are in a successful state
        reason: AsExpected
        status: "False"
        type: Progressing
      - lastTransitionTime: "2022-10-24T17:43:26Z"
        status: "False"
        type: Degraded
      - lastTransitionTime: "2022-10-24T17:43:26Z"
        message: All platform operators are in a successful state
        reason: AsExpected
        status: "True"
        type: Available

4.12.5. 删除平台 Operator

作为集群管理员,您可以删除现有的平台 Operator。Operator Lifecycle Manager (OLM) 执行级联删除。首先,OLM 会删除平台 Operator 的捆绑包部署,然后删除 registry+v1 类型捆绑包中引用的任何对象。

注意

平台 Operator Manager 和捆绑包部署置备程序只管理捆绑包中引用的对象,而不管理任何捆绑包工作负载本身部署的对象。例如,如果捆绑包工作负载会创建一个命名空间,且 Operator 没有配置为在删除 Operator 前进行清理,则它超出了 OLM 范围,以便在平台 Operator 删除过程中删除命名空间。

流程

  1. 获取已安装的平台 Operator 列表,找到您要删除的 Operator 的名称:

    $ oc get platformoperator
  2. 删除所选 Operator 的 PlatformOperator 资源,如 Quay Operator:

    $ oc delete platformoperator quay-operator

    输出示例

    platformoperator.platform.openshift.io "quay-operator" deleted

验证

  1. 验证平台 Operator 的命名空间最终已被删除,例如 Quay Operator:

    $ oc get ns quay-operator-system

    输出示例

    Error from server (NotFound): namespaces "quay-operator-system" not found

  2. 验证 platform-operators-aggregated 集群 Operator 继续报告 Available=True 状态:

    $ oc get co platform-operators-aggregated

    输出示例

    NAME                            VERSION     AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    platform-operators-aggregated   4.12.0-0    True        False         False      70s

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.