Kubernetes Helm架构

浏览 0      扫码          2019-10-29 12:39:22     码农文档      译文原文 英文原文

公告:如果您也想加入翻译队伍,或者您有相关中文文档想要贡献给大家,请联系coderdocument@163.com ,谢谢!

本文档在较高的层次上描述了Helm的结构。

Helm的用途

Helm是一个用于管理Kubernetes包(称为chart)的工具。Helm可以做到以下几点:

  • 从头创建新chart
  • 将chart打包成chart归档(tgz)文件
  • 与存储chart的chart仓库交互
  • 在现有的Kubernetes集群中安装和卸载chart
  • 管理已安装Helm Chart的发布周期

Helm有三个重要的概念:

  1. chart是创建Kubernetes应用程序实例所需的一组信息。
  2. 配置(config)包含配置信息,可以将这些配置信息合并到一个打包的Chart中,以创建一个可发布的对象。
  3. 发布(release)是一个chart的运行实例,并且与特定的配置(config)相结合。

组件

Helm有两个主要的组件:

Helm客户端:是终端用户的命令行客户端。客户端有以下职责:

  • 本地chart开发
  • 管理仓库
  • 与Tiller服务端交互
    • 发送chart以安装
    • 询问关于发布的信息
    • 请求升级或卸载已存在的发布

Tiller服务端:是一个集群内的服务器,它与Helm客户端交互,并与Kubernetes API服务器对接。服务端有以下职责:

  • 监听来自Helm客户端的传入请求
  • 结合chart和配置来构建一个发布
  • 安装chart至Kubernetes,并且跟踪后续的发布
  • 与Kubernetes交互,升级与卸载chart

简而言之,客户端负责管理chart,而服务端负责管理发布。

实现

Helm客户端是用Go编程语言编写的,并使用gRPC协议套件与Tiller服务端进行交互。

Tiller服务端也是用Go编写的。它提供了一个与客户端连接的gRPC服务器,并使用Kubernetes客户端库与Kubernetes通信。目前,该库使用REST+JSON。

Tiller服务端将信息存储在位于Kubernetes内部的ConfigMap中。它不需要自己的数据库。

如果可能,配置文件是用YAML编写的。

返回顶部