为什么我们需要Operator?
编写Operator其目的是将部署从文档化转为代码化,从人工部署转为自动化部署,即“部署即代码”,但还不是纯粹的部署即代码,因为基础设施依然需要手动去申请。
例如部署网络接入器(我司基于百度开源BFE二次开发的七层流量代理网关),我们需要先部署Zookeeper,再部署BFE,然后还需要购买域名,配置域名解析,最后购买TLS证书,并推送证书到BFE节点上,然后还需要到配置中心修改添加配置。
以往我们的做法是将这一部署流程记录到文档,每次部署都根据这个文档按顺序去操作,不仅是效率低,一个流程下来涉及到多次跨部门沟通,通常需要一两天的时间,且容易遗漏步骤或者出错。
基于Kubernetes Operator,我们将部署的每一个步骤都代码化,让代码自动去checklist,真正做到文档即代码,代码即文档,整个部署流程将缩减到分钟级别。
Operator简介以及学习方法
简单概括,Kubernetes Operator实际就是自定义资源(CRD)+ 自定义资源控制器(Controller)。
那么Operator是如何做到的呢?这需要我们对Kubernetes的架构和工作原理有所理解。
例如,我们部署一个微服务,需要我们先编写Deployment.yml,然后执行kubectl命令apply一下,实际就是kubectl工具调用API创建Deployment资源,然后Kubernetes的Deployment资源控制器会监听到Deployment资源的创建&