Operator Framework 是一个开源工具包,用于以有效、自动化和可扩展的方式管理 Kubernetes 原生应用程序(称为 *Operator*)。Operator 利用 Kubernetes 的可扩展性来提供云服务的自动化优势,例如配置、缩放以及备份和还原,同时能够在 Kubernetes 可运行的任何地方运行。
Operator 简化了在 Kubernetes 之上管理复杂的有状态应用程序的过程。但是,如今编写 Operator 可能很困难,因为存在诸如使用低级 API、编写样板代码以及缺乏模块化(导致重复)等挑战。
Operator SDK 是 Operator Framework 的一个组件,它提供了一个命令行界面 (CLI) 工具,Operator 开发人员可以使用该工具来构建、测试和部署 Operator。
Red Hat 支持的 Operator SDK CLI 工具版本(包括与 Operator 项目相关的脚手架和测试工具)已弃用,并计划在未来版本的 OpenShift Dedicated 中删除。Red Hat 将在此版本的生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的 OpenShift Dedicated 版本中删除。 不建议使用 Red Hat 支持的 Operator SDK 版本创建新的 Operator 项目。拥有现有 Operator 项目的 Operator 作者可以使用 OpenShift Dedicated 发布的 Operator SDK CLI 工具版本来维护其项目并创建针对较新版本的 OpenShift Dedicated 的 Operator 版本。 以下与 Operator 项目相关的基础镜像 *未* 被弃用。这些基础镜像的运行时功能和配置 API 仍然支持错误修复和解决 CVE。
有关不受支持的社区维护的 Operator SDK 版本的信息,请参阅 Operator SDK (Operator Framework)。 |
为什么要使用 Operator SDK?
Operator SDK 简化了构建 Kubernetes 原生应用程序的过程,这可能需要深入的、特定于应用程序的操作知识。Operator SDK 不仅降低了这一门槛,而且还有助于减少许多常见管理功能(如计量或监控)所需的样板代码量。
Operator SDK 是一个框架,它使用 controller-runtime 库,通过提供以下功能来简化编写 Operator 的过程:
高级 API 和抽象,可以更直观地编写操作逻辑
用于脚手架和代码生成的工具,可以快速引导新项目
与 Operator Lifecycle Manager (OLM) 集成,以简化在集群上打包、安装和运行 Operator 的过程
扩展以涵盖常见的 Operator 用例
在部署了 Prometheus Operator 的集群上,自动在任何生成的基于 Go 的 Operator 中设置指标
拥有 OpenShift Dedicated 专用管理员访问权限的 Operator 开发者可以使用 Operator SDK 命令行界面 (CLI) 基于 Go、Ansible、Java 或 Helm 开发自己的 Operator。Kubebuilder 作为 Go 语言 Operator 的脚手架解决方案嵌入到 Operator SDK 中,这意味着现有的 Kubebuilder 项目可以直接与 Operator SDK 一起使用并继续工作。
OpenShift Dedicated 支持 Operator SDK 1.36.1。 |
有关 Operator 基本概念和术语的概述,请参见 理解 Operator。
Operator SDK 提供以下流程来开发新的 Operator:
使用 Operator SDK 命令行界面 (CLI) 创建 Operator 项目。
通过添加自定义资源定义 (CRD) 来定义新的资源 API。
使用 Operator SDK API 指定要监视的资源。
在指定的处理程序中定义 Operator 调谐逻辑,并使用 Operator SDK API 与资源进行交互。
使用 Operator SDK CLI 构建并生成 Operator 部署清单。
在高层次上,使用 Operator SDK 的 Operator 会处理 Operator 开发者在处理程序中定义的受监控资源的事件,并采取措施来协调应用程序的状态。