4.6. 管理 Operator 条件


作为集群管理员,您可以使用 Operator Lifecycle Manager(OLM)来管理 Operator 状况。

4.6.1. 覆盖 Operator 条件

作为集群管理员,您可能想要忽略由 Operator 报告的、支持的 Operator 条件。当存在时,Spec.Overrides 阵列中的 Operator 条件会覆盖 Spec.Conditions 阵列中的条件,以便集群管理员可以处理 Operator 向 Operator Lifecycle Manager(OLM)报告了不正确状态的情况。

注意

默认情况下,OperatorCondition 对象中不存在 Spec.Overrides 数组,直到集群管理员添加为止。Spec.Conditions 数组还不存在,直到被用户添加或因为自定义 Operator 逻辑而添加为止。

例如,一个 Operator 的已知版本,它始终会告知它是不可升级的。在这种情况下,尽管报告是不可升级的,您仍然希望升级 Operator。这可以通过在 OperatorCondition 对象的 Spec.Overrides 阵列中添加 typestatus 来覆盖 Operator 条件来实现。

先决条件

  • 具有 OperatorCondition 对象的 Operator,使用 OLM 安装。

流程

  1. 编辑 Operator 的 OperatorCondition 对象:

    $ oc edit operatorcondition <name>
  2. 在对象中添加 Spec.Overrides 数组:

    Operator 条件覆盖示例

    apiVersion: operators.coreos.com/v1
    kind: OperatorCondition
    metadata:
      name: my-operator
      namespace: operators
    spec:
      overrides:
      - type: Upgradeable 1
        status: "True"
        reason: "upgradeIsSafe"
        message: "This is a known issue with the Operator where it always reports that it cannot be upgraded."
      conditions:
      - type: Upgradeable
        status: "False"
        reason: "migration"
        message: "The operator is performing a migration."
        lastTransitionTime: "2020-08-24T23:15:55Z"

    1
    允许集群管理员将升级就绪状态更改为 True

4.6.2. 更新 Operator 以使用 Operator 条件

Operator Lifecycle Manager(OLM)会自动为每个它所协调的 ClusterServiceVersion 资源创建一个 OperatorCondition 资源。CSV 中的所有服务帐户都会被授予 RBAC,以便与 Operator 拥有的 OperatorCondition 交互。

Operator 作者可开发其自己的 Operator 来使用 operator-lib 库,以便在由 OLM 部署 Operator 后,它可以设置自己的条件。如需有关编写逻辑以将 Operator 条件设置为 Operator 作者的更多信息,请参阅 Operator SDK 文档。

4.6.2.1. 设置默认值

为了保持向后兼容,OLM 认为在没有 OperatorCondition 时代表不使用条件。因此,要使用 Operator 条件的 Operator,在将 pod 的就绪探测设置为 true 前应设置默认条件。这为 Operator 提供了一个宽限期,用于将条件更新为正确的状态。

4.6.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.