helm 安装

前提:

$HOME/.kube/config 需要提前配置好

下载:

1
https://github.com/helm/helm/releases

查看版本:

1
helm version

helm 默认会去读取 $HOME/.kube/config 的配置文件,用于正确的连接至目标集群

本地安装

1
2
./tiller
export HELM_HOST=localhost:44134

k8s安装

1
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

Helm init --upgrade会在Kubernetes集群上安装配置Tiller, 镜像默认使用 https://gcr.io/kubernetes-helm/tiller; 仓库默认使用 https://kubernetes-charts.storage.googleapis.com。由于国内无法访问相关域名,可以使用阿里云容器服务提供的镜像和站点。helm init 会初始化 helm 的默认目录 $HELM_HOME 默认值为 $HOME/.helm

查看容器启动情况

1
2
kubectl get po -n kube-system
kubectl -n kube-system get deploy tiller-deploy

安装 helm 服务端 tiller,是可以通过 kubectl 部署的, 查看部署配置的命令如下:

1
helm init --dry-run --debug

查看已部署的应用

1
helm list

从Kubernetes 1.6开始,API Server启用了RBAC授权。而Tiller部署没有定义授权的ServiceAccount,这会导致访问API Server时被拒绝。我们可以采用如下方法,为Tiller部署添加授权。

1
2
3
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"}}}}'

配置文件方式:

创建一个 ServiceAccount 命名为 tiller,为了简单,我们直接将它与 cluster-admin 进行绑定。

tiller-rbac.yaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system

执行:

1
kubectl apply -f tiller-rbac.yaml

参考资料:

https://www.jianshu.com/p/699c5ced3f87
https://github.com/BurdenBear/kube-charts-mirror