「Helm」- 包管理工具 | 针对 Kubernetes 环境

该笔记将记录:在 Kubernetes 中,HELM 安装配置,以及常见问题处理;

认识

官网:https://helm.sh/
文档:https://helm.sh/docs/
仓库:https://github.com/helm/helm

Helm —— The package manager for Kubernetes —— 其是 Kubernetes 的包管理器,其作用与 pip for Python、npm for Node.js、yum for CentOS 等等工具类似。通过 Helm 工具,其将 Kubernetes 包定义为一系列清单文件和一些元数据。这些清单文件其实就是模板。Helm 实例化包的时候,会给模板中的字段赋值。Helm 包被称 Chart。Helm 是管理 Kubernetes Charts 的工具。

如果不想手写所有的 Kubernetes YAML 文件,如何通过命令行从仓库中查找一个包,然后下载并安装?

组成

组件 | Components | 原理 | Principles

图表 | Chart

Kubernetes Charts 则是包,其与 RPM in CentOS、DEB in Debian 等等类似。
Kubernetes Charts 是预先配置的 Kubernetes 资源包。

Chart:当通过 Helm 部署服务时,是对 Chart 进行操作,Chart 是最小的操作单元;

Values Files | https://helm.sh/docs/chart_template_guide/values_files/

Chart Repository

Repository(仓库):其中保存各种各样的 Chart 资源,我们能够从中选择需要安装的 Chart 资源;

ChartMuseum | https://helm.sh/docs/topics/chart_repository/
helm cm-push plugin | https://github.com/chartmuseum/helm-push

命令程序 and 配置文件

在 Helm v3 中,只需要安装 Helm 客户端。

性质

历史 History 回滚 Rollback

通过 helm history 命令,来查看 Helm Release 的历史版本。

helm history <RELEASE_NAME> [flags]

查看特定版本的详细信息

helm get all <RELEASE_NAME> –revision <REVISION_NUMBER> -n <NAMESPACE>

helm get values <RELEASE_NAME> –revision <REVISION_NUMBER> -n <NAMESPACE>

helm get manifest <RELEASE_NAME> –revision <REVISION_NUMBER> -n <NAMESPACE>

结合 helm rollback 使用,查看历史版本的主要目的之一是为了回滚。

helm rollback my-webserver 3 –namespace production

插件 Plugin 扩展 Extension

https://helm.sh/docs/topics/plugins/
https://helm.sh/docs/helm/helm_plugin/

配置 Bash 补全

echo "source <($(which helm) completion bash)" >> ~/.bashrc
source ~/.bashrc

构建

版本选择

版本与其支持的集群版本,参考 Helm Version Support Policy 文档;

Release Helm 3.5.3 · helm/helm

安装方式

Helm | Installing Helm

容器镜像

https://hub.docker.com/r/alpine/helm

docker.io/alpine/helm:3.18
ccr.ccs.tencentyun.com/d3rm-3rd/docker.io_alpine_helm:3.18

from Binary | *.tar.gz

访问 GitHub/helm/helm/Releases 下载二进制包,然后解压到 PATH 目录,比如 /usr/local/bin/ 目录,即可;

如果国内下载慢,可以使用 https://mirrors.huaweicloud.com/helm/ 镜像站点

Kubernetes 1.22, https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz

https://mirrors.huaweicloud.com/helm/v3.13.3/helm-v3.13.3-linux-amd64.tar.gz

# Helm 3.10.x ⇒ 1.25.x - 1.22.x
https://mirrors.huaweicloud.com/helm/v3.10.3/
https://mirrors.huaweicloud.com/helm/v3.10.3/helm-v3.10.3-linux-amd64.tar.gz
https://mirrors.huaweicloud.com/helm/v3.10.3/helm-v3.10.3-linux-arm64.tar.gz

# Helm 3.9.x ⇒ 1.24.x - 1.21.x
https://mirrors.huaweicloud.com/helm/v3.9.4/
https://mirrors.huaweicloud.com/helm/v3.9.4/helm-v3.9.4-linux-amd64.tar.gz
https://mirrors.huaweicloud.com/helm/v3.9.4/helm-v3.9.4-linux-arm64.tar.gz

from Repo on Ubuntu/Debian

# curl https://baltocdn.com/helm/signing.asc | apt-key add -
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 294AC4827C1A168A

cat > /etc/apt/sources.list.d/helm-stable-debian.list <<EOF
deb https://baltocdn.com/helm/stable/debian/ all main
EOF

apt-get update

apt-get install helm=3.6.3-1 # for Kubernetes 1.21.x - 1.18.x
apt-get install helm=3.7.2-1 # for Kubernetes 1.22.x - 1.19.x

with asdf

asdf plugin-list-all | grep helm
asdf plugin-add helm

asdf list all helm

asdf install helm 3.16.4
asdf global  helm 3.16.4

参考

DeepSeek / 查看 helm release 历史版本
DeepSeek / 查看某个 REVISION 的信息