Helm vs Operator
Kubernetes提供声明式API对标准对象进行生命周期管理,例如Deployment,Pod,Service以及ConfigMap等。基于这种原子能力,开发人员可以自由组合各种对象,以Yaml,Json等格式文件进行定义,构建自己的业务应用。
随着应用自身的复杂度增加,依赖条件变多,部署环境的多样性,这种原始的声明式API使用方式显得低效且不够灵活;另外,在应用与声明式API之间缺少一个构建标准,也不利于应用的共享,分发,以及应用市场的发展。Helm和Operator应运而生,在声明式API之上进行了一层抽象和封装,成为解决这种困境的两个主要流派。
Helm Chart
Helm是基于Kubernetes的应用包管理工具,可实现应用程序封装、版本管理、依赖检查、应用分发,是对容器应用所需资源组件进行集中管理,并通过模板化和配置分离提高声明式API的开发和使用效率。Chart包则是应用的载体,实现了应用的分发和共享,支撑了应用市场的发展。
Operator
Operator主要包含CRD和Controller两个部分:
- CRD是在Kubernetes的标准对象之上构建一层直接面向应用的扩展对象,例如Mysql Operator提供的InnoDBCluster和MySQLBackup这两个扩展对象。
- Controller是指自定义控制器,以Deployment的形式在Kubernetes中运行,监听CRD的配置变化,并转换成标准对象进行实现。控制器自动