×

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

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

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

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

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

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

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

关于 operator-lib 修剪实用程序

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

以前,可以使用以下选项来修剪不需要的对象

  • 操作符作者必须为其操作符创建唯一的修剪解决方案。

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

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

修剪实用程序配置

operator-lib 修剪实用程序是用 Go 编写的,包含用于基于 Go 的操作符的常见修剪策略。

配置示例
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,实用程序将运行但不删除资源。

客户端集

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

标签选择器

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

资源

Kubernetes 资源种类。目前支持PodKindJobKind

命名空间

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

策略

要运行的修剪策略。

策略.模式

目前支持MaxCountStrategyMaxAgeStrategyCustomStrategy

策略.最大计数设置

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

策略.最大年龄设置

Go time.Duration 字符串值,例如48h,指定要修剪的资源的年龄。

策略.自定义设置

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

删除前钩子

可选:在修剪资源之前调用的 Go 函数。

自定义策略

可选:实现自定义修剪策略的 Go 函数。

修剪执行

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

err := cfg.Execute(ctx)

您也可以使用 cron 包或通过触发事件调用修剪实用程序来调用修剪操作。