HELM 是 Kubernates 的开源包管理器,Kubernates 是现代应用程序的强大容器编排平台。它由 Kubernetes 正式所有,并由云原生计算基金会 (CNCF) 管理。谷歌在 2018 年将 Kubernetes 的维护工作移交给 CNCF(链接)。 CNCF 是 Linux 基金会的一部分,是一个监督整个云原生软件生态系统的论坛。 Kubernetes 有很多组件,如 pod、服务、副本集和部署,每个组件都需要自己的清单文件。这使得管理应用程序的整个生命周期变得很麻烦。与任何其他包管理器一样,Helm 简化了 Kubernetes 资源的管理、升级和依赖关系解析。
Helm 有一个服务器组件——“ Tiller ”,它与其他部署部署在同一个 Kubernetes 集群中。 Tiller 本质上侦听并执行通过“Helm”CLI 工具管理的命令,并将这些命令转换为 Kubernetes 清单。 Helm 包通过称为“图表”的抽象进行管理。 Helm 社区维护了一个官方图表存储库,该存储库托管常用应用程序的包。除了已经存在的图表,用户可以灵活地为他们独特的用例创建新图表并将它们推送到公共/私有存储库。
典型的舵图由模板、 values.yaml和chart.yaml 组成。 Chart.yaml由所有相关的像一个老板,电子邮件,版本等Values.yaml部署的元数据都需要为应用程序函数的所有默认配置。 values.yaml 中的字段可以根据需求覆盖为自定义值。一个简单的用例是在分层环境中部署应用程序,如具有不同配置和密钥的开发、暂存和生产。模板文件使用 Golang 模板格式从 values.yaml 或命令行组装配置,并将完整配置转换为 Kubernetes 清单。 Helm 通过“发布”的概念来管理图表的安装。部署、配置和 values.yaml 中的默认值的组合创建了一个独特的版本。单个图表可用于根据不同的配置创建多个版本。一个特定的用例是消息队列或代理。如果我们需要部署一组代理以使其遵循“高可用性”的概念,我们可以将 1 个队列部署为活动队列,并将另一个队列部署为活动队列的镜像。另一个用例是有 2-3 个队列,其中 1 个用于写入数据,其他用于读取镜像数据。如果应用程序读取繁重而不是写入繁重,则此配置可以提高应用程序性能。
在这篇介绍性文章中,我们介绍了 Helm 及其组件的基础知识。我们还研究了舵图的典型层次结构和一些用例来支持元素的目标。
注意:这是对 Helm 的非常基本的介绍。有关内部架构、命令和组件的更多详细信息,请参阅官方 helm 文档。