kubernetes|Kubernetes Operators和Helm图表,互补还是竞争?

kubernetes|Kubernetes Operators和Helm图表,互补还是竞争?

文章图片

kubernetes|Kubernetes Operators和Helm图表,互补还是竞争?

Kubernetes Operators和Helm图表(Helm Charts)是互补而非竞争的技术 。
在Kubernetes中 , Helm图表和Kubernetes Operators都是让任务自动化的便捷工具 , 这些任务原本需要大量的人工工作 。 虽然它们都是为自动化而生 , 但它们并不是完全可互换的工具 。 来一起看看二者的工作方式 , 以及什么时候使用它们 。

为什么需要Kubernetes Operators和Helm图表?手动编写YAML文件对于大多数人来说并不容易 , 而且每次手动编写自定义YAML都是不现实的 , 而且需要在Kubernetes集群中部署应用程序或修改配置设置 。 Helm图表和Kubernetes Operators通过为管理员提供了一种将应用程序和配置部署到Kubernetes集群中的简便方法 。
而使用Helm还是Operators取决于要部署的应用程序类型以及所需的特殊配置 。
Helm用例Helm是Kubernetes的软件包管理系统 。 使用称为图表(Charts)的打包格式 , 用户可以将应用程序 , 比如Kafka或Apache HTTP打包为其他任何人都可以只用几个命令就可以在Kubernetes集群上部署的格式 , 而几乎不需要手动更改YAML文件 。

如果你熟悉Linux上下文中的软件包管理 , 那么Helm图表应该很容易理解 。 它们类似于Debian或RPM软件包 , 而Helm本身就像apt或dnf 。 就像你可以在Ubuntu上apt-get install [某些软件包
一样 , 也可以在Kubernetes上Helm安装[某些软件包
, 来让应用程序快速启动并运行 。
Operators的用例Operators还将应用程序打包为易于部署的格式 , 但他们要做的不止这些 。 使用Kubernetes自定义资源 , 管理员还可以在程序包中包含大量复杂的配置数据 。
因此 , 可以使用Kubernetes Operators来以完全自动化的方式部署有状态的应用程序;或者数据库模式之类的事情;抑或以特定方式配置集群部署应用程序 , 来实现高可用性 。 确实 , 使用Kubernetes Operators时甚至不需要部署应用程序 。 用户可以使用Kubernetes Operators来自动执行其他任务 , 例如执行备份或基于预定义模板以特殊方式配置集群 。

与Helm图表不同 , Kubernetes Operators不好与其他平台做比较 , 尽管它们可以与其他类型的工具进行比较 。 在某些方面 , 你可以认为Kubernetes Operators就像部署在Linux服务器上来修改服务器配置的Bash脚本一样 , 尽管与一般的Bash脚本相比 , Kubernetes Operators的打包和部署更加简洁 。
Kubernetes Operators在某些方面也许类似于操作系统镜像文件 , 可以使用它来部署以特定方式设置的操作系统环境的副本 。 但是 , Kubernetes Operators比镜像文件更容易修改和部署 。 如果要部署OS镜像 , 则必须从头开始构建新的OS 。 相反 , Kubernetes Operators可以部署在现有的Kubernetes集群上 , 仅更改Kubernetes Operators打算更改的集群配置那一部分 。
什么时候使用Helm图表和Kubernetes Operators?什么时候应该使用Helm?什么时候使用Kubernetes Operators?其实答案取决于一下几个因素:
只是在安装应用程序吗?如果主要目标是部署应用程序 , 那么Helm可能是更好的解决方案 。
多少定制化?如果你正在部署通用应用程序并且觉得默认设置还可以 , 那么Helm就足够了 。 但如果需要特殊配置 , 就可以使用Kubernetes Operators 。
集群有多成熟?通常 , 当首次设置Kubernetes集群并想要部署应用程序时 , Helm图表最有用 。 当集群已经启动并正在运行时 , Kubernetes Operators会派上用场 , 来实现复杂的自定义配置或部署特殊的应用程序 。
【kubernetes|Kubernetes Operators和Helm图表,互补还是竞争?】写在最后 , 所以对于大多数技术团队而言 , 使用Helm图表和Kubernetes Operators来实现不同的目标 。 它们是互补的 , 而不是竞争的关系 。 都有助于自动化Kubernetes工作流程 , 并与其他人共享Kubernetes应用程序和配置 , 并可以解决不同类型的用例 。


    推荐阅读