Skip to content

51 应用为中心的封装(下):Operator与OAM

你好,我是周志明。上节课我们了解了无状态应用的两种主流封装方式,分别是Kustomize和Helm。那么今天这节课,我们继续来学习有状态应用的两种封装方法,包括Operator和开放应用模型。

Operator

与Kustomize和Helm不同的是,Operator不应当被称作是一种工具或者系统,它应该算是一种封装、部署和管理Kubernetes应用的方法,尤其是针对最复杂的有状态应用去封装运维能力的解决方案,最早是由CoreOS公司(于2018年被RedHat收购)的华人程序员邓洪超提出的。

简单来说,Operator是通过Kubernetes 1.7开始支持的自定义资源(Custom Resource Definitions,CRD,此前曾经以TPR,即Third Party Resource的形式提供过类似的能力),把应用封装为另一种更高层次的资源,再把Kubernetes的控制器模式从面向内置资源,扩展到了面向所有自定义资源,以此来完成对复杂应用的管理。

具体怎么理解呢?我们来看一下RedHat官方对Operator设计理念的阐述:

Operator设计理念
Operator是使用自定义资源(CR,本人注:CR即Custom Resource,是CRD的实例)管理应用及其组件的自定义Kubernetes控制器。高级配置和设置由用户在CR中提供。Kubernetes Operator基于嵌入在Operator逻辑中的最佳实践,将高级指令转换为低级操作。Kubernetes Operator监视CR类型并采取特定于应用的操作,确保当前状态与该资源的理想状态相符。
—— 什么是 Kubernetes Operator,RedHat