Helm 是 Kubernetes 的包管理工具,可以理解为 Kubernetes 的 "apt" 或 "yum"。它的主要功能是帮助管理 Kubernetes 集群中的应用程序,简化了应用程序的部署和维护过程。Helm 通过 Chart 文件打包和管理 Kubernetes 应用,类似于 Docker 中的镜像,Chart 描述了应用程序的资源需求和配置。
Helm 的三个基本概念
在 Helm 中,Release
代表一次应用的部署实例。每个 Release
都包含了一组与该应用相关的 Kubernetes 资源,比如 Deployment
、Service
、ConfigMap
等。Release
并不是 Kubernetes 中的单独组件,而是 Helm 管理应用实例的概念,用于将多个 Kubernetes 资源统一在一起管理。
具体来说:
values.yaml
文件)组合起来,以生成并管理应用实例。Release
在 Kubernetes 集群中会包含一组具体的资源(例如,Deployment
、Pod
、Service
等),这些资源构成了应用实例。Release
,每个 Release
管理自己命名空间中的应用实例,不会相互干扰。Helm 包括两个部分,helm
客户端和 tiller
服务端。
helm 客户端是一个命令行工具,负责管理 charts、repository 和 release。它通过 gPRC API(使用 kubectl port-forward
将 tiller 的端口映射到本地,然后再通过映射后的端口跟 tiller 通信)向 tiller 发送请求,并由 tiller 来管理对应的 Kubernetes 资源。
tiller 接收来自 helm 客户端的请求,并把相关资源的操作发送到 Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪 Kubernetes 资源。为了方便管理,tiller 把 release 的相关信息保存在 kubernetes 的 ConfigMap 中。
Helm 使用 Chart 来管理 Kubernetes manifest 文件。每个 chart 都至少包括