参考
https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/ha-install/

注意
helm使用需要kubectl,点击了解安装和配置kubectl。

Helm是Kubernetes首选的包管理工具。Helmcharts为Kubernetes YAML清单文档提供模板语法。使用Helm,我们可以创建可配置的部署,而不仅仅是使用静态文件。有关创建自己的charts的更多信息,请查看https://helm.sh/文档。Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。

1. 配置Helm客户端访问权限

Helm在集群上安装tiller服务以管理charts. 由于RKE默认启用RBAC, 因此我们需要使用kubectl来创建一个serviceaccountclusterrolebinding才能让tiller具有部署到集群的权限。

  • kube-system命名空间中创建ServiceAccount
  • 创建ClusterRoleBinding以授予tiller帐户对集群的访问权限
  • helm初始化tiller服务
kubectl -n kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller \
--clusterrole cluster-admin --serviceaccount=kube-system:tiller

2. 安装Helm客户端

采用二进制安装
可以在helm官网上下载Helm,如果速度不理想可以使用rancher自带加速下载Helm

wget https://www.cnrancher.com/download/helm/helm-v2.14.1-linux-amd64.tar.gz
tar xf helm-v2.14.1-linux-amd64.tar.gz 

helm在解压后的目录中找到二进制文件,并将其移动到所需的位置

sudo mv linux-amd64/helm /usr/local/bin/helm && chmod +x /usr/local/bin/helm

3. 安装Helm Server(Tiller)

Helm的服务器端部分Tiller,通常运行在Kubernetes集群内部。但是对于开发,它也可以在本地运行,并配置为与远程Kubernetes集群通信。

安装tiller到集群中最简单的方法就是运行helm init。这将验证helm本地环境设置是否正确(并在必要时进行设置)。然后它会连接到kubectl默认连接的K8S集群(kubectl config view)。一旦连接,它将安装tillerkube-system命名空间中。

helm init自定义参数:

  • --canary-image 参数安装金丝雀版本;
  • --tiller-image 安装特定的镜像(版本);
  • --kube-context 使用安装到特定集群;
  • --tiller-namespace 用一个特定的命名空间(namespace)安装;
注意:
1、RKE默认启用RBAC,所以在安装tiller时需要指定ServiceAccount。
2、helm init在缺省配置下,会去谷歌镜像仓库拉取gcr.io/kubernetes-helm/tiller镜像,在Kubernetes集群上安装配置Tiller;由于在国内可能无法访问gcr.io、storage.googleapis.com等域名,可以通过--tiller-image指定私有镜像仓库镜像。 
3、helm init在缺省配置下,会利用https://kubernetes-charts.storage.googleapis.com作为缺省的stable repository地址,并去更新相关索引文件。在国内可能无法访问storage.googleapis.com地址, 可以通过--stable-repo-url指定chart国内加速镜像地址。 
4、如果您是离线安装Tiller, 假如没有内部的chart仓库, 可通过添加--skip-refresh参数禁止Tiller更新索引。

在rancher中安装Tiller

wangpeng@test-kube-master-01:~$ helm init --service-account tiller --skip-refresh \
> --tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:v2.14.1
Creating /home/wangpeng/.helm 
Creating /home/wangpeng/.helm/repository 
Creating /home/wangpeng/.helm/repository/cache 
Creating /home/wangpeng/.helm/repository/local 
Creating /home/wangpeng/.helm/plugins 
Creating /home/wangpeng/.helm/starters 
Creating /home/wangpeng/.helm/cache/archive 
Creating /home/wangpeng/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com 
Adding local repo with URL: http://127.0.0.1:8879/charts 
$HELM_HOME has been configured at /home/wangpeng/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation

查看helm情况

wangpeng@test-kube-master-01:~$ helm version
Client: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}