基本介绍

Helm 是 Kubernetes 的一种包管理工具,相当于 Ubuntu 中的 APT 包管理工具或 CentOS 中的 YUM 包管理工具,用于定义、安装、升级和配置 Kubernetes 应用程序。

在 Kubernetes 中,我们可以通过 YAML 资源清单实现简单应用程序的定义和安装。但是随着项目架构的微服务化,应用程序逐渐按功能被拆分为众多模块。如果每一个功能模块对应一个 YAML 资源清单,对其进行管理和维护将变得十分困难。

同时,Kubernetes 应用程序的不同服务模块之间,通常存在大量可复用的、或需要根据实际场景调整的配置,这种情况在实施交付领域十分常见。例如,不同的客户需要定制化安装不同的功能模块、配置不同的访问域名等。如果在安装时需要手动调整多个功能模块的 YAML 资源清单显然会降低效率,且容易出错。

Helm 通过 Values 配置以及资源清单模版机制,可以让用户在安装前只在一处修改配置,即可在安装时将资源清单模版自动渲染成 YAML 资源清单,从而提升应用程序的安装效率、配置管理能力,使得应用程序的部署和管理更加自动化、标准化。

Helm GitHub:https://github.com/helm/helm/

Helm 官方文档:https://helm.sh/docs/

Helm Chart 最佳实践:https://artifacthub.io/


主要作用

  • 简化安装:Helm 通过 Chart 的形式,将复杂的 Kubernetes 应用程序(每个功能模块涉及的 Deployment、Service、ConfigMap 等资源对象)打包,简化了安装过程。用户只需通过简单的命令即可完成应用程序等安装、升级或回滚

  • 版本管理:Helm 支持应用的版本管理,用户可以轻松地查看、回滚到之前的版本

  • 依赖管理:一个 Chart 可以依赖其他 Chart,Helm 会自动处理这些依赖关系,确保所有依赖的组件都被正确安装和配置

  • 配置管理:Helm 支持通过 values.yaml 文件进行配置管理,用户可以根据不同的环境(如开发、测试、生产)自定义应用的配置


主要特点

  • 声明式配置:Helm 使用 YAML 模版定义 Kubernetes 资源对象,支持声明式配置,使得配置更加清晰和易于管理

  • 可重用性:Chart 可以被重复使用,用户可以在不同的项目中复用相同的 Chart,减少重复劳动

  • 包存储和管理:Helm charts 可以存储在 Helm 仓库中,类似于软件包的存储库,可以被搜索、下载和管理

  • 社区支持:Helm 拥有活跃的社区,用户可以从 Helm Hub 或 Artifact Hub 中获取大量的官方和社区维护的 Chart

  • 安全性:Helm 支持 Chart 的签名和验证,确保 Chart 的完整性和安全性

  • 插件机制:Helm 支持插件机制,用户可以通过插件扩展 Helm 的功能,如添加新的命令或集成其他工具

  • 安全性和可维护性:Helm 已经被广泛使用,并形成大量的最佳实践,可以帮助用户安全地部署和管理 Kubernetes 应用程序


主要概念

  • Chart:Helm 软件安装包,包含了安装 Kubernetes 应用程序所需的资源清单模版,相当于APT 的 DEB 包或 YUM 的 RPM 包

  • Repository:Helm 的 Chart 仓库,用于存储和分发 Chart 文件,可以是本地仓库或远程仓库

  • Value:Helm 软件安装配置,包含了安装 Kubernetes 应用程序所需的配置信息

  • Template:Helm 软件安装包内的资源清单模版

  • Release:Helm 使用 Chart 包安装的一个应用程序实例


安装方法

Helm 安装非常简单,直接使用 GitHub 提供的二进制文件即可。

# 访问 Helm GitHub,下载某个版本wget https://get.helm.sh/helm-v3.17.1-linux-amd64.tar.gz
# 解压安装tar -xzf helm-v3.17.1-linux-amd64.tar.gzmv linux-amd64/helm /usr/local/bin/helm
# 验证安装helm version