5.14. 基于 Go 的 Operator 的对象修剪工具


operator-lib 修剪工具使基于 Go 的 Operator 清理或修剪对象(当不再需要时)。Operator 作者也可以使用实用程序创建自定义 hook 和策略。

重要

红帽支持的 Operator SDK CLI 工具版本,包括 Operator 项目的相关构建和测试工具已被弃用,计划在以后的 OpenShift Dedicated 发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序错误修复和支持,但此功能将不再获得改进,并将在以后的 OpenShift Dedicated 版本中删除。

对于创建新 Operator 项目,不建议使用红帽支持的 Operator SDK 版本。现有 Operator 项目的 Operator 作者可使用 OpenShift Dedicated 4 发布的 Operator SDK CLI 工具版本来维护其项目,并创建针对较新版本的 OpenShift Dedicated 的 Operator 发行版本。

以下与 Operator 项目相关的基础镜像 没有被弃用。这些基础镜像的运行时功能和配置 API 仍然会有程序错误修复和并提供对相关 CVE 的解决方案。

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

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

5.14.1. 关于 operator-lib 修剪工具

对象(如作业或 pod)作为 Operator 生命周期的一个普通部分创建。如果具有 dedicated-admin 角色或 Operator 的管理员没有删除这些对象,他们可以保留在集群中并消耗资源。

在以前的版本中,可以使用以下选项修剪不必要的对象:

  • Operator 作者必须为其 Operator 创建唯一的修剪解决方案。
  • 集群管理员必须自行清理对象。

operator-lib pruning(修剪)工具可为给定的命名空间从 Kubernetes 集群中删除对象。该程序库被添加到 operator-lib0.9.0 版本中,作为 Operator Framework 的一部分。

5.14.2. 修剪工具配置

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 标签选择器表达式。

Resources

Kubernetes 资源类型.PodKindJobKind 目前被支持。

命名空间

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

策略

要运行的策略。

Strategy.Mode

目前支持 MaxCountStrategyMaxAgeStrategyCustomStrategy

Strategy.MaxCountSetting

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

Strategy.MaxAgeSetting

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

Strategy.CustomSettings

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

PreDeleteHook

可选:在修剪资源前调用 Go 功能。

CustomStrategy

可选:实现自定义修剪策略的 Go 功能

修剪执行

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

err := cfg.Execute(ctx)

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.