Helm

相信读者朋友们知道 Linux 下的包管理工具和封装格式, 如 Debian 系的 apt-get 命令和 dpkg 格式、RHEL 系的 yum 命令和 rpm 格式。在 Linux 系统中,有了包管理工具,我们只要知道应用的名称,就可以很方便地从应用仓库中下载、安装、升级、回滚等,而且包管理工具掌握着应用的依赖信息和版本变更情况,具备完整的自管理能力,每个应用依赖哪些前置的第三方库,在安装时都会一并处理好。

如果说 Kubernetes 是云原生操作系统的话,那 Helm 就是这个操作系统之上的应用商店和包管理工具。Helm 参考了各大 Linux 发行版管理应用的思路,提出了与 Linux 包管理直接对应的 Chart 格式 和 Repoistory 应用仓库的概念。对于使用者而言,使用 Helm 后,不用需要了解 Kubernetes 的 yaml 语法,也不需要编写应用部署文件。只要一行命令,就可以下载并在 kubernetes 上安装需要的应用。

Chart 是一个包含描述 Kubernetes 相关资源的文件集合,例如 WordPress chart 的目录结构是这样子的:

WordPress
.
├── Chart.lock
├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── config-secret.yaml
│   ├── deployment.yaml
│   ├── hpa.yaml
│   ├── svc.yaml
│   └── ...
├── values.schema.json
└── values.yaml

其中 Chart.yamlChart 的元数据文件,包含了 Chart 的名称、版本、描述等信息。values.yaml 默认的配置文件,定义了 Chart 中变量的默认值。用户可以通过自定义 values.yaml 或通过命令行参数覆盖这些默认值。templates 目录包含 Kubernetes YAML 配置文件的模板,这些模板通过 Go 的模板引擎进行渲染,生成最终的 Kubernetes 资源定义文件。

如下图所示,开发者和运维人员将复杂的应用程序及其依赖项打包成一个 Chart。用户使用 helm install 命令快速部署应用,无需再手动编写大量的 YAML 配置文件。


图 7-1 Tekton Dashboard

Helm 仓库是存储 Helm chart(应用程序的定义和配置包)的地方。默认情况下,Helm 配置了一个稳定的仓库(https://charts.helm.sh/stable),但你也可以添加其他仓库。

如下所示,使用 helm repo add 命令添加一个名为bitnami的仓库:

$ helm repo add bitnami https://charts.bitnami.com/bitnami

接着,使用 helm search repo 命令在已添加的仓库中搜索需要的 chart。例如,如果你想部署一个 Wordpress:

$ helm search repo wordpress
NAME                                        CHART VERSION   APP VERSION     DESCRIPTION
bitnami/wordpress                           15.3.1          6.2.1           Web publishing platform for building blogs and websites
bitnami/wordpress-multisite                 6.3.1           5.7.4           WordPress for Multisite environments

选择合适的 WordPress chart,使用helm install命令进行安装。

$ helm install my - wordpress - instance bitnami/wordpress 

当不再需要 WordPress 应用程序时,使用 helm uninstall my - wordpress - instance 命令卸载。这会删除 Kubernetes 集群中为 WordPress 创建的所有资源。

总字数:718
Last Updated:
Contributors: isno