×

Operator Lifecycle Manager (OLM) 控制器由名为 `cluster` 的 `OLMConfig` 自定义资源 (CR) 配置。集群管理员可以修改此资源以启用或禁用某些功能。

本文档概述了当前由 OLM 支持并由 `OLMConfig` 资源配置的功能。

禁用复制的 CSV

当 Operator 由 Operator Lifecycle Manager (OLM) 安装时,默认情况下会在 Operator 配置为监视的每个命名空间中创建其集群服务版本 (CSV) 的简化副本。这些 CSV 称为 *复制的 CSV*,它们向用户传达哪些控制器正在积极协调给定命名空间中的资源事件。

当 Operator 配置为使用 `AllNamespaces` 安装模式(相对于针对单个或指定的命名空间集)时,会在集群的每个命名空间中为 Operator 创建一个复制的 CSV。在特别大的集群中,命名空间和已安装的 Operator 可能达到数百或数千个,复制的 CSV 会消耗大量资源,例如 OLM 的内存使用量、集群 etcd 限制和网络。

为了支持这些更大的集群,集群管理员可以全局禁用使用 `AllNamespaces` 模式安装的 Operator 的复制的 CSV。

如果禁用复制的 CSV,则以 `AllNamespaces` 模式安装的 Operator 的 CSV 只会复制到 `openshift` 命名空间,而不是集群的每个命名空间。在禁用了复制的 CSV 的模式下,Web 控制台和 CLI 的行为有所不同。

  • 在 Web 控制台中,默认行为已修改为显示来自 `openshift` 命名空间的复制的 CSV,即使这些 CSV 实际上并未复制到每个命名空间。这允许普通用户仍然能够查看其命名空间中这些 Operator 的详细信息并创建相关的自定义资源 (CR)。

  • 在 OpenShift CLI ( `oc` ) 中,普通用户可以使用 `oc get csvs` 命令查看直接安装在其命名空间中的 Operator,但来自 `openshift` 命名空间的复制的 CSV 在其命名空间中不可见。受此限制影响的 Operator 仍然可用,并继续协调用户命名空间中的事件。

    要查看已安装的全局 Operator 的完整列表(类似于 Web 控制台的行为),所有经过身份验证的用户都可以运行以下命令:

    $ oc get csvs -n openshift
步骤
  • 编辑名为 `cluster` 的 `OLMConfig` 对象,并将 `spec.features.disableCopiedCSVs` 字段设置为 `true`。

    $ oc apply -f - <<EOF
    apiVersion: operators.coreos.com/v1
    kind: OLMConfig
    metadata:
      name: cluster
    spec:
      features:
        disableCopiedCSVs: true (1)
    EOF
    1 已为 `AllNamespaces` 安装模式的 Operator 禁用复制的 CSV。
验证
  • 禁用复制的 CSV 后,OLM 会在其 Operator 的命名空间中捕获此信息。

    $ oc get events
    示例输出
    LAST SEEN   TYPE      REASON               OBJECT                                MESSAGE
    85s         Warning   DisabledCopiedCSVs   clusterserviceversion/my-csv.v1.0.0   CSV copying disabled for operators/my-csv.v1.0.0

    当 `spec.features.disableCopiedCSVs` 字段缺失或设置为 `false` 时,OLM 会为所有以 `AllNamespaces` 模式安装的 Operator 重新创建复制的 CSV,并删除前面提到的事件。

其他资源