Helm是Kubernetes中的包(chart)管理工具,通过helm可以:

  • 查找最受欢迎的char
  • 把自己的应用以chart的形式分享出去
  • 为自己的应用创建可复制形式的构建
  • 更便捷的管理k8s的mainfest
  • 版本管理

Helm与k8s的关系可以类比成apt和ubuntu,或者yum与centos的关系,Helm是C/S架构的

  • client: Helm
  • Server: Tiller

Helm

Helm是终端用户使用的命令行工具,负责:

  • 本地的chart开发
  • 管理repo(仓库)
  • 与tiller通信
    • 发送将要安装的chart
    • 请求release信息
    • 请求升级release或卸载

Tiller

Tiller是运行在k8s集群内的server,与helm互动通信,并与k8s api通信:

  • 响应helm的请求
  • 将chart根据相应配置构建release
  • 将chart安装到k8s中,并跟踪后续的release
  • 与k8s互动升级或卸载chart

安装

官方文档: https://github.com/kubernetes/helm/blob/master/docs/install.md

我的minikube依旧是0.26.0,k8s版本是1.10.0,helm建议用2.8.2的版本,其他几个版本试了下都有些问题。

Install helm client

首先安装helm的客户端:
下载地址: https://github.com/kubernetes/helm/releases/tag/v2.8.2
下载的就是helm的可执行文件了,所以不管linux还是windows,添加到PATH环境变量就可以用了。

1
2
$ tar -zxvf helm-v2.8.2-linux-amd64.tar.gz
$ mv linux-amd64/helm /usr/local/bin/helm

安装Tiller

执行命令:

1
$ helm init

就可以完成安装了,会在k8s集群中创建一个tiller-deploy的deployment,启动tiller的服务。当然会用的tiller的镜像,tiller镜像如果拉取不到可以事先在minikube的vm中拉取,方法和之前其他镜像的方法一样,在ali的容器镜像服务中中转,也可以直接用我下面的:

1
2
$ docker pull registry.cn-hangzhou.aliyuncs.com/dck8s/tiller:v2.8.2
$ docker tag registry.cn-hangzhou.aliyuncs.com/dck8s/tiller:v2.8.2 gcr.io/kubernetes-helm/tiller:v2.8.2

也可以使用国内的helm repo进行安装,比如使用ali的repo:

1
$ helm init --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

验证

Tiller启动后执行:

1
2
3
$ 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 ls以及helm repo list,分别查看当前的release以及repo,没有报错那helm基本就运行正常了。后面可以使用helm来安装chart了:)