第 4 章 在集群中添加 Operator


本指南指导集群管理员将 Operator 安装至 OpenShift Container Platform 集群并将 Operator 订阅到命名空间。

4.1. 安装来自 OperatorHub 的 Operator

作为集群管理员,您可使用 OpenShift Container Platform Web 控制台或 CLI 安装来自 OperatorHub 的 Operator。然后,您可将 Operator 订阅至一个或多个命名空间,供集群上的开发人员使用。

安装过程中,您必须为 Operator 确定以下初始设置:

安装模式
选择 All namespaces on the cluster (default) 将 Operator 安装至所有命名空间;或选择单个命名空间(如果可用),仅在选定命名空间中安装 Operator。本例选择 All namespaces…,以便 Operator 可用于所有用户和项目。
更新频道
如果某个 Operator 可通过多个频道获得,则可任选您想要订阅的频道。例如,要通过 stable 频道部署(如果可用),则从列表中选择这个选项。
批准策略
您可选择自动或手动更新。如果选择自动更新某个已安装的 Operator,则当相应 Operator 有可用的新版本时,Operator Lifecycle Manager (OLM) 将自动升级该 Operator 的运行实例,而无需人为干预。如果选择手动更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准该更新请求,才可将 Operator 更新至新版本。

4.1.1. 使用 Web 控制台从 OperatorHub 安装

此流程以 Cuchbase Operator 为例,使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装并订阅 Operator。

先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。

流程

  1. 在 Web 控制台中导航至 Operators OperatorHub 页面。
  2. Filter by keyword 方框中滚动或键入关键词(本例中为 Couchbase),以查找所需 Operator。

    图 4.1. 通过关键词筛选 Operator

    olm operatorhub
  3. 选定 Operator。对于社区 Operator 来说,系统会提醒您红帽对这类 Operator 不予认证。您必须确认收到该提醒才可继续。这时会显示 Operator 信息。
  4. 阅读 Operator 信息并单击 Install
  5. Create Operator Subscription 页面:

    1. 任选以下一项:

      • All namespaces on the cluster (default),选择该项会将 Operator 安装至默认 openshift-operators 命名空间,以便供集群中的所有命名空间监视和使用。该选项并非始终可用。
      • A specific namespace on the cluster,该项支持您选择单一特定命名空间来安装 Operator。该 Operator 仅限在该单一命名空间中监视和使用。
    2. 选择一个更新频道(如有多个可用)。
    3. 如前面所述,选择自动手动批准策略。
  6. 单击 Subscribe,以便该 Operator 可供 OpenShift Container Platform 集群上的所选命名空间使用。

    1. 如果选择手动批准策略,则订阅的升级状态将保持正在升级,直至您审核并批准该 Install Plan。

      图 4.2. 在 Install Plan 页面手动批准

      olm manualapproval

      Install Plan 页面批准后,订阅的升级状态将变为最新

    2. 如果选择自动批准策略,则升级状态应自动变为最新,而无需人为干预。

      图 4.3. 订阅升级状态:最新

      olm uptodate
  7. 当订阅的升级状态变为最新后,选择 Operators Installed Operators 来验证最终是否出现了 Couchbase ClusterServiceVersion (CSV) 且其 Status 在相关命名空间中最终能否解析为 InstallSucceeded

    注意

    对于 All namespaces… 安装模式,该状态会在 openshift-operators 命名空间中被解析为 InstallSucceeded,但您如果检查其他命名空间,其状态则会变为 Copied

    如果没有:

    1. 检查“Workloads Pods”页面上的 openshift-operators 项目(或其他相关命名空间,如果选中 A specific namespace… Installation Mode)中报告问题的 Pod 中的日志,以便进一步排除故障。

4.1.2. 使用 CLI 从 OperatorHub 安装

您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。使用 oc 命令来创建或更新订阅对象。

先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。
  • 在您的本地系统安装 oc 命令。

流程

  1. 查看 OperatorHub 中集群可用的 Operator 列表。

    $ oc get packagemanifests -n openshift-marketplace
    NAME                               CATALOG               AGE
    3scale-operator                    Red Hat Operators     91m
    amq-online                         Red Hat Operators     91m
    amq-streams                        Red Hat Operators     91m
    ...
    couchbase-enterprise-certified     Certified Operators   91m
    mariadb                            Certified Operators   91m
    mongodb-enterprise                 Certified Operators   91m
    ...
    etcd                               Community Operators   91m
    jaeger                             Community Operators   91m
    kubefed                            Community Operators   91m
    ...

    注意适用于您所需 Operator 的 CatalogSource。

  2. 检查所需 Operator,以验证其支持的 InstallMode 和可用频道:

    $ oc describe packagemanifests <operator_name> -n openshift-marketplace
  3. 订阅 Operator 的命名空间必须具有与 Operator 的 InstallMode 相匹配的 OperatorGroup,可采用 AllNamespaces 模式,也可采用 SingleNamespace 模式。如果要安装的 Operator 采用 AllNamespaces 模式,则表明 openshift-operators 命名空间中已有适当的 OperatorGroup。

    如果要安装的 Operator 采用 SingleNamespace 模式,而您没有适当的 OperatorGroup,则必须创建一个。

    注意

    如果选择 SingleNamespace 模式,该流程的 Web 控制台版本会在后台自动为您处理 OperatorGroup 和订阅对象的创建。

    1. 创建 OperatorGroup 对象 YAML 文件,如 operatorgroup.yaml

      OperatorGroup 示例

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: <operatorgroup_name>
        namespace: <namespace>
      spec:
        targetNamespaces:
        - <namespace>

    2. 创建 OperatorGroup 对象:

      $ oc apply -f operatorgroup.yaml
  4. 创建一个订阅对象 YAML 文件,以便为 Operator 订阅一个命名空间,如 sub.yaml

    订阅示例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: <operator_name>
      namespace: openshift-operators 1
    spec:
      channel: alpha
      name: <operator_name> 2
      source: redhat-operators 3
      sourceNamespace: openshift-marketplace 4

    1
    如果使用 AllNamespaces InstallMode,请指定 openshift-operators 命名空间。如果使用 SingleNamespace InstallMode,则指定相关单一命名空间。
    2
    要订阅的 Operator 的名称。
    3
    提供 Operator 的 CatalogSource 的名称。
    4
    CatalogSource 的命名空间。将 openshift-marketplace 用于默认的 OperatorHub CatalogSource。
  5. 创建订阅对象:

    $ oc apply -f sub.yaml

    此时,OLM 已了解所选的 Operator。Operator 的 ClusterServiceVersion (CSV) 应出现在目标命名空间中,由 Operator 提供的 API 应可用于创建。

其他资源

  • 要使用 OperatorHub 在集群中安装自定义 Operator,您必须首先将 Operator 工件上传至 Quay.io,然后再将您自己的 OperatorSource 添加至集群中。另外,您还可在 Operator 中添加 Secret 以便进行身份验证。之后,您便可像其他 Operator 一样在集群中管理这个 Operator 了。如需了解具体步骤,请参阅 Testing Operators

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.