1. Helm简介
Helm is the best way to find, share, and use software built for Kubernetes.
helm是k8s的包管理工具,就像yum之于centos,apt之于ubuntu。不同的是,yum管理的是软件包,helm管理的是配置好的k8s资源包。这种配置好的k8s资源包,按照chart的包格式进行包装。以下是wordpress的chart包结构:
1 | wordpress/ |
Helm2包括两个组件:客户端(Helm Client)和服务端(Tiller)。Helm发送指令给Tiller(gRPC协议),Tiller主要用于管理各种应用发布的版本,并且与k8s进行交互。
不过,在 Helm3 中 Tiller 被移除掉了,Helm直接与k8s进行交互,版本相关的数据存储在k8s中。
Helm3中命令也发生了变化:
- helm delete 更名为 helm uninstall
- helm inspect 更名为 helm show
- helm fetch 更名为 helm pull
旧的命令依然可以使用。
参考文档:
2. 体验Helm
越来越喜欢用katacoda来学习新技能,Helm也可以在上面通过实践学习。
Helm相关教程:
3. 安装Helm
参考 Installing Helm,安装helm。
3.1. macos
1 | brew install helm |
3.2. linux
1、查找需要的release版本
2、下载并安装
1 | wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz |
4. Helm常用命令
4.1. 使用条件
helm命令使用条件:
- 安装配置好k8s集群
- 安装配置好kubectl,可以正常访问k8s
- 安装好helm
helm和kubectl一样,可以在一台机器上管理多个k8s集群,使用kubectl config use-context xxx
切换一下集群即可。
4.2. 查看帮助
1 | helm -h |
4.3. 从 Artifact Hub 查找chart
1 | helm search hub mysql |
Artifact Hub中存放了大量不同的仓库。
4.4. 添加chart仓库到本地
1 | # helm repo add stable https://kubernetes-charts.storage.googleapis.com/ |
执行helm repo add
,实际上是在本地创建或更新一个名为repositories.yaml的文件,该文件存储了所有已添加的仓库的详细信息,包括名称和URL。
repositories.yaml 文件路径为:
- 在Linux上:
$HOME/.config/helm
- 在macOS上:
$HOME/Library/Preferences/helm
- 在Windows上:
%USERPROFILE%\AppData\Roaming\Helm
4.5. 本地查找chart列表
1 | helm search repo stable |
4.6. 查看chart详情
1 | helm show chart stable/mysql |
4.7. 查看chart渲染后的yaml
1 | helm template mysql stable/mysql |
4.8. 模拟安装软件
1 | helm install mysql stable/mysql --version 0.3.5 --debug --dry-run |
4.9. 安装软件
以安装mysql为例(适用于 k8s v1.16- 版本)
1 | helm install mysql stable/mysql |
安装指定chart版本的mysql
1 | helm search repo stable/mysql -l |
k8s v1.16+ 版本,extensions/v1beta1 API version中Deployment资源已经被移除了,因此这里的mysql chart仅适用于1.16以下的版本。详情参考Deprecated APIs Removed In 1.16: Here’s What You Need To Know
如果想要在 k8s v1.16+ 版本中使用这个mysql chart,请参考《K8S中安装Mysql》一文中的【helm安装单节点mysql(5.7.x)】一节。
4.10. 查看k8s中安装的chart
1 | helm list |
4.11. 查看k8s中安装的chart详情
1 | helm get manifest mysql -n mysql |
该命令能够打印出所有上传到k8s的资源清单。
每个文件以---
开头表示YAML文件的开头,然后是自动生成的注释行,表示哪个模板文件生成了这个YAML文档。
4.12. 卸载软件
以卸载mysql为例
1 | helm ls |
卸载指定namespace下的软件
1 | helm ls -A |
4.13. 修改默认配置
4.13.1. 方法一:下载chart(推荐)
下载chart,修改配置文件。
这种方法是最推荐的方法,原因有二:
- 有时不止需要修改values.yaml,还需要修改其他yaml文件
- 安装之后有完整留档,方便以后的配置调整和升级
以修改mysql的默认配置为例:
1、获取chart并解压
1 | helm fetch stable/mysql |
2、编辑values
1 | cd mysql |
配置项改为我们需要的配置。
3、执行安装
在values所在目录下,执行命令
1 | kubectl create ns mysql |
安装过程中有两种方式传递配置数据:
--values
(或-f
):使用 YAML 文件覆盖配置。可以指定多次,优先使用最右边的文件。--set
:通过命令行的方式对指定项进行覆盖。优先级更高。
4.13.2. 方法二:导出配置文件
导出配置文件,修改配置文件
以修改mysql的默认配置为例:
1、获取默认values
1 | helm show values stable/mysql > mysql-values.yaml |
2、编辑values
编辑mysql-values.yaml
3、执行安装
1 | kubectl create ns mysql |
4.13.3. 方法三:执行命令时指定配置
执行helm install
命令时,指定配置
以修改mysql的默认配置为例:
1 | helm install mysql stable/mysql -n mysql --set persistence.size=10Gi |
4.14. 修改配置后更新
1 | helm upgrade mysql stable/mysql -f mysql-values.yaml -n mysql |
4.15. 创建chart并打包
1、创建chart
1 | helm create wecms |
2、验证chart
1 | helm lint wecms |
3、打包chart
1 | helm package wecms |
4、使用chart安装
1 | helm install wecms ./wecms-0.1.0.tgz |
更多关于创建chart的内容,参考文档《自己动手制作Helm Chart》
4.16. 生成渲染好的资源清单
1 | helm template wecms wecms > wecms_manifest.yaml |
5. Helm基础知识
参考文档《Helm官方文档摘录》