什么是 Helm?

看着屏幕的男人和女人

作者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Helm 是什么?

Helm 是 Kubernetes 的包管理器,可简化应用程序的部署和管理。

Helm 将应用程序所需的全部内容捆绑至名为“Helm chart”的可复用包中,而无需手动创建和维护数十个独立的配置文件。

Helm 可帮助降低使用 Kubernetes 的复杂性 - Kubernetes 是一个开源平台,可跨多个服务器自动部署和运行容器化应用程序。虽然 Kubernetes 很强大,但它通常需要在 YAML 文件中编写大量详细的配置,指定应用程序的运行方式、连接方式以及需要哪些资源。

开发人员、系统管理员和 DevOps 开发运维工程师手动管理这些配置,尤其是在开发、测试和生产等多个环境中,这很快就会变得非常耗时且容易出错。Helm 通过引入标准化、可重用性和版本控制,以及回滚和特定于环境的定制等功能来应对这一挑战。

辅以专家洞察分析的最新科技新闻

通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。您会在每份时事通讯中找到一个取消订阅链接。您可以在此管理您的订阅或取消订阅。更多相关信息,请参阅我们的《IBM 隐私声明》。

什么是容器化?

在深入了解 Helm 之前,有必要了解容器化、Kubernetes 的基础以及现代云原生工具。

容器化将应用程序及其运行所需的一切(代码、库和配置)打包到一个轻量级的可移植单元(称为容器)中。此功能使软件能够在各种环境中一致运行,从开发人员的笔记本电脑到生产环境。

容器通常基于 Linux,比传统虚拟机更快、更高效。它们也非常适合微服务架构,其中应用程序被分解为更小的、可独立部署的组件,并且可以根据需要进行扩展。在 Kubernetes 中,这些容器化工作负载在集群上运行;集群是一组机器,由管理系统的控制平面和在整个基础设施中执行应用程序的工作节点组成。

Docker 是 2013 年向公众发布的开源平台,是应用最广泛的容器化工具。如今,容器化已成为开源云原生生态系统的核心部分,能够带来更快的开发、更可靠的部署和更大的运营灵活性。

Kubernetes 通过自动化部署、扩展和资源管理来大规模编排容器。但是,直接管理 Kubernetes 配置的操作极为复杂,且容易出错。Helm 通过简化、标准化和精简容器化应用程序的部署与维护,在此发挥关键作用。

应用程序开发

开启旅程:云端企业应用程序开发

在本视频中,Peter Haumer 博士通过演示不同的组件和实践(包括 IBM Z Open Editor、IBM Wazi 和 Zowe),探讨了混合云环境中现代企业应用程序的开发现状。

Helm 的演变

Deis(后被 Microsoft 收购)于 2016 年推出 Helm,成为简化 Kubernetes 应用程序管理的首批工具之一。2018 年,该团队将此项目捐赠给 云原生计算基金会 (CNCF),后者于 2020 年将其认证为正式 CNCF 毕业项目。

Helm 的开源开发进程由 GitHub 主动维护,全球贡献者皆可在此协作推动其发展。官方网站 helm.sh 可提供全面的文档 (doc)、下载程序和资源,以帮助用户快速入门并保持更新。

一个关键的里程碑是 2019 年底发布的 Helm 3。此版本从 Helm 2 中删除了 Tiller 组件,通过直接与 Kubernetes 应用程序编程接口 (API) 交互提高了安全性并简化了访问控制。Helm 3 还增强了升级流程、依赖关系管理和对库图表的支持,使其更加安全、灵活且易于在企业中使用。

Helm 已在整个云原生生态系统中得到广泛采用。根据 CNCF 最近的调查,Helm 是首选 Kubernetes 包管理器,在运行 Kubernetes 的组织中采用率为 75%。1

Artifact Hub(已取代最初的 Helm Hub)托管着数千个 chart,而主流软件供应商通常提供 Helm chart 作为其主要 Kubernetes 分发方式。

Helm 是如何工作的?

Helm 通过将 Kubernetes 清单(配置文件)、配置模板和元数据捆绑至名为“Helm chart”的可复用包中,简化 Kubernetes 应用程序管理。此类 chart 包含针对 Kubernetes 资源(例如部署、服务、入口控制器、持久卷、ConfigMap 和密钥)生成相应 YAML 文件所需的所有规范,相关资源则共同构成应用程序。

“YAML”是首字母缩略词,其全称为“YAML Ain't Markup Language”或“Yet Another Markup Language”。它是一种用于编写配置文件的人性化数据格式,可提供清晰的结构化方式以呈现人员和程序均可读取的信息。

安装 chart 后,Helm 会自动将这类资源应用到目标 Kubernetes 聚类,并内置版本控制、回滚和依赖项管理等支持服务。

Helm 架构和组件

Helm 主要作为客户端工具运行,直接与 Kubernetes apiserver 交互以管理应用程序部署:

  • Helm 客户端
  • Helm 图表
  • Helm 发布
  • Helm 存储库

Helm 客户端

Helm 客户端是一个命令行 (CLI) 工具,可与 Kubernetes 集群交互并管理图表和发布。该工具是开发人员和运营商日常使用的工具。与 Kubernetes 的原生命令工具 kubectl 不同,Helm 管理整个应用程序,而不是单个组件。

Helm 图表

Helm 图表是一种打包格式,其中包含在 Kubernetes 上运行应用程序所需的所有资源定义。图表包括模板、默认配置值和元数据。

Helm 版本

Helm 版本是基于 Kubernetes 聚类运行的一个 chart 实例。每个版本都有唯一名称,且可以独立管理。

Helm 存储库(Helm repos)

Helm 存储库是可以共享和分发的图表集合,类似于其他生态系统中的应用程序商店或包库。

