1. Helm 概念

1.1. Helm

Helm 是 Kubernetes 的包管理器。按照惯例,当指项目时,Helm 使用大写。当指命令行时, helm 使用小写。

1.2. Chart

Helm Chart 代表着 Helm 包。包涵盖了将 Kubernetes 应用安装到 Kubernetes 集群所需要的足够多的信息。它基于一定的模板规范、目录结构和文件格式进行打包后的 tar 和 gzip 压缩包(并且可选签名) 。

1.3. Release

Helm Release 是运行在 Kubernetes 集群中的 Chart 的实例。一个 Chart 通常可以在同一个集群中安装多次,每一次安装都会创建一个新的 Release。

以 MySQL Chart 为例,如果你想在你的集群中运行两个数据库,你可以安装该 Chart 两次。每一个数据库都会拥有它自己的 Release 和 Release Name。

1.4. Repository

Helm Repository(仓库) 是用来存放和共享 Charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。

Helm 官方默认的 Repository 是 https://artifacthub.io/

Helm Chart 仓库服务器就是一个简单的 HTTP 服务器,提供一个 index.yaml 文件来描述一批 Helm Chart, 并且提供每个 Helm Chart 的下载位置信息。(很多 Helm Chart 仓库同时提供 Helm Chart 和 index.yaml文件。)

Helm 客户端可以指向 0 个或多个 Helm Chart 仓库。默认没有配置仓库。Helm Chart 仓库可以随时使用 helm repo add 命令添加。

1.5. "Chart 依赖"

Helm Chart 可以依赖于其他的 Helm Chart。 依赖可能会以以下两种方式出现:

  • 软依赖: 如果另一个 Helm Chart 没有在集群中安装,该 Helm Chart 可能会无法使用。Helm 未对这个案例提供工具。 这个案例中,依赖会被分别管理。
  • 硬依赖: 一个 Helm Chart 可以包含 (在它的 charts/ 目录中) 另一个它所依赖的 Helm Chart。这个案例中, 安装 Helm Chart 的同时会安装所有依赖。Helm Chart 和它的依赖会作为一个集合进行管理。

当一个 Helm cChart(通过 helm package )打包时所有的依赖都会和它绑定。

1.6. "Chart 版本"

Chart版本根据 语义化版本2.0 细则 发布。每个chart都需要版本号。

Chart.yaml chart的信息说明被存储在一个特定文件Chart.yaml。每个chart都必须有这个文件。

1.7. Helm 库

Helm 库 或 SDK

Helm 库(或 SDK )涉及到 go 代码,可以直接与 Kubernetes API 服务交互进行安装、升级、查询 以及移除 Kubernetes 资源。可以被导入到项目中作为客户端库使用而不是用作 CLI 命令。

1.8. 版本号

单个版本号可以被升级多次。通过连续技术来跟踪升级发布版本。在第一次helm install之后,一个版本 会有 release number 1,每一次版本升级或回滚,版本号都会升级。

1.9. 回滚

每一次发布会更新chart或者配置。当生成发布历史后,一次发布也可以被 rolled back 之前的发布版本号。 回滚使用 helm rollback 命令实现。

重要的是, 每一次回滚版本会生成一个新的发布版本号。

操作 版本号
install release 1
upgrade release 2
upgrade release 3
rollback 1 release 4 (但使用release 1的配置)

上面的列表阐明了发布版本号是怎样通过安装,升级和回滚递增的。

1.10. Values

Values 提供了一种使用您自己的信息覆盖模板默认值的方式。

Helm Chart 是"参数化的", 这意味着chart开发者可以在安装时显式配置。比如说,chart可以暴露username字段, 允许为服务设置一个用户名。

这些可暴露的变量在Helm用语中称为 values。

Values 可以在 helm install 时和 helm upgrade 时设置,直接把它们传值进来,也可以使用 values.yaml 文件设置。

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-03-26 07:40:46

results matching ""

    No results matching ""