×

operator-lib 清理实用程序允许基于 Go 的 Operator 清理或修剪不再需要的对象。Operator 作者也可以使用该实用程序创建自定义钩子和策略。

Red Hat 支持的 Operator SDK CLI 工具版本(包括 Operator 项目相关的脚手架和测试工具)已弃用,并计划在未来版本的 Red Hat OpenShift Service on AWS 中移除。Red Hat 将在此版本的生命周期内为该功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的 Red Hat OpenShift Service on AWS 版本中移除。

不建议使用 Red Hat 支持的 Operator SDK 版本创建新的 Operator 项目。拥有现有 Operator 项目的 Operator 作者可以使用 Red Hat OpenShift Service on AWS 发布的 Operator SDK CLI 工具版本来维护其项目并创建针对较新版本的 Red Hat OpenShift Service on AWS 的 Operator 版本。

以下与 Operator 项目相关的基础镜像**未**被弃用。这些基础镜像的运行时功能和配置 API 仍受支持,用于错误修复和解决 CVE。

  • 基于 Ansible 的 Operator 项目的基础镜像

  • 基于 Helm 的 Operator 项目的基础镜像

有关不受支持的社区维护的 Operator SDK 版本的信息,请参见 Operator SDK (Operator Framework)

关于 operator-lib 清理实用程序

作业或 Pod 等对象是作为 Operator 生命周期正常的一部分创建的。如果拥有 dedicated-admin 角色的管理员或 Operator 未删除这些对象,它们可能会保留在集群中并消耗资源。

以前,可以使用以下选项来清理不必要的对象

  • Operator 作者必须为其 Operator 创建一个独特的清理解决方案。

  • 集群管理员必须自行清理对象。

operator-lib 清理实用程序 从给定命名空间的 Kubernetes 集群中删除对象。该库作为 Operator Framework 的一部分,已添加到 operator-lib0.9.0 版本中。

清理实用程序配置

operator-lib 清理实用程序是用 Go 编写的,包含基于 Go 的 Operator 的常用清理策略。

配置示例
cfg = Config{
        log:           logf.Log.WithName("prune"),
        DryRun:        false,
        Clientset:     client,
        LabelSelector: "app=<operator_name>",
        Resources: []schema.GroupVersionKind{
                {Group: "", Version: "", Kind: PodKind},
        },
        Namespaces: []string{"<operator_namespace>"},
        Strategy: StrategyConfig{
                Mode:            MaxCountStrategy,
                MaxCountSetting: 1,
        },
        PreDeleteHook: myhook,
}

清理实用程序配置文件使用以下字段定义清理操作

配置字段 描述

log

用于处理库日志消息的记录器。

DryRun

布尔值,用于确定是否应移除资源。如果设置为true,则实用程序运行但不移除资源。

Clientset

用于 Kubernetes API 调用的 client-go Kubernetes ClientSet。

LabelSelector

用于查找要清理的资源的 Kubernetes 标签选择器表达式。

资源

Kubernetes 资源种类。目前支持PodKindJobKind

Namespaces

要搜索资源的 Kubernetes 命名空间列表。

Strategy

要运行的清理策略。

Strategy.Mode

目前支持MaxCountStrategyMaxAgeStrategyCustomStrategy

Strategy.MaxCountSetting

MaxCountStrategy 的整数值,用于指定清理实用程序运行后应保留多少资源。

Strategy.MaxAgeSetting

Go time.Duration 字符串值,例如 48h,用于指定要清理的资源的年龄。

Strategy.CustomSettings

可以传递到自定义策略函数的 Go 值映射。

PreDeleteHook

可选:在清理资源之前要调用的 Go 函数。

CustomStrategy

可选:实现自定义清理策略的 Go 函数。

清理执行

您可以通过在清理配置上运行 execute 函数来调用清理操作。

err := cfg.Execute(ctx)

您还可以使用 cron 包或通过触发事件调用清理实用程序来调用清理操作。