Kubernetes 为容器化应用程序提供了一个家。但是,如何用数据库和网络应用程序对这个“家”进行装饰呢?于是 Helm 华丽登场,如果 Kubernetes 是你的家,Helm 就好比是宜家。
Kubernetes 是您应用程序的家园
Kubernetes 采用的是一组裸机或虚拟机,并覆盖了一个复杂的容器管理系统。遵循声明式基础设施的原则,Kubernetes 提供了数十种资源定义,从简单的容器执行环境(pod)到入口点,服务抽象和持久存储卷。这些使 Kubernetes 成为灵活运行容器应用程序的家园。但是,将新的应用程序部署到该家庭中,学习曲线很陡,Adam Reese 称之为 Kubernetes 开发周期。
1、复制 YAML
2、粘贴 YAML
3、修复缩进
4、重复
Helm 可以让你跳过这些步骤。
Helm 好比是宜家
我们每个人的家里面都有家具,但是我们中有多少人在家里打造家具?答案是:几乎没有。那些编程技术水准较高的人员,熟练运用许多工具。他们热衷于制作“家具”的每一个细节。
但是我们中的许多人选择依靠工匠来为我们建造家具。我们只需要选择我们想要的,并处理一些细节,根据我们的个人品味来定制家具就好。这就是像宜家这样的家具制造商取得成功的原因。他们通过几个简单的工具将装备减少到几个简单的步骤。
Kubernetes 提供构建集群家具的所有原材料。Pods, Daemonsets, ServiceAccounts,PersistentVolumeClaims, ConfigMaps,Services…那些选择建立高水平的人可以仔细地模拟他们选择部署的每个应用程序的细节。
但是,就像许多人更喜欢 Ikea 的木工车间一样,我们中许多人宁愿依靠现有的专家组合 Kubernetes 应用程序。
Helm 是您的解决方案
例如,我可以创建我自己的 MySQL 容器镜像,然后通过组合一个 Kubernetes 部署的正确的参数组合的过程。这可能需要至少设置一个 Service, Deployment, ConfigMap 和 PersistenVolume/PersistentVolumeClaim pair.
但是,使用高手编写好的现成配置,根据具体需求做少量修改,就会好一些。而这正是 Helm 要解决的问题。
Helm Charts 是专门制作的 Kubernetes 资源的预先包装配置。那些宁愿从现有 MySQL 配置开始的人可以安装 Helm Chart:
或者他们可以从 Chart 开始,并自定义参数:
或者他们可以抓取 chart,进行深度修改:
和那些 Kubernetes 匠可以创建自己的 Helm chart,然后与他人分享(无论是他们的团队还是更广泛的受众)。
结论:
通常,当我们讨论 Helm,是把它当成 Kubernetes 的一个包管理工具。但从广义来讲,我们可以把它看作分享 Kubernetes 知识的工具,共同提高我们的云本机应用程序的质量。
Helm 的设计初衷是降低 Kubernetes 新人的学习难度。这是为了让应用程序重新使用可以更加容易。它旨在鼓励开发(共享)Kubernetes 最佳实践。
Kubernetes 是一栋豪宅,它重新定义了我们运行应用程序的方式。而 Helm 则是装饰这间屋子的“家具”,它用高质量的应用程序装饰 Kubernetes。
本文转载自才云 Caicloud 公众号。
原文链接:https://mp.weixin.qq.com/s/bL0dSaTVRdlr2Cvekfm97Q
评论