如何升級Helm和Tiller
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:
helm init --upgrade --service-account tiller --tiller-image <your-docker-registry>/tiller:v2.10.0 --skip-refresh --history-max 255 kubectl get pod -n kube-system | grep tiller tiller-deploy-749d75f4f8-g98fw1/1Running037s tiller-deploy-749d75f4f8-xhr6m1/1Running037s helm version Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
-
這裡要求helm客戶端所在伺服器上kubectl可以正常管理Kubernetes叢集
- 如果私有映象倉庫需要認證才可以pull tiller映象的話,目前沒有找到helm init關於設定imagePullSecrets的引數,因此如果執行完上面的升級命令後需要手動修改一下tiller-deploy這個Deployment,並在其中加入imagePullSecrets