Kubernetes Helm 架构
Helm Chart简介
Helm是一个用于Kubernetes的包管理工具。
每一个包称为一个Chart,一个Chart是一个目录(通常状况下会将目录进行打包压缩,造成name-version.tgz格式的单一文件,方便传输和存储)。
一个Chart是Kubernetes部署文件的集合,使用Chart能够方便的在Kubernetes中部署一组应用。html
Helm组件
Helm:架构
Helm是一个cli客户端,能够完成以下内容:工具
- 建立Chart
- 打包Chart,打包成name-version.tgz格式
- 调试Chart
- 建立本地Chart仓库
- 管理本地和远程Chart仓库
- 与Tiller通讯并完成Chart的安装,升级,删除,回滚,查看等操做
Tiller
Tiller是一个Chart管理服务端,Tiller接收Helm的请求,并根据Chart生成Kubernetes的部署文件(称为一个Release),而后提交给Kubernetes建立应用。
Tiller有以下功能:spa
- 监听来自Helm的请求
- 根据请求提交的Chart与Config生成一个Release
- 将Release提交给Kubernetes,而且跟踪Release的状态
- 提供Release的升级,删除,回滚等功能
Helm通讯过程

Chart Install 过程:调试
- Helm从指定的目录或者tgz文件中解析出Chart结构信息
- Helm将指定的Chart结构和Values信息经过gRPC传递给Tiller
- Tiller根据Chart和Values生成一个Release
- Tiller将Release发送给Kubernetes用于生成Release
Chart Update过程:htm
- Helm从指定的目录或者tgz文件中解析出Chart结构信息
- Helm将要更新的Release的名称和Chart结构,Values信息传递给Tiller
- Tiller生成Release并更新指定名称的Release的History
- Tiller将Release发送给Kubernetes用于更新Release
Chart Rollback过程:部署
- Helm将要回滚的Release的名称传递给Tiller
- Tiller根据Release的名称查找History
- Tiller从History中获取上一个Release
- Tiller将上一个Release发送给Kubernetes用于替换当前Release
Chart依赖说明:
Tiller在处理Chart时,直接将Chart以及其依赖的全部Charts合并为一个Release,同时传递给Kubernetes。所以Tiller并不负责管理依赖之间的启动顺序。Chart中的应用须要可以自行处理依赖关系。get