apiVersion: apache.org/v1alpha1
kind: Tomcat
metadata:
name: example-app
spec:
replicaCount: 2
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。
有关不受支持的社区维护的 Operator SDK 版本的信息,请参阅Operator SDK (Operator Framework)。 |
Operator SDK 生成 Operator 项目的选项之一包括利用现有的 Helm 图表来部署 Kubernetes 资源作为统一的应用程序,而无需编写任何 Go 代码。此类基于 Helm 的 Operator 旨在擅长于需要在推出时几乎不需要逻辑的无状态应用程序,因为应将更改应用于作为图表一部分生成的 Kubernetes 对象。这听起来可能很有限,但正如 Kubernetes 社区构建的 Helm 图表的激增所显示的那样,它足以满足令人惊讶的大量用例。
Operator 的主要功能是从表示应用程序实例的自定义对象读取,并使其期望状态与正在运行的状态匹配。对于基于 Helm 的 Operator,对象的spec
字段是配置选项的列表,这些选项通常在 Helm values.yaml
文件中描述。您可以使用自定义资源 (CR) 在其中表达这些值,而不是使用 Helm CLI(例如,helm install -f values.yaml
)使用标志设置这些值,自定义资源 (CR) 作为本机 Kubernetes 对象,可以利用应用于它的 RBAC 的优势以及审计跟踪。
例如一个名为Tomcat
的简单 CR:
apiVersion: apache.org/v1alpha1
kind: Tomcat
metadata:
name: example-app
spec:
replicaCount: 2
在这种情况下,replicaCount
值为2
,它被传播到图表模板中,在其中使用以下内容:
{{ .Values.replicaCount }}
构建和部署 Operator 后,您可以通过创建 CR 的新实例来部署应用程序的新实例,或者使用oc
命令列出在所有环境中运行的不同实例。
$ oc get Tomcats --all-namespaces
无需使用 Helm CLI 或安装 Tiller;基于 Helm 的 Operator 从 Helm 项目导入代码。您所要做的就是运行 Operator 实例并将 CR 与自定义资源定义 (CRD) 注册。因为它遵循 RBAC,所以您可以更轻松地防止生产更改。