对于Helm,有几个重要的概念:
Chart: Helm的软件包, 内部包含了一组相关的kubernetes资源的yaml文件
Repoistory: Helm的软件仓库,repository本质上是一个web服务器,该服务器保存了chart软件包以供下载,并有提供一个该repository的chart包的清单文件以供查询。在使用时,Helm可以对接多个不同的Repository。 其中Artifact Hub 是helm 的官方chart 仓库——helm 弃用了自己的hub,迁移到了Artifact Hub:
Release: 使用Helm install命令在Kubernetes集群中安装的Chart称为Release。一个chart可以部署成多个release,例如使用同一个wordpress chart部署多套release:
Revision:每个Release会有不同的版本,在Revision中按数字递增保存了每个版本的信息。
上面的所有组件一起按如下方式工作:
所有revision的信息其实是保存在kubernetes的secret对象中的:
默认kubernetes的secret是base64编码,但Helm在此基础上还增加了额外的base64+gzip编码,如果想查看secret的具体数据,需要:
用命令行的方式体现为:
kubectl get secrets sh.helm.release.v1.wordpress.v1 -o json | jq .data.release | tr -d '"' | base64 -d | base64 -d | gzip -d | jq
由于revision的信息不是保存在客户端,所以在切换工作环境或者团队协作时,每个人都能获取到helm的历史revision信息,并进行rollout、update等操作。