Helm组件介绍

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

  • Chart: Helm的软件包, 内部包含了一组相关的kubernetes资源的yaml文件

    image-20211215164633773

  • Repoistory: Helm的软件仓库,repository本质上是一个web服务器,该服务器保存了chart软件包以供下载,并有提供一个该repository的chart包的清单文件以供查询。在使用时,Helm可以对接多个不同的Repository。 其中Artifact Hub 是helm 的官方chart 仓库——helm 弃用了自己的hub,迁移到了Artifact Hub:

    image-20211215165248741

  • Release: 使用Helm install命令在Kubernetes集群中安装的Chart称为Release。一个chart可以部署成多个release,例如使用同一个wordpress chart部署多套release:

    image-20211215164957149

  • Revision:每个Release会有不同的版本,在Revision中按数字递增保存了每个版本的信息。


All Components in a diagram

上面的所有组件一起按如下方式工作:

image-20211215163919014

如何查看revision具体信息

所有revision的信息其实是保存在kubernetes的secret对象中的:

image-20211215170106300

image-20211215170142321

默认kubernetes的secret是base64编码,但Helm在此基础上还增加了额外的base64+gzip编码,如果想查看secret的具体数据,需要:

  • base64 decode - Kubernetes secrets encoding
  • base64 decode (again) - Helm encoding
  • gzip decompress - Helm zipping

用命令行的方式体现为:

kubectl get secrets sh.helm.release.v1.wordpress.v1 -o json | jq .data.release | tr -d '"' | base64 -d | base64 -d | gzip -d | jq

image-20211215222315054

由于revision的信息不是保存在客户端,所以在切换工作环境或者团队协作时,每个人都能获取到helm的历史revision信息,并进行rollout、update等操作。