1. 简介
Helm源自Deis公司(微软收购)开发并托管于Github上的开源项目Helm Classic。目前隶属于CNCF,是Kubernetes官方认可的应用管理工具
Helm 采用客户端/服务器架构,由客户端工具helm,服务端组建tiller,charts仓库组成。
2. 安装
2.1 客户端helm安装
直接从官方仓库下载 https://github.com/kubernetes/helm/releases,如果官方下载速度比较慢,可以从下面下载地址下载,从官方同步了一份存储于腾讯云对象存储
$ wget https://fileserver-1253732882.cos.ap-chongqing.myqcloud.com/helm/helm-v2.9.1-linux-amd64.tar.gz
解压并复制helm文件到可执行路径下
$ tar -zxvf helm-v2.9.1-linux-amd64.tar.gz
$ sudo cp linux-amd64/helm /usr/local/bin
2.2 服务端tiller安装
安装tiller时,会去google镜像仓库拉取镜像,由于访问google速度较慢,同步了一份镜像存储于腾讯云镜像仓库
安装过程需要在可以访问k8s集群的主机上进行,执行下面指令进行安装
$ helm init --tiller-image ccr.ccs.tencentyun.com/k8s.io/tiller:v2.9.1 --skip-refresh
2.3 安装校验
查看tiller是否在集群上成功运行,只要tiller处于运行状态,则表示安装成功
$ kubectl get pods -n kube-system | grep tiller tiller-deploy-7594bf7b76-qfzss 1/1 Running 0 1d
2.4 rbac授权
$ kubectl create serviceaccount --namespace kube-system tiller
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
$ kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
3. Charts
3.1 charts简介
如果我们需要在k8s上面跑应用,需要事先写好相关资源的yaml文件,比如deployment.yaml,service.yaml等,chart就是一个应用需要的资源文件集合
简单来说,chart就是把k8s应用所需的deployment,service,pvc,secret等组合在一起并作为模版使用
helm使用chart管理应用,通过chart可以方便的安装一个应用需要所有的资源,也很容易安装应用需要的依赖
# tree .helm/
.helm/
├── cache
│ └── archive
├── plugins
├── repository
│ ├── cache
│ ├── local
│ │ └── index.yaml
│ └── repositories.yaml
└── starters
3.2 charts仓库
charts仓库即应用仓库,官方应用仓库托管于google。可以通过helm指令增加第三方仓库或私有charts仓库
3.2.1 查看charts仓库
$ helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
3.2.2 添加charts仓库
$ helm repo add cherryleo https://fileserver-1253732882.cos.ap-chongqing.myqcloud.com/charts
$ helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
cherryleo https://fileserver-1253732882.cos.ap-chongqing.myqcloud.com/charts
3.2.3 安装应用
使用helm安装一个nginx-ingress应用,安装指令加了一些镜像仓库地址的参数
$ helm install cherryleo/nginx-ingress --set controller.image.repository=ccr.ccs.tencentyun.com/quay.io/nginx-ingress-controller --set controller.image.tag=0.15.0 --set defaultBackend.image.repository=ccr.ccs.tencentyun.com/k8s.io/defaultbackend --set defaultBackend.image.tag=1.4
3.2.4 查看应用
$ helm list
NAME REVISION UPDATED STATUS CHART NAMESPACE
giggly-grasshopper 1 Wed Jun 6 15:06:24 2018 DEPLOYED nginx-ingress-0.20.1 default
4. 更多资料
helm官方仓库:https://github.com/kubernetes/helm
chart官方仓库:https://github.com/kubernetes/charts
helm官方文档:https://docs.helm.sh