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服务器

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
(2)Secret,定义MySQL的密码,
(3)PersistentVolumeClaim,为MySQL申请持久化存储空间
(4)Deployment,部署MySQL Pod,并使用上面的这些支持对象
Chart
chart是Helm的应用打包格式。chart由一系列文件组成,这些文件描述了Kubernetes部署应用时所需要的资源,比如Service、Deployment、PersistentVolumeClaim、Secret、ConfigMap等。
创建我的chart
[root@master01 testHelm]# helm create mychart[root@master01 testHelm]# tree mychart/mychart/├── charts├── Chart.yaml├── templates│ ├── deployment.yaml│ ├── _helpers.tpl│ ├── ingress.yaml│ ├── NOTES.txt│ └── service.yaml└── 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
# Helm提供了debug的工具:[root@master01 mychart]# helm lint==> Linting .[INFO] Chart.yaml: icon is recommended1 chart(s) linted, no failureshelm install --dry-run --debug
