利用Helm簡化Kubernetes應用部署(1)
目錄
-
利用Helm簡化Kubernetes應用部署
-
Helm基礎
-
安裝Helm
-
使用Visual Studio 2019為Helm編寫一個簡單的應用
利用Helm簡化Kubernetes應用部署
Helm是Kubernetes生態系統中的一個軟體包管理工具,有點類似於Linux作業系統裡面的“apt-get”和“yum”。結合上一節內容,對Kubernetes叢集進行部署應用時,我們面臨了以下問題:
-
如何管理、編輯和更新這些這些分散的 Kubernetes 應用配置檔案。
-
如何把一套相關的配置檔案作為一個應用進行管理。
-
如何分發和重用 Kubernetes 的應用配置。
Helm 的出現就是為了很好地解決上面這些問題。Helm Chart是用來封裝Kubernetes原生應用程式的一系列YAML檔案。我們可以在部署應用的時候自定義應用程式的一些 Metadata,以便於應用程式的分發。對於應用釋出者而言,可以通過 Helm 打包應用、管理應用依賴關係、管理應用版本併發布應用到軟體倉庫。對於使用者而言,使用 Helm 後不用需要編寫複雜的應用部署檔案,可以以簡單的方式在 Kubernetes 上查詢、安裝、升級、回滾、解除安裝應用程式。總之,Helm大大簡化了應用管理的難度,其主要有以下優勢:
-
管理複雜應用。Charts能定義哪怕是再複雜的應用,並且提供了可重複使用應用程式部署定義。
-
易於更新升級。
-
易於共享。Charts無論是在私有伺服器還是公共伺服器上,都非常易於升級、共享和託管。
-
輕鬆回滾。
Helm基礎
-
Helm
Helm 是一個命令列下的客戶端工具。主要用於 Kubernetes 應用程式 Chart 的建立、打包、釋出以及建立和管理本地和遠端的 Chart 倉庫。
-
Tiller
Tiller 是 Helm 的服務端,部署在 Kubernetes 叢集中。Tiller 用於接收 Helm 的請求,並根據 Chart 生成 Kubernetes 的部署檔案( Helm 稱為 Release ),然後提交給 Kubernetes 建立應用。Tiller 還提供了Release 的升級、刪除、回滾等一系列功能。
-
Chart
Helm 的軟體包,採用 TAR 格式。類似於APT的DEB包或者YUM的RPM包,其包含了一組定義 Kubernetes 資源相關的 YAML 檔案。
-
Repoistory
Helm 的軟體倉庫,其儲存了一系列的 Chart 軟體包以供使用者下載,並且提供了一個該 Repository 的 Chart 包的清單檔案以供查詢。Helm 可以同時管理多個不同的 Repository。
-
Config
應用程式例項化部署執行時的配置資訊。
-
Release
使用 helm install 命令在 Kubernetes 叢集中部署的 Chart 稱為 Release。Helm 中提到的 Release和我們通常概念中的版本有所不同,這裡的 Release 可以理解為 Helm 使用 Chart包部署的一個應用例項。在同一個叢集中,一個Chart可以使用不同的配置(Config)安裝多次,每次安裝都會建立一個Release。
安裝Helm
1.安裝Helm客戶端
推薦使用官方指令碼一鍵安裝:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh
如果安裝包無法下載,可以複製指令碼輸出的下載連結手動下載然後再解壓複製到bin目錄,如下所示:
tar -zxvf helm-v2.14.2-linux-amd64.tar.gz cp linux-amd64/helm /usr/local/bin/
2.安裝服務端——Tiller
安裝指令碼如下所示:
Kubernetes 的服務帳號和繫結角色 kubectl create serviceaccount --namespace kube-system tiller kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller #初始化安裝tiller,並制定服務賬戶和映象 helm init --service-account tiller --tiller-image gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.2 --skip-refresh
其中,Helm初始化指定了第三方映象。安裝過程如下所示:
安裝完成後,我們可以執行以下命令來檢視安裝的版本以及賬戶授權:
helm version kubectl get deploy --namespace kube-system tiller-deploy --output yaml|grep serviceAccount
值得注意的是,tiller安裝完成後,會執行在Pod之中,我們可以通過標籤“app=helm”來檢視tiller是否安裝成功:
kubectl get pods -o wide -n kube-system -lapp=helm
如果安裝過程中出現問題需要重新安裝,可以執行以下命令再重灌:
kubectl delete deployment tiller-deploy --namespace=kube-system kubectl delete service tiller-deploy --namespace=kube-system rm -rf ~/.helm/
安裝完成之後,我們編寫一個簡單的應用然後來使用Helm進行部署。
使用Visual Studio 2019為Helm編寫一個簡單的應用
Visual Studio 2019提供了一個犀利的擴充套件工具——Visual Studio Kubernetes Tool來輔助我們編寫Helm應用,如果還沒有安裝的小夥伴可以在擴充套件中查詢並安裝此擴充套件。
VS除了可以自動編寫dockerfile,構建並推送docker映象之外,還能自動新增Helm的配置模板,接下來我們按照以下步驟來建立我們第一個Helm應用工程。
1.建立專案,選擇Kubernetes專案模板。如下圖所示:
2.填寫專案名稱等資訊。
3.選擇專案模板型別。
4.新增【容器業務流程協調程式支援】。
5.選擇【Kubernetes/Helm】。
6.檢視解決方案目錄,確認Chart。
如上圖所示,VS自動為我們建立了charts目錄,相關目錄和檔案說明如下所示:
-
Chart.yaml 用於描述這個Char的相關資訊,包括應用名稱、描述以及版本等。
-
values.yaml 用於儲存templates目錄中模板檔案中用到變數的值。
-
NOTES.txt 用於介紹 Chart 部署後的一些資訊,例如:如何使用這個 Chart、列出預設的設定等。
-
Templates 目錄下是YAML檔案的模板,比如deployment、service、secrets等模板,該模板檔案遵循 Go template 語法。
注意:如上圖所示的charts目錄,我們也可以通過命令“helm create mychart”來建立。
至此,一個簡單的Helm應用模板建立完成,接下來我們來將此應用通過Helm快速部署,下一篇我們再來詳細說明!
往期內容連結
Docker+ Kubernetes已成為雲端計算的主流(二十五)
容器化之後如何節省雲端成本?(二十六)
瞭解Kubernetes主體架構(二十七)
使用Minikube部署本地Kubernetes叢集(二十八)
使用kubectl管理k8s叢集(二十九)
使用Kubeadm建立k8s叢集之部署規劃(三十)
使用Kubeadm建立k8s叢集之節點部署(三十一)
叢集故障處理之處理思路以及健康狀態檢查(三十二)
叢集故障處理之處理思路以及聽診三板斧(三十三)
開源匯入匯出通用庫Magicodes.ExporterAndImporter釋出
使用Kubectl部署應用
通過Service訪問應用 (1)
通過Service訪問應用 (2)
使用Ingress來負載分發微