Helm 是一个由 Deis(现为 Microsoft Azure 的一部分)和 Google 共同开发的开源项目,旨在成为 Kubernetes 的“包管理器”。它的设计灵感来自于 Homebrew(MacOS 的包管理器)和 apt(Ubuntu 的包管理器),旨在简化和自动化在 Kubernetes 上部署和管理应用程序的流程。
Kubernetes 生态系统中的一个主要挑战是应用的部署和管理的复杂性。部署应用程序到 Kubernetes 通常需要创建和管理一系列相关的 Kubernetes 资源,如 Pods、Services、Deployments 等,这既耗时又容易出错。
Helm 通过将一组相关的 Kubernetes 资源打包到一个 Chart 中,使得部署和管理变得更为简便。这种方法不仅简化了部署过程,还使开发人员和运维人员能够更有效地组织和管理应用程序。
Helm 最初由 Deis(现为 Microsoft Azure 的一部分)和 Google 共同开发,于 2015 年 11 月首次发布。随着时间的推移,Helm 逐渐发展成为一个独立的项目,并在 2016 年加入了 Cloud Native Computing Foundation(CNCF)作为孵化项目。通过不断的迭代和改进,Helm 已经成为 Kubernetes 社区中最受欢迎和广泛使用的工具之一。
Helm 的作用和重要性体现在以下几个方面:
Helm 在 Kubernetes 生态系统中扮演着重要的角色,为用户提供了一种简单、高效的方式来部署和管理应用程序,推动了 Kubernetes 的广泛应用和发展
brew install helm
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
Windows: 在 Windows 上安装 Helm 可以从 Helm 的 GitHub 仓库下载最新版本的 Helm 安装程序并手动安装。
安装完成后,需要配置 Helm 以连接到 Kubernetes 集群。通常需要配置 kubeconfig 文件,以指定 Kubernetes API 的访问方式。可以通过以下命令配置 Helm:
kubectl config use-context <context-name>
其中,<context-name>
是 Kubernetes 集群的上下文名称。使用该命令将当前的 kubeconfig 文件与指定的集群上下文关联起来,从而使 Helm 能够正确连接到 Kubernetes 集群。
上面架构图使用的是Helm的v3版本,该版本没有了
tiller
并并使用更加简单和灵活的架构,直接通过kubeconfig
连接apiserver
,简化安全模块,降低了用户的使用壁垒
Helm 的工作流程总结如下:
需要创建一个Helm chart 。该chart 是一个软件包,其中包含应用程序所需的一组资源的模板。
该模板使用创建清单时应用于Values.yaml文件的变量,并描述如何配置资源。
Helm 主要有三个基本概念:
一个标准的 Chart 结构如下:
.
├── Chart.yaml
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── values.yaml
└── charts
4个目录,10个文件
Helm Chart 中的每个文件和目录并了解其重要性。