Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Python中的 pip 一样,能快速查找、下载和安装软件包。
在 Kubernetes中部署一个可以使用的应用,需要涉及到很多的 Kubernetes 资源的共同协作。比如你安装一个 WordPress,用到了一些 Kubernetes (下面全部简称k8s)的一些资源对象,包括 Deployment 用于部署应用、Service 提供服务发现、Secret 配置 WordPress 的用户名和密码,可能还需要 pv 和 pvc 来提供持久化服务。并且 WordPress 数据是存储在mariadb里面的,所以需要 mariadb 启动就绪后才能启动 WordPress。这些 k8s 资源过于分散,不方便进行管理。
Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。
创建release
删除release
更新release
Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源。Chart中的文件安装特定的目录结构组织, 最简单的chart 目录如下所示:
## Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源。
## Chart中的文件安装特定的目录结构组织, 最简单的chart 目录如下所示:
./
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
点击下载最新版本
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
echo "source <(helm completion bash)" >> .bashrc
#微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库强烈推荐,基本上官网有的chart这里都有。
#阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
#官方仓库(https://hub.kubeapps.com/charts/incubator)官方chart仓库,国内有点不好使。
#添加存储库:
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
## 查找所有repo下的所有chart
helm search repo
## 查找stable这个repo下的chart mysql
helm search repo stable/mysql
## 查看chart信息:
helm show chart stable/mysql
## 安装包:
helm install db stable/mysql**
## 查看发布状态:
helm status db
上面部署的mysql并没有成功,这是因为并不是所有的chart都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。
所以我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据:
# helm show values stable/mysql
# cat config.yaml
persistence:
enabled: true
storageClass: "managed-nfs-storage"
accessMode: ReadWriteOnce
size: 8Gi
mysqlUser: "k8s"
mysqlPassword: "123456"
mysqlDatabase: "k8s"
helm install db -f config.yaml stable/mysql
kubectl get pods
helm create demo
#Chart.yaml:用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
#values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
#Templates: 目录里面存放所有yaml模板文件。
#charts:目录里存放这个chart依赖的所有子chart。
#NOTES.txt :用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
#_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用
#创建Chart后,接下来就是将其部署:
helm install web demo/
#也可以打包推送的charts仓库共享别人使用。
helm package demo/
demo-0.1.0.tgz
## 发布新版本的chart时,或者当您要更改发布的配置时,可以使用该helm upgrade 命令。
helm upgrade --set imageTag=1.17 web demo
helm upgrade -f values.yaml web demo
## 如果在发布后没有达到预期的效果,则可以使用helm rollback回滚到之前的版本。
例如将应用回滚到第一个版本:
helm rollback web 2
## 卸载发行版,请使用以下helm uninstall命令:
helm uninstall web
## 查看历史版本配置信息
helm get --revision 1 web