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