helm官方建議使用tls,首先生成證書。
openssl genrsa -out ca.key.pem 4096 openssl req -key ca.key.pem -new -x509 -days 7300 -sha256 -out ca.cert.pem -extensions v3_ca -batch openssl genrsa -out tiller.key.pem 4096 openssl genrsa -out helm.key.pem 4096 openssl req -key tiller.key.pem -new -sha256 -out tiller.csr.pem -batch openssl req -key helm.key.pem -new -sha256 -out helm.csr.pem -batch openssl x509 -req -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -in tiller.csr.pem -out tiller.cert.pem -days 7300 openssl x509 -req -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -in helm.csr.pem -out helm.cert.pem -days 7300
這樣一來,目錄下將有八個文件:ca.cert.pem ca.key.pem ca.srl helm.cert.pem helm.csr.pem helm.key.pem tiller.cert.pem tiller.csr.pem tiller.key.pem
1、安裝客戶端
安裝helm:
查看版本並下載:https://github.com/helm/helm/releases
curl -O https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz tar -zxvf helm-v2.13.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm ln -s /usr/local/bin/helm /usr/bin/helm
配置TLS
mkdir -p $(helm home) cp ca.cert.pem $(helm home)/ca.pem cp helm.cert.pem $(helm home)/cert.pem cp helm.key.pem $(helm home)/key.pem
驗證
helm help
2、安裝服務端
因為helm安裝過程中會自動拉取gcr.io/kubernetes-helm/tiller鏡像,國內可能無法訪問,故可以使用下面的命令先查看所需的鏡像版本,並在之后的命令行中設置鏡像來源
helm init --dry-run --debug
設置授權
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
初始化helm,配置了阿里的源
helm init \ --override 'spec.template.spec.containers[0].command'='{/tiller,--storage=secret}' \ --tiller-image=registry.aliyuncs.com/google_containers/tiller:v2.13.1 \ --tiller-tls \ --tiller-tls-verify \ --tiller-tls-cert=./tiller.cert.pem \ --tiller-tls-key=./tiller.key.pem \ --tls-ca-cert=./ca.cert.pem \ --service-account=tiller \ --stable-repo-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
驗證
kubectl -n kube-system get pods|grep tiller kubectl -n kube-system get deployment helm ls --tls(無輸出,運行完成即可)
3、集群中其他機器使用helm
先參考1、安裝客戶端,之后執行:
helm init \ --client-only \ --override 'spec.template.spec.containers[0].command'='{/tiller,--storage=secret}' \ --service-account=tiller \ --stable-repo-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
4、卸載
helm reset --force --tls kubectl delete serviceaccount --namespace kube-system tiller kubectl delete clusterrolebinding tiller-cluster-rule rm -rf $(helm home) /usr/local/bin/helm /usr/bin/helm