Helm 图表的结构是怎样的?

Helm 图表是描述一组相关 Kubernetes 资源的文件的集合。图表结构包括:

  • Helm 模板是模板化的 Kubernetes 清单,通过使用可配置的参数来适应不同的部署环境,如开发、暂存和生产环境。
  • 值文件 (values.yaml)是可以根据不同的部署覆盖的默认配置值。可以采用 YAML 或 JSON 格式提供值。
  • Chart 元数据 (chart.yaml) 描述了 chart 的名称、版本、apiVersion、依赖项和维护者。
  • 文档包括人类可读取的内容(例如自述文件、快速入门指南或使用说明),可帮助用户了解如何部署和操作 chart。

Helm 为企业组织带来的优势

企业组织中的 Kubernetes 开发人员、系统管理员和其他 IT 运营 (ITOps) 专业人员使用 Helm 完成以下任务:

  • 运营效率
  • 风险缓解
  • 治理与合规
  • 开发人员工作效率

运营效率

Helm 显著降低了与管理 Kubernetes 部署相关的操作复杂性。通过自动化和标准化配置管理,Helm 简化了工作流,否则会涉及复杂且容易出错的手动 YAML 编辑。

随着组织扩展其云原生环境并采用新兴技术,如人工智能 (AI)机器学习 (ML) 工作量以及边缘计算,这种效率变得尤为重要。

风险缓解

Helm 的内置回滚功能为生产部署提供了关键的安全网。如果升级失败或导致问题,团队可以使用单个命令立即恢复到以前的工作版本。此功能可缩短与部署相关的事件的平均恢复时间 (MTTR),这是高可用性应用程序和实时 AI 推理服务的基本要求。

治理与合规

Helm chart 和架构可以像任何其他软件工件一样进行版本控制和代码审查。此方法可针对部署提供审核跟踪,保障变更经过合规审批流程。许多组织借助 Helm 和 GitOps 工作流来增强治理能力,确保组织满足采用云原生架构的受监管行业的合规要求。

开发人员工作效率

通过消除 Kubernetes 的复杂性,Helm 支持开发人员专注于应用程序逻辑,而非基础设施配置。团队可以利用预先批准的 chart 进行自助部署,减少对平台团队的依赖,并加快富有竞争力的 AI 和数字化转型计划的开发进程。

Helm 用例

  • 应用程序生命周期管理
  • 第三方软件部署
  • 多租户环境
  • CI/CD 整合和扩展
  • AI/ML 和 GPU 工作负载
应用程序生命周期管理

组织通常使用 Helm 在开发、暂存和生产环境中管理自定义应用程序。单个图表可以针对每个环境配置不同的资源限制、副本和功能标志。

第三方软件部署

有了 Helm,安装和管理数据库、监控工具或 CI/CD 组件等第三方软件变得更加简单。团队无需遵循复杂的安装文档,只需一条 Helm 安装命令即可安装生产就绪的配置。

多租户环境

针对需要在独立命名空间以不同配置多次部署同一应用程序的场景,Helm 的表现尤为出色。例如,SaaS 平台通常借助 Helm 来管理其应用程序的客户特定部署。

CI/CD 整合和扩展

Helm 与持续集成持续部署管道无缝集成,在自动交付管道中充当部署机制。电子商务平台使用 Helm 来管理季节性扩展,在高峰流量期间快速部署其他应用程序实例,并在非高峰时段缩减规模,所有这些都通过 Helm 版本进行管理。

AI/ML 和 GPU 工作负载

Helm 是管理人工智能 (AI) 和机器学习 (ML) 工作负载的理想解决方案,这些工作量通常需要复杂的配置,包括 GPU 资源、专用存储空间、模型服务组件和监控系统。组织使用 Helm 图表来标准化 ML 管道的部署,确保开发和生产集群中的训练和推理工作负载的环境一致性。

Helm 与其他替代方法

Helm 与 Kustomize

Kustomize 是另一个广泛采用的 Kubernetes 配置管理解决方案,虽然采用的方法与 Helm 不同。Helm 使用模板来生成清单,而 Kustomize 使用带有补丁和覆盖的声明式方法来修改基本配置。

Kustomize 更简单,学习成本较低,但缺乏 Helm 的包管理能力、版本控制和回滚功能。许多组织同时使用这两种工具,其中 Kustomize 处理配置变体,而 Helm 管理整个应用程序生命周期。

Helm 与 Kubernetes 运维模式

Kubernetes Operator 是特定于应用程序的控制器,它们可扩展 Kubernetes API 来管理复杂的应用程序。Helm 专注于打包和部署,而 Operator 则提供持续的生命周期管理。它们可以处理特定于应用程序的操作任务,例如备份、扩展和升级。

Helm 更适合一般应用程序的部署和更简单的工作量。同时,运维工具擅长管理具有复杂运维需求的有状态应用程序。许多组织利用 Helm 自行部署运维工具。

相关解决方案
IBM Concert

使用 IBM® Concert 生成式 AI 驱动的技术自动化平台,简化应用程序管理并获取 AI 生成的洞察分析,以便据此采取行动。

深入了解 IBM® Concert
应用性能管理软件和解决方案

将全栈可观测性与自动化应用资源管理相结合,在性能问题影响客户体验之前将其解决。

深入了解应用性能管理解决方案
混合云应用程序管理服务

了解 IBM Consulting 提供的用于管理复杂、混合和多云环境的高度创新服务。

深入了解应用程序管理服务
采取下一步行动

通过使用 AI,IBM Concert 可揭示有关运营的重要洞察分析,并提供特定于应用程序的改进建议。了解 Concert 如何推动您的业务向前发展。

深入了解 Concert 体验自助式导览
脚注

1. CNCF 2023 年度调查,云原生计算基金会,2023 年