Kubernetes Helm 架构

本文档介绍了 Helm 高层次体系结构。

Helm 的目的

Helm 是管理称为 chart 的 Kubernetes 包的工具。Helm 可以做到以下几点:

  • 从头开始创建新 chart
  • 将 chart 打包成 chart 归档(tgz)文件
  • 与存储 chart 的 chart 存储库交互
  • 安装或卸载 chart 到现有的 Kubernetes 集群中
  • 管理用 Helm 安装的 chart 的 release 周期

对于 Helm,有三个重要的概念:

  • chart 是创建 Kubernetes 应用程序实例所需的一系列信息。
  • 配置包含可以合并到打包 chart 以创建可发布对象的配置信息。
  • Release 是一个的运行实例的 chart,具有特定的组合配置。

组件

Helm 有两个主要部分:

Helm Client 是最终用户的命令行客户端。客户端负责以下部分:

  • 本地 chart 开发
  • 管理存储库
  • 与 Tiller 服务交互
  • 发送要安装的 chart
  • 查询有关发布的信息
  • 请求升级或卸载现有 release

Tiller Server 是一个集群内服务,与 Helm 客户端进行交互,并与 Kubernetes API 服务进行交互。服务负责以下内容:

  • 监听来自 Helm 客户端的传入请求
  • 结合 chart 和配置来构建发布
  • 将 chart 安装到 Kubernetes 中,然后跟踪后续 release
  • 通过与 Kubernetes 交互来升级和卸载 chart

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

部署

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

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

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

如有可能,配置文件用YAML编写。

Copyright © Mingo(whmzsu@gmail.com) 2017-2018 all right reserved,powered by GitbookUpdated at 2019-01-22 19:58:55

results matching ""

    No results matching ""