Kubernetes为你所有的容器应用提供了一个家。但是,你如何用数据库和网络应用等来布置这个家?这就要介绍下Helm了,如果Kubernetes是你的家,Helm就是你获取家具的地方。
Kubernetes是你应用的家
Kubernetes需要一组服务器(裸机或虚拟机),还需要一个复杂的容器管理系统。遵循声明式基础架构的原则,Kubernetes提供了从简单容器执行环境(Pods)到入口点、服务抽象和持久存储卷等数十种资源定义。这些使Kubernetes成为运行容器化应用灵活而强大的家。
但是,将新应用部署到新家中会带来陡峭的学习曲线,以及Adam Reese所说的Kubernetes开发周期——复制YAML、粘贴YAML、固定缩进、重复。
Helm让你跳过这一切。
Helm是你的宜家
多少人家里有家具?答案是几乎所有人。
但是有多少人在家里制作家具?这样的人少得多。
只有那些拥有高度的技术知识,熟练掌握众多工具的人会这么做。他们热衷于制作家具的每一个细节。
许多人选择让工匠为我们制作家具,而后选择我们想要的,并处理一些小的细节,以适应个人口味。这就是为什么像宜家这样的家具制造商取得了成功。他们通过一些简单的工具简化了拿到家具的步骤。
Kubernetes提供所有的原材料来制作你的集群家具—— Pods、DaemonSets、ServiceAccounts、PersistentVolumeClaims、ConfigMaps、Services等。那些愿意自己琢磨的人可以仔细地模拟他们选择部署的每个应用的细节。
但正如许多人更喜欢宜家而不是木工车间一样,大多数人宁愿依靠现有的、熟练组装好的Kubernetes应用。
Helm解决方案
例如,我可以创建自己的MySQL容器镜像,然后完成为Kubernetes部署组装正确的参数组合的过程。这可能需要至少设置一个Service、Deployment、ConfigMap和一个PersistenVolume / PersistentVolumeClaim对。
不过,更好的方式是,获取一个由专家制作的、并可以根据自己需要进行调整的已有配置。
这就是Helm所解决的问题。
Helm Chart是专业制作的Kubernetes资源的预打包配置。那些更喜欢简单地从现有MySQL配置开始的人可以安装Helm图表:
$ helm install stable / mysql
或者可以从图表开始,自定义参数:
$ helm install stable / mysql -f myconfig.yaml
或者可以拿来图表并深入其机制,进行深度修改:
$ helm fetch stable / mysql
$ cd mysql
$#随意编辑
$ helm install .
那些Kubernetes工匠可以创建自己的Helm图表,然后分享出来。
$ helm create customMySQL
$#编辑模板和配置来创建图表
$ helm package customMySQL
一旦图表打包,它就可以分发给其他Helm用户。
结论
通常,当我们谈论Helm时,我们会把它作为Kubernetes的包管理器。但是从更广义的角度来看,我们可以将其视为共享Kubernetes知识的工具,以共同提高云原生应用的质量。
Helm旨在降低Kubernetes新手的学习曲线。它旨在使应用重用变得简单,目的是鼓励Kubernetes最佳实践的发展和分享。
Kubernetes是一个华丽的家,正在重新定义我们运行应用的方式,而Helm是为这个家提供高品质应用的方式。