作者:Diane Mueller,红帽云平台社区发展总监
开发者和 Kubernetes 管理员面临的重要挑战之一,是缺乏快速查找在 Kubernetes 提供运营就绪的公共服务的能力。通常情况下,存在特定服务的 Operator – 这种模式在 2016 年推出并获得了动力 – 对于 Kubernetes 服务的运营就绪是一个很好的信号。但是,迄今为止还没有 Operator 注册表来简化发现此类服务。
为了帮助应对这一挑战,今天 Red Hat 与 AWS、Google Cloud 和 Microsoft 合作推出 OperatorHub.io。OperatorHub.io 使开发者和 Kubernetes 管理员能够查找和安装策划好的、Operator 支持的服务,其中包括基础文档、社区或供应商的主动维护、基本测试以及 Kubernetes 优化生命周期管理的打包。
目前在 OperatorHub.io 中的 Operator 只是开始。我们邀请 Kubernetes 社区加入我们,通过在 OperatorHub.io 上开发、打包和发布 Operator,为 Operator 建立一个充满活力的社区。
OperatorHub.io 提供什么?
OperatorHub.io 旨在满足 Kubernetes 开发者和用户的需求。对于前者,它提供了通用的注册表,他们可以在其中发布他们的 Operator 以及描述、相关的详细信息,如版本、镜像、代码仓库,并打包准备方便安装。他们也可以对已发布的 Operator 发布更新版本。
用户可以在一个中心位置发现和下载 Operator,该 Operator 的内容已根据前面提到的标准进行筛选并扫描已知漏洞。此外,开发者可以使用他们引入的 CustomResources 的说明性示例,指导其 Operator 的用户,与应用程序进行交互。
Operator 是什么?
Operator 最初由 CoreOS 于 2016 年推出,并已被 Red Hat 和 Kubernetes 社区用作打包、部署和管理 Kubernetes 原生应用程序的方法。Kubernetes 原生应用程序是一个部署在 Kubernetes 上的应用程序,使用 Kubernetes API 和众所周知的工具进行管理,如 kubectl。
Operator 实现为自定义控制器,用于监视某些 Kubernetes 资源的显示、修改或删除。这些通常是 Operator“拥有”的 CustomResourceDefinition。在这些对象的 spec 属性中,用户声明应用程序或操作的所需状态。Operator 的协调循环将选择这些,并执行所需的操作以实现所需的状态。例如,可以通过创建 EtcdCluster 类型的新资源,来表达创建高可用性 etcd 集群的意图:
apiVersion: “etcd.database.coreos.com/v1beta2”
kind: “EtcdCluster”
metadata:
name: “my-etcd-cluster”
spec:
size: 3
version: “3.3.12”
这样,EtcdOperator 将负责创建运行版本 v3.3.12 的 3 节点 etcd 集群。类似地,可以定义类型为 EtcdBackup 的对象,以表示创建 etcd 数据库一致备份到 S3 存储桶的意图。
如何创建和运行 Operator?
一种入门方法是使用 Operator 框架,这是一个开源工具包,提供 SDK、生命周期管理、计量和监视功能。它使开发者能够构建、测试和打包 Operator。Operator 可以用几种编程和自动化语言实现,包括 Go、Helm 和 Ansible,这三种语言都直接由 SDK 支持。
如果你有兴趣创建自己的 Operator,我们建议你查看 Operator 框架以开始使用。
Operator 的功能范围各不相同,从基本功能到应用程序的特定操作逻辑,以及备份、恢复或调整等高级方案的自动化。除了基本安装之外,高级 Operator 可以更加无缝地处理升级并自动应对故障。目前,OperatorHub.io 上的 Operator 来自不同成熟度范围,但我们预计它们会随着时间而持续成熟。
虽然不需要使用 SDK 实现 OperatorHub.io 上的 Operator,但它们是打包给通过 Operator Lifecycle Manager(OLM)进行部署。格式主要由称为 ClusterServiceVersion 的 YAML 清单组成。它提供有关 Operator 拥有或要求的 CustomResourceDefinitions 的信息、所需的 RBAC 定义、存储图像的位置等。此文件通常附带定义 Operator 自己的 CRD 的其他 YAML 文件。OLM 在用户请求安装 Operator 以提供依赖性解析和自动化时处理此信息。
OperatorHub.io 上的 Operator 列表是什么意思?
要列出,Operator 必须成功显示群集生命周期功能,打包为 CSV 并通过 OLM 维护,以及为其预期用户提供可接受的文档。
目前在 OperatorHub.io 上列出的 Operator 的一些示例包括:Amazon Web Services Operator、Couchbase Autonomous Operator、CrunchyData’s PostgreSQL、etcd Operator、Jaeger Operator for Kubernetes、Kubernetes Federation Operator、MongoDB Enterprise Operator、Percona MySQL Operator、PlanetScale’s Vitess Operator、Prometheus Operator 和 Redis Operator。
想要将你的 Operator 添加到 OperatorHub.io?跟着这些步骤
如果你有现有的 Operator,请遵循贡献指南使用社区 Operator 仓库的分支。每个贡献包含 CSV、所有 CustomResourceDefinitions、访问控制规则以及安装和运行 Operator 所需的容器映像的资料,其功能描述和支持的 Kubernetes 版本等其他信息。EtcdOperator 可以作为完整的示例,包括 Operator 的多个版本。
在你自己的集群上测试 Operator 之后,将 PR 提交到社区存储库,其中包含此目录结构的所有 YAML 文件。可以以相同的方式发布 Operator 的后续版本。刚开始这将是手动审查,但往后会自动化。由维护者合并之后,它将显示在 OperatorHub.io 上,以及其文档和方便的安装方法。
想了解更多?
参加即将举行的 Kubernetes Operator 框架实践研讨会:3 月 7 日在 Pasadena 的 ScaleX 举行,以及 3 月 11 日在 Santa Clara 的 OpenShift Commons Gathering on Operating 举行
听听 Daniel Messer 和 Diane Mueller 关于“Operator 现况”的 OpenShift Commons 简报
加入社区 Kubernetes-Operator Slack Channel 和 Operator 框架 Google Group 的在线对话
最后,阅读如何将你的 Operator 添加到 OperatorHub.io:https://operatorhub.io/contri…
KubeCon + CloudNativeCon 和 Open Source Summit 大会日期:
会议日程通告日期:2019 年 4 月 10 日
会议活动举办日期:2019 年 6 月 24 至 26 日
KubeCon + CloudNativeCon 和 Open Source Summit 赞助方案 KubeCon + CloudNativeCon 和 Open Source Summit 多元化奖学金现正接受申请 KubeCon + CloudNativeCon 和 Open Source Summit 即将首次合体落地中国 KubeCon + CloudNativeCon 和 Open Source Summit 购票窗口,立即购票!