×

作为具有 `dedicated-admin` 角色的管理员,您可以使用操作符生命周期管理器 (OLM) 管理操作符条件。

覆盖操作符条件

作为具有 `dedicated-admin` 角色的管理员,您可能希望忽略操作符报告的支持的操作符条件。如果存在,`Spec.Overrides` 数组中的操作符条件会覆盖 `Spec.Conditions` 数组中的条件,允许 `dedicated-admin` 管理员处理操作符错误地向操作符生命周期管理器 (OLM) 报告状态的情况。

默认情况下,在 `dedicated-admin` 角色的管理员添加之前,`Spec.Overrides` 数组不会出现在 `OperatorCondition` 对象中。`Spec.Conditions` 数组也不存在,除非用户添加它或它是自定义操作符逻辑的结果。

例如,考虑一个已知版本的始终报告其不可升级的操作符。在这种情况下,您可能希望升级操作符,即使操作符报告其不可升级。这可以通过向 `OperatorCondition` 对象的 `Spec.Overrides` 数组添加条件 `type` 和 `status` 来覆盖操作符条件来实现。

前提条件
  • 您作为具有 `dedicated-admin` 角色的用户可以访问集群。

  • 使用 OLM 安装的操作符具有 `OperatorCondition` 对象。

步骤
  1. 编辑操作符的 `OperatorCondition` 对象

    $ oc edit operatorcondition <name>
  2. 向对象添加 `Spec.Overrides` 数组

    操作符条件覆盖示例
    apiVersion: operators.coreos.com/v2
    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 允许 `dedicated-admin` 用户将升级就绪状态更改为 `True`。

更新您的操作符以使用操作符条件

操作符生命周期管理器 (OLM) 会自动为其协调的每个ClusterServiceVersion 资源创建OperatorCondition 资源。CSV 中的所有服务账户都拥有与操作符拥有的OperatorCondition 交互的 RBAC 权限。

操作符作者可以开发其操作符以使用operator-lib 库,这样,在操作符由 OLM 部署后,它可以设置自己的条件。有关作为操作符作者设置操作符条件的更多资源,请参见启用操作符条件页面。

设置默认值

为了保持向后兼容性,OLM 将缺少OperatorCondition 资源视为选择退出该条件。因此,选择使用操作符条件的操作符应在 pod 的就绪探针设置为true 之前设置默认条件。这为操作符提供了一个缓冲期,以便将条件更新到正确的状态。

其他资源