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