Helm-基本认识

发布于 2021-09-27  365 次阅读


介绍

Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。有点类似于 Ubuntu 中的 APT 或 CentOS 中的 YUM。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

Helm 组件及相关术语

  • Helm

Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。

  • Tiller

Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。

  • Chart

Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。

  • Repoistory

Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。

  • Release

使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。

Helm 工作原理

这张图描述了 Helm 的几个关键组件 Helm(客户端)、Tiller(服务器)、Repository(Chart 软件仓库)、Chart(软件包)之间的关系。

Chart Install 过程

  • Helm 从指定的目录或者 TAR 文件中解析出 Chart 结构信息。
  • Helm 将指定的 Chart 结构和 Values 信息通过 gRPC 传递给 Tiller。
  • Tiller 根据 Chart 和 Values 生成一个 Release。
  • Tiller 将 Release 发送给 Kubernetes 用于生成 Release。

Chart Update 过程

  • Helm 从指定的目录或者 TAR 文件中解析出 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 中的应用需要能够自行处理依赖关系。

helm安装

先决条件

想成功和正确地使用Helm,需要以下前置条件。

  1. 一个 Kubernetes 集群
  2. 确定你安装版本的安全配置
  3. 安装和配置Helm。

  根据kubernetes集群的版本1.18 ,helm版本就选择为3.2.x ,版本支持策略点击此处

用二进制版本安装

  1. 下载需要的版本,helm3.2.4
  2. 解压 tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
  3. 在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)

用脚本安装

  1. 执行命令
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/v3.2.4/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

然后就可以执行客户端程序并添加稳定仓库  :helm help