高日耀 资深数据库内核研发 毕业于华中科技大学,喜欢研究主流数据库架构和源码,并长期从事分布式数据库内核研发。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信),现主要负责 Mysql 系列产品内核开发(青云科
高日耀 资深数据库内核研发
毕业于华中科技大学,喜欢研究主流数据库架构和源码,并长期从事分布式数据库内核研发。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信),现主要负责 Mysql 系列产品内核开发(青云科技)。
本文是 mysql Operator 设计第二篇,上一篇 介绍了 Mysql Operator 架构概览和设计思路。这一期将介绍 Operator 脚手架选型和工程创建过程。
建筑工地在建设房子的时候,最开始都要搭建一个脚手架,便于更快更安全的施工造房子。同样, Operator 工程的构建也要搭建一个脚手架,方便后续快速的开发和迭代,而 kubernetes 社区有很多成熟的构建脚手架的工具供我们选择。
目前社区活跃度和使用率最高的是 Operator SDK 和 Kubebuilder。它们都使用官方的 controller-tools 和 controller-runtime,有相同的布局,不同点在于:
目前两个社区逐渐在融合,Operator SDK 也在不断向 Kubebuilder 靠拢,因此我们选择更原生、更嫡系的 Kubebuilder (目前到了 3.0 版本) 作为 Operator 工程的脚手架。
Kubebuilder 为 Operator 代码库中涉及的各种组件(如 CRD 和 Controller-API)的代码生成提供了快速教程和简单的脚手架,其架构如下所示:
按以下两个步骤创建工程:
1.初始化 Operator 工程
初始化域名设置为 radondb.com,将自动生成了镜像制作脚本,Makefile,配置文件以及 main.Go 。指令如下:
kubebuilder init --domain=radondb.com
2.创建 Controller
API、GVK(group, version, kind) 分别指定为 mysql, v1alpha1, MysqlCluster。
controller 参数设置为 true 意思是自动生成控制器初始的代码文件。指令如下:
kubebuilder create api --group mysql --version v1alpha1 --kind MysqlCluster --resource=true --controller=true
通过两条指令生成的文件目录对比,执行第二条指令后,多了 api 目录,crd 目录以及 controllers 目录。
以下为 radondb-mysql-kubernetes 项目的当前目录结构及功能介绍。
Operator 基于 Kubernetes 的资源和控制器概念之上构建,同时又包含了应用程序特定的领域知识。创建 Operator 的关键是 CRD(自定义资源)的设计。下一篇我们将解析 radondb-mysql-kubernetes 项目中自定义 CRD 的设计。
--结束END--
本文标题: MySQL Operator 02 | 脚手架选型 & 工程创建
本文链接: https://lsjlt.com/news/8887.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0