helm架构

401 阅读2分钟

这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

helm架构概述

Helm 有两个重要的概念:chart 和 release。 chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。

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

Helm的目标

Helm管理名为chart的Kubernetes包的工具。Helm可以做以下的事情:

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

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

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

组件

Helm是一个可执行文件,执行时分成两个不同的部分:

Helm客户端 是终端用户的命令行客户端。负责以下内容:

  • 本地chart开发
  • 管理仓库
  • 管理发布
  • 与Helm库建立接口
    • 发送安装的chart
    • 发送升级或卸载现有发布的请求

Helm库 提供执行所有Helm操作的逻辑。与Kubernetes API服务交互并提供以下功能:

  • 结合chart和配置来构建版本
  • 将chart安装到Kubernetes中,并提供后续发布对象
  • 与Kubernetes交互升级和卸载chart

独立的Helm库封装了Helm逻辑以便不同的客户端可以使用它。

执行

Helm客户端和库是使用Go编程语言编写的

这个库使用Kubernetes客户端库与Kubernetes通信。现在,这个库使用REST+JSON。它将信息存储在Kubernetes的密钥中。 不需要自己的数据库。

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