每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。
Helm 有两个重要的概念:chart 和 release。
(1)、chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。
(2)、release 是 chart 的运行实例,代表了一个正在运行的应用。当 chart 被安装到 Kubernetes 集群,就生成一个 release。chart 能够多次安装到同一个集群,每次安装都是一个 release。
Helm 是包管理工具,这里的包就是指的 chart。
Helm 包含两个组件:Helm 客户端 和 Tiller 服务器。
简单的讲:Helm 客户端负责管理 chart;Tiller 服务器负责管理 release。
Helm 安装:
(1)、将 Helm 客户端安装在能够执行 kubectl 命令的节点上 (通过官方脚本安装)
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
(2)、通过源码安装
在helm官网找到合适的版本下载(amd64):https://github.com/helm/helm/releases
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.8.2-linux-amd64.tar.gz
tar -zxvf helm-v2.8.2-linux-amd64.tar.gz
cd linux-amd64
cp helm /usr/local/bin/helm
备注:安装helm和tiller需要保持版本一致,如果版本不一致的话是无法成功安装软件的
Tiller安装:
Tiller 服务器安装非常简单,只需要执行 helm init
错误排查:
1、在安装tiller的过程中,可能会遇到tiller镜像由于网络原因无法下载,当检查到tiller-deploy无法启动的时候,需要修改tiller-deploy对应的镜像,等待tiller镜像启动。(执行命令 helm version的时候会提示没有准备好的pod,则对应tiller pod没有成功启动)
registry.cn-shanghai.aliyuncs.com/kubernetes_djb/tiller:v1.10.1
2、如果提示 Error: cannot connect to Tiller ,那么需要安装插件 socat
yum install socat -y
版本检查:
helm version
Client: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"}
Helm使用:
1、查看当前可安装的chart
helm search mysql
2、查看helm仓库
helm repo list
Helm 安装时已经默认配置好了两个仓库:stable 和 local。stable 是官方仓库,local 是用户存放自己开发的 chart 的本地仓库。
3、安装
helm install stable/mysql
4、创建自定义chart
(1)、创建chart包
helm create myapp
cd myapp/
ls -lah
drwxr-xr-x 4 root root 93 Feb 15 13:34 .
drwxr-xr-x 3 root root 66 Feb 15 13:34 ..
drwxr-xr-x 2 root root 6 Feb 15 11:46 charts
-rw-r--r-- 1 root root 201 Feb 15 13:32 Chart.yaml
-rw-r--r-- 1 root root 333 Feb 15 11:46 .helmignore
drwxr-xr-x 2 root root 106 Feb 15 11:46 templates
-rw-r--r-- 1 root root 913 Feb 15 13:34 values.yaml
执行完上面的命令会在myapp目录下生成如上说是的文件以及目录
(2)、修改Chart.yaml文件 (应用的基本信息)
可以将Chart.yaml文件理解成对于镜像的服务的说明文件
(3)、修改values.yaml文件 (模板默认值)
values.yaml文件中配置实际应用的相关参数:镜像、serivce、ingress、副本等
(4)、测试打包
cd ..
helm lint ./myapp
helm package myapp/
(5)、创建代理
注意这里需要在 myapp-0.0.1.tgz 同级上执行,这里会启动一个web服务,端口为 8879
helm serve
(6)、打开一个新的终端,进行安装
helm install --name myapp1 local/myapp
安装完毕之后,测试访问:curl 192.168.56.15
这个时候通过 helm search 搜索chart,是能在库local下发现自定义的包的。
5、拉取chart到本地
helm search | grep chart_name
helm fetch chart_name
拉取到本地的chart是一个压缩包,需要通过tar命令进行解压。
6、查询安装在本地的release 列表
helm ls
7、删除release (也就是删除通过helm安装的应用)
helm delete --purge chart_name
8、升级回滚release
# 升级
helm upgrade --set mysqlRootPassword=passwd db-mysql stable/mysql
# 回滚
helm rollback db-mysql 1
更多内容请关注我的知乎账号:https://www.zhihu.com/people/dengjiabo/activities