Helm是包管理工具,这里的包就是指的chart。
Helm由客户端和Tiller服务器组成。客户端负责管理chart,服务器负责管理release。

chart是Helm的应用打包格式,它由一组文件和目录构成。其中 最重要的是模板,模板中定义了Kubernetes各类资源的配置信息, Helm在部署时通过values.yaml实例化模板。
Helm允许用户开发自己的chart,并为用户提供了调试工具。用 户可以搭建自己的chart仓库,在团队中共享chart。

Helm帮助用户在Kubernetes上高效地运行和管理微服务架构应用,Helm非常重要。

架构

  • chart是创建一个应用的信息集合

包括各种Kubernetes对象的 配置模板、参数定义、依赖关系、文档说明等。chart是应用部 署的自包含逻辑单元。可以将chart想象成apt、yum中的软件安装包。

  • release是chart的运行实例

代表了一个正在运行的应用。当 chart被安装到Kubernetes集群,就生成一个release。chart能够多次安装到同一个集群,每次安装都是一个release。



Helm客户端和Tiller服务器

image.png
Helm客户端—-命令行工具:(负责管理chart
在本地开发chart。
与存储chart的仓库交互,拉取、保存和更新chart。 与Tiller服务器交互。
在远程Kubernetes集群上安装chart。
查看release信息。
在Kubernetes集群中安装和卸载release。 更新、回滚和测试release。

Tiller服务器——-运行在Kubernetes集群中,它会处理Helm客户端的请求,与Kubernetes API Server交互:管理 release
监听来自Helm客户端的请求。
通过chart构建release。
在Kubernetes中安装chart,并跟踪release的状态。
通过API Server升级或卸载已有的release。

一个MySQL服务

(1)Service,让外界能够访问到MySQL
image.png
(2)Secret,定义MySQL的密码,
image.png
(3)PersistentVolumeClaim,为MySQL申请持久化存储空间
image.png
(4)Deployment,部署MySQL Pod,并使用上面的这些支持对象
image.png

Chart

chart是Helm的应用打包格式。chart由一系列文件组成,这些文件描述了Kubernetes部署应用时所需要的资源,比如Service、Deployment、PersistentVolumeClaim、Secret、ConfigMap等。

创建我的chart

  1. [root@master01 testHelm]# helm create mychart
  2. [root@master01 testHelm]# tree mychart/
  3. mychart/
  4. ├── charts
  5. ├── Chart.yaml
  6. ├── templates
  7. ├── deployment.yaml
  8. ├── _helpers.tpl
  9. ├── ingress.yaml
  10. ├── NOTES.txt
  11. └── service.yaml
  12. └── values.yaml

新建的chart的values.yaml 默认包含一个nginx应用示例

Chart目录详解

(1)Chart.yaml
YAML文件,描述chart的概要信息
name和version是必填项,其他都是可选项。
(2)README.md
Markdown格式的README文件,相当于chart的使用文档,此文件为可选。
(3)LICENSE
文本文件,描述chart的许可信息,此文件为可选。
(4)requirements.yaml
chart可能依赖其他的chart,这些依赖关系可通过 requirements.yaml指定
(5)values.yaml
chart支持在安装时根据参数进行定制化配置,而values.yaml则提供了这些配置参数的默认值
(6)templates目录
各类Kubernetes资源的配置模板都放置在这里。Helm会将 values.yaml中的参数值注入模板中,生成标准的YAML配置文件。
模板是chart最重要的部分,也是Helm最强大的地方。模板增加了应用部署的灵活性,能够适用不同的环境。

调试Chart

  1. # Helm提供了debug的工具:
  2. [root@master01 mychart]# helm lint
  3. ==> Linting .
  4. [INFO] Chart.yaml: icon is recommended
  5. 1 chart(s) linted, no failures
  6. helm install --dry-run --debug