Kubernetes 包管理器 Helm 现在由 CNCF 托管

阅读数:419 2018 年 6 月 25 日

话题:DevOps语言 & 开发Kubernetes

本月早些时候,云原生计算基金会(CNCF)技术监督委员会(TOC)投票决定接受Helm作为孵化器托管项目。 Helm 是一个软件包管理器,提供了一种“简单的方法来查找、共享和使用为 Kubernetes 而构建的软件”。

自 2016 年 2 月起,Helm 作为 Kubernetes CNCF 托管项目的子项目存在。该项目由 Deis(于 2017 年被微软收购)发起并与谷歌的 Kubernetes 部署管理器合并成为 Kubernetes Helm。 CNCF 在博文中宣布将 Helm 作为独立项目托管,并表示,“随着 Kubernetes 将重点转移到自己的核心,以更好地管理增长,CNCF 是 Helm 的理想家园,可以让开发人员和运营商继续更容易地简化 Kubernetes 部署”。

从概念上讲,Helm 与 Debian 的 APT、Red Hat 的 Yum 和 MacOS 的 Homebrew 等操作系统的软件包管理器类似,它将文件复制到文件系统适当的位置,适当地设置权限,并配置应用程序应该如何初始化和运行。 Helm 的打包格式(称为chart)是一组描述相关 Kubernetes 资源的文件集合。chart 为带有特定目录树中结构的文件,可以被打包成带有版本的压缩包进行部署。

三星 SDS 高级工程师及 Kubernetes Special Interest 小组联合创始人 Matt Farina 写了一篇翔实的博文,解释了软件包管理器 Helm 可用在 Kubernetes 工具生态系统的哪些地方。Farina 指出,Helm 是“与 apt 相类似的软件包管理器”,从概念方面看,它位于其他抽象之上,如ELF 二进制文件和存储在系统特定目录(“/etc”和“/opt”)里的配置文件。他还指出,与使用操作系统配置管理工具来管理高级应用程序一样,如 Chef、Puppet 和 Ansible,从概念上看,还有其他项目位于 Helm 的上层,包括helmfilearmadalandscaper等。

包含 Operator 的 Kubernetes 管理结构栈(图片来自Matt Farina 的博客

Farina 还写道,有很多运维人员在想知道为什么他们需要使用像 Helm 这样的软件包管理器来管理 Kubernetes 应用程序。很大一部分原因是为了共享可重用的应用程序专业知识。

如果你是典型的应用程序运维人员,那么你关心的是应用程序,而不是运行应用程序的平台或应用程序的依赖项。

他列举了三个要考虑的事项:

  • 管理分布式应用程序特定的运维专业知识——开发人员可以依赖专业人士提供的软件包,因此无需拥有该软件包,可专注于自己特定的业务需求。
  • 可重用的组织包——定制包,公司的运维专家将它们放在一起,可以在本地、测试环境和生产环境中运行。
  • 应用程序的特定配置——在进行应用程序运维时,要关注应用程序,它们会有不同的配置需求。

需要指出的是,Helm 只是解决 Kubernetes 软件包管理和应用程序安装问题的一个解决方案,Shahidh K Muhammed 在另一篇叫作“Draft vs Gitkube vs Helm vs Ksonnet vs Metaparticle vs Skaffold”的博文中探讨了其他替代方案。

对这一领域感兴趣的读者也熟悉一下最初由 CoreOS 团队(现已被红帽公司收购)定义的Operator 模式,该模式定义了一种机制来“可靠地创建、配置和管理 Kubernetes 上的复杂应用实例”。Operator 由 Kubernetes定制资源(有时称为定制资源定义)和定制控制器组成。Shopify 是一个大型电子商务平台,广泛使用了定制控制器。Niko Kurtti 将在即将到来的 QCon 纽约大会上发表演讲“Forced Evolution:Shopify’s Journey to Kubernetes”,深入探讨这一问题。

有关 Helm 的更多信息,请访问https://helm.sh/。这里有一个 KubeCon/CloudNativeCon 2017 大会的演讲视频,叫作“Building Helm Charts From the Ground Up”,演讲者 Amy Chen 在视频中讨论了如何构建 Helm 的 chart,该视频可在 CNCF 的 YouTube 频道上找到。

查看英文原文Kubernetes Package Manager Helm Now Hosted by the CNCF