如何升级Helm和Tiller
2018-09-04
helm作为Kubernetes的包管理器,典型的C/S架构:
- helm:命令行工具,一般安装在CI/CD Server上使用
- tiller: 是helm的服务端,部署在Kubernetes上,管理Release
这里记录一下测试环境Kubernetes集群的helm从v2.10.0-rc.3
升级到v2.10.0
的过程。
之前提前使用v2.10.0-rc.3
的原因,是因为helm 2.10开始支持--kubeconfig
,这样我们就很容易在CI/CD Server上同时使用helm访问多个Kubernetes集群。
首先需要准备tiller的镜像gcr.io/kubernetes-helm/tiller:v2.10.0,并将其推送到私有仓库中。
下载helm的客户端https://storage.googleapis.com/kubernetes-helm/helm-v2.10.0-linux-amd64.tar.gz
,并在CI/CD Server上
替换helm二进制文件。
升级服务端tiller:
1helm init --upgrade --service-account tiller --tiller-image <your-docker-registry>/tiller:v2.10.0 --skip-refresh --history-max 255
2
3kubectl get pod -n kube-system | grep tiller
4tiller-deploy-749d75f4f8-g98fw 1/1 Running 0 37s
5tiller-deploy-749d75f4f8-xhr6m 1/1 Running 0 37s
6
7helm version
8Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
9Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
- 这里要求helm客户端所在服务器上kubectl可以正常管理Kubernetes集群
- 如果私有镜像仓库需要认证才可以pull tiller镜像的话,目前没有找到helm init关于设置imagePullSecrets的参数,因此如果执行完上面的升级命令后需要手动修改一下tiller-deploy这个Deployment,并在其中加入imagePullSecrets