引言

Helm 是 Kubernetes 的包管理器,它如同 Linux 系统中的 aptyum,能够帮助开发者和运维人员轻松地查找、分享和使用为 Kubernetes 构建的软件。通过将一组相关的 Kubernetes 资源打包成一个称为 "Chart" 的单元,Helm 极大地简化了复杂应用的部署、升级和管理过程。

本指南将从 Helm 的安装开始,逐步深入到其核心概念和常用命令,为你提供一个全面而实用的 Helm 使用手册。

一、Helm 的安装

在 Linux 系统上安装 Helm 非常直接。以下步骤以 Helm 3.8.0 为例:

1. 下载 Helm 二进制文件

从 Helm 的官方发布页面或镜像站点下载适合你系统的二进制压缩包。

1
2
# 从官方推荐的源下载
wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz

2. 解压文件

将下载的压缩包解压。

1
tar -zxvf helm-v3.8.0-linux-amd64.tar.gz

3. 移动到系统路径并授权

将解压出的 helm 可执行文件移动到系统的 PATH 目录中(如 /usr/local/bin),并赋予其执行权限。

1
2
sudo mv linux-amd64/helm /usr/local/bin/helm
sudo chmod +x /usr/local/bin/helm

4. 验证安装

执行 helm version 命令,如果能看到版本信息,则表示安装成功。

1
helm version

二、核心概念:Chart 与 Repository

  • Chart: Helm 的打包格式,它包含了一组用于描述 Kubernetes 资源的模板文件和默认值。一个 Chart 可以简单到只包含一个 nginx Pod,也可以复杂到包含一个完整的 Web 应用技术栈。
  • Repository (Repo): 用于存储和分发 Chart 的仓库。你可以添加社区的公共仓库,也可以创建自己的私有仓库。

三、仓库 (Repository) 管理

管理 Chart 仓库是使用 Helm 的第一步。

1. 添加仓库

添加一个新的 Chart 仓库。为了加速访问,推荐使用国内镜像。

1
2
# 添加阿里云的 Kubernetes Chart 仓库并命名为 stable
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

2. 查看所有仓库

列出所有已添加的仓库。

1
helm repo list

3. 更新仓库

从所有仓库中获取最新的 Chart 信息。在搜索或安装前,最好先执行此命令。

1
helm repo update

4. 删除仓库

如果不再需要某个仓库,可以将其删除。

1
helm repo remove stable

四、应用 (Release) 管理

一个 "Release" 是一个 Chart 在 Kubernetes 集群中的运行实例。

1. 搜索应用

在已添加的仓库中搜索 Chart。

1
2
# 搜索名为 "rancher" 的 Chart
helm search repo rancher

2. 下载 Chart

有时你可能需要先下载 Chart 到本地进行修改或审查。

1
2
# 下载指定版本的 Rancher Chart 压缩包到当前目录
helm fetch rancher-stable/rancher --version=v2.5.8

3. 安装应用 (install)

使用 helm install 命令在集群中部署一个 Chart。

1
2
3
# 语法: helm install [RELEASE_NAME] [CHART_NAME]
# 安装一个名为 my-nginx 的 release,使用 stable/nginx Chart
helm install my-nginx stable/nginx

4. 升级应用 (upgrade)

当 Chart 更新或你需要修改配置时,使用 helm upgrade--install 参数表示如果 Release 不存在,则执行安装操作。

1
2
3
4
5
# 升级 rancher release,并设置新的主机名和 TLS 来源
helm upgrade --install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=my.rancher.domain \
--set ingress.tls.source=secret
  • --set <key>=<value>: 在命令行中直接覆盖 values.yaml 文件中的配置项。

5. 查看已部署的应用

列出指定命名空间或所有命名空间中的 Release。

1
2
3
4
5
# 查看 cattle-system 命名空间下的所有 release
helm list -n cattle-system

# 查看所有命名空间下的 release
helm list -A

6. 查看应用状态

获取一个 Release 的详细状态信息。

1
helm status rancher -n cattle-system

7. 卸载应用 (uninstall)

从集群中删除一个 Release,并清除其所有相关的 Kubernetes 资源。

1
helm uninstall rancher -n cattle-system

8. 回滚应用 (rollback)

如果一次升级出现问题,可以快速回滚到之前的版本。

1
2
3
4
5
# 查看 rancher release 的历史版本
helm history rancher -n cattle-system

# 回滚到上一个版本 (版本号为 1)
helm rollback rancher 1 -n cattle-system

总结

Helm 通过其强大的打包和模板能力,极大地简化了 Kubernetes 应用的生命周期管理。掌握 Helm 的核心命令是每一位 Kubernetes 从业者的必备技能。