helm 是 kubernetes 的軟體包管理工具。本文需要讀者對 docker、kubernetes 等相關知識有一定的了解。 本文將介紹 helm 中的相關概念和基本工作原理,並通過一些簡單的示例來演示如何使用helm來安裝、公升級、回滾乙個 kubernetes 應用。
在 kubernetes中部署乙個可以使用的應用,需要涉及到很多的 kubernetes 資源的共同協作。比如你安裝乙個 wordpress 部落格,用到了一些 kubernetes (下面全部簡稱k8s)的一些資源物件,包括 deployment 用於部署應用、service 提供服務發現、secret 配置 wordpress 的使用者名稱和密碼,可能還需要 pv 和 pvc 來提供持久化服務。並且 wordpress 資料是儲存在mariadb裡面的,所以需要 mariadb 啟動就緒後才能啟動 wordpress。這些 k8s 資源過於分散,不方便進行管理,直接通過 kubectl 來管理乙個應用,你會發現這十分蛋疼。
所以總結以上,我們在 k8s 中部署乙個應用,通常面臨以下幾個問題:
helm 包含兩個元件,分別是 helm 客戶端 和 tiller 伺服器:
下面兩張圖描述了 helm 的幾個關鍵元件 helm(客戶端)、tiller(伺服器)、repository(chart 軟體倉庫)、chart(軟體包)之間的關係以及它們之間如何通訊
建立release
刪除release
更新release
helm的打包格式叫做chart,所謂chart就是一系列檔案, 它描述了一組相關的 k8s 集群資源。chart中的檔案安裝特定的目錄結構組織, 最簡單的chart 目錄如下所示:
$ 解壓縮
$ tar -zxvf helm-v2.9.1-linux-amd64.tar.gz
$ 複製 helm 二進位制 到bin目錄下
$cp linux-amd64/helm /usr/local/bin/
$ curl > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh
你還可以通過 helm 的 github 專案下找到你想要的 helm 版本的二進位制,然後通過手動安裝方式一樣安裝即可
安裝好 helm 客戶端後,就可以通過以下命令將 tiller 安裝在 kubernetes 集群中:
helm init
這個地方預設使用 「 作為預設的 stable repository 的位址,但由於國內有一張無形的牆的存在,googleapis.com 是不能訪問的。可以使用阿里雲的源來配置:
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url
執行上面命令後,可以通過 kubectl get po -n kube-system 來檢視 tiller 的安裝情況。
由於 kubernetes 從1.6 版本開始加入了 rbac 授權。當前的 tiller 沒有定義用於授權的 serviceaccount, 訪問 api server 時會被拒絕,需要給 tiller 加入授權。
$ kubectl create serviceaccount --namespace kube-system tiller
serviceaccount "tiller" created
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io "tiller-cluster-rule" created
# 給 tiller 的 deployments 新增剛才建立的 serviceaccount
$ kubectl patch deploy --namespace kube-system tiller-deploy -p '}}}'
deployment.extensions "tiller-deploy" patched
$ kubectl get deploy -n kube-system tiller-deploy -o yaml | grep serviceaccount
serviceaccount: tiller
serviceaccountname: tiller
$ helm version
client: &version.version
server: &version.version
安裝成功後,即可使用 helm install *** 來安裝 helm 應用。 python從入門到實踐
1.類,例項化是根據類來建立物件 類的實踐 建立乙個人類 class humans 3.7版本不加括號 def init self,name,height 血的教訓init前後兩條下劃線,self不是類的關鍵字 self.name name self.self.height height def l...
python從入門到實踐
1.json初探 import json json模組初探 json在pytho之間分享資料 json.dump a,b 要儲存的資料和用於儲存資料的檔案物件 json.load 將資料載入記憶體 number 1,2,3,4,5,6,7 filename number.json 副檔名.json指...
Docker從入門到實踐
mark docker從入門到實踐 1.docker整體介紹 1.1 docker的基本概念 講開發程式自動部署到容器的 引擎 伺服器為貨船,容器為貨櫃,應用程式為貨櫃的貨物,碼頭工人為docker 1.2 docker總體架構 三要素 映象image 容器container 倉庫reglstry ...