Operator 版本化
Operator 的版本升级通常在考虑的是 Operator 自定义的 CRD 对象和存储数据的升级。
当 Operator 版本升级可能会需要对 CRD 结构进行升级,同时随着 Operator 开发完成,CRD 也会调整版本号为更正式的版本,这时候就要考虑对升级前的数据进行兼容,而如果 CRD 结构有调整也要考虑进行数据的迁移。
但在此之前,我们可以看一下 Kubernetes 中对于 CRD 版本的一些定义。
Operator 的版本升级通常在考虑的是 Operator 自定义的 CRD 对象和存储数据的升级。
当 Operator 版本升级可能会需要对 CRD 结构进行升级,同时随着 Operator 开发完成,CRD 也会调整版本号为更正式的版本,这时候就要考虑对升级前的数据进行兼容,而如果 CRD 结构有调整也要考虑进行数据的迁移。
但在此之前,我们可以看一下 Kubernetes 中对于 CRD 版本的一些定义。
Kubernetes 1.7 版本以来就引入了自定义控制器的概念,该功能可以让开发人员扩展添加新功能,更新现有的功能,并且可以自动执行一些管理任务。
Operator 是由 CoreOS 开发的,用来扩展 Kubernetes API 的控制器框架,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。
Operator 基于 Kubernetes 的资源和控制器概念之上构建,但同时又包含了应用程序特定的领域知识。
这些自定义的控制器就像 Kubernetes 原生的组件一样,Operator 直接使用 Kubernetes API 进行开发,也就是说可以根据这些控制器内部编写的自定义规则来监控集群、更改 Pods/Services、对正在运行的应用进行扩缩容。
创建 Operator 的关键是 CRD(自定义资源)的设计。本文将通过虚拟需求,设计 CRD 并实现 CRD 的控制逻辑,以体验 Operator 的开发过程。