亲历者说: Kubernetes API 与 Operator, 不为人知的开发者战争(13)

TPR 允许你提交一个 YAML 文件 , 来定义你想要的的新 API 对象的名字 , 比如:etcdCluster;也允许你定义这个对象允许的合法的属性 , 比如:int 格式的 size 字段 , string 格式的 version 字段 。 然后 , 你就可以提交一个具体的 etcdCluster 对象的描述文件给 Kubernetes , 等待该对应的 Controller 进行处理 。
而这个 Controller , 就是 Operator 的主干代码了 。

所以接下来 , CoreOS 的两位工程师轻车熟路 , 在 Operator 里对 etcdCluster 对象的增、删、改事件的响应位置 , 写上了创建、删除、更新 etcd 节点的操作逻辑 。 然后 , 调试运行 , 看着一个 etcd 集群按照 YAML 文件里的描述被创建起来 。 大功告成!

就这样 , 在一个普通的周四下午 , 世界上第一个 Operator 诞生在了湾区的一所公寓当中 。

而对于 CoreOS 的两位工程师来说 , 编写这个小工具的主要目的 , 就是借助 Kubernetes 的核心原理来自动化的管理 etcd 集群 , 更重要的是 , 不需要使用 Kubernetes 里自带的 StatefulSet 。

推荐阅读