chart
在Helm表中,一个软件包叫作chart(航海图)。
这个名字是对Kubernetes(“船长”)和Helm(舵,船舶的操纵机构)的航海性质的一种诠释。
chart描绘了Kubernetes应用程序的安装方式。
chart是遵循chart规范的一组文件和目录,用于描述要安装到Kubernetes中的资源。
chart包含一个名为chart.yaml的文件,它描述了该chart,包含有关chart版本、chart名称和说明以及chart作者的信息。
chart也包含模板。这些也是Kubernetes清单,可能用模板指令进行注解。
chart也可以包含提供默认配置的values.yaml文件。其中包含安装和升级期间可以覆盖的参数。
一个未打包的Helm chart只是一个目录。在里面,它会有一个Chart.yaml、一个values.yaml、一个templates/目录等。打包的Helm chart包含与未打包的Helm chart相同的信息,只是用tar打包并用gzip压缩到单个文件中。
未打包的chart由一个带有chart名称的目录表示。例如,名为mychart的chart将被解压到名为mychart/的目录中。
打包的chart有chart的名称和版本,以及tgz后缀:mychart-1.2.3.tgz。
chart存储在chart存储库中。
资源、安装和发布
当某个Helm chart被安装到Kubernetes中时,会发生以下情况:
1.Helm读取chart(必要时下载)。
2.用values中的值替换模板中的值,生成Kubernetes清单。
3.清单被送到Kubernetes。
4.Kubernetes在集群内创建请求的资源(这一步已经和helm没多大关系了)。
Helm chart可能有许多资源定义。Kubernetes认为每个资源定义都是独立的。
但在Helm看来,chart定义的所有资源都是相关的。
例如,WordPress应用程序可能有一个Deployment、一个ConfigMap、一个Service等。但它们都是一个chart的一部分。安装它们时,它们都是同一个安装的一部分。
同一chart可以安装多次(每次使用不同的名称)。因此,可能拥有相同chart的多个安装,就像可能拥有相同Kubernetes资源类型的多个资源一样。
一旦安装了WordPress chart,就拥有了一个该chart的安装。然后用helm upgrade来升级该chart。
现在,这个安装有两个版本。每次使用Helm修改安装时,都会创建一个新的安装版本。
当安装新版本的WordPress时,会创建一个版本。
但是,当我们仅仅更改安装的配置或者回滚安装时,也会创建一个版本。
这是Helm的一个重要特征。
关于Helm 2
某些Helm 2中的概念:Tiller或gRPC 已从Helm 3中删除。
因为Helm chart版本与Helm版本的递增是不一致的。
所以Helm v2使用Helm Charts v1,Helm v3使用Helm Charts v2。
它们在一些重要的方面与第1版的Helm Charts不同,最显著的是在声明依赖项的方式上。
Helm 2和Helm Charts v1被认为已弃用。