×

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

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

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

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

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

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

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行说明中的“已弃用和已删除的功能”部分。

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

关于 operator-lib 修剪实用程序

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

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

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

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

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,则实用程序运行但不删除资源。

Clientset

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

LabelSelector

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

资源

Kubernetes 资源种类。目前支持 PodKindJobKind

命名空间

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

策略

要运行的修剪策略。

策略模式

目前支持 MaxCountStrategyMaxAgeStrategyCustomStrategy

策略.最大数量设置

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

策略.最大年龄设置

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

策略.自定义设置

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

预删除钩子

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

自定义策略

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

修剪执行

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

err := cfg.Execute(ctx)

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