利用Helm簡化Kubernetes應用部署 html
Helm基礎 linux
安裝Helm git
使用Visual Studio 2019爲Helm編寫一個簡單的應用 github
Helm是Kubernetes生態系統中的一個軟件包管理工具,有點相似於Linux操做系統裏面的「apt-get」和「yum」。結合上一節內容,對Kubernetes集羣進行部署應用時,咱們面臨瞭如下問題:docker
如何管理、編輯和更新這些這些分散的 Kubernetes 應用配置文件。服務器
如何把一套相關的配置文件做爲一個應用進行管理。架構
如何分發和重用 Kubernetes 的應用配置。併發
Helm 的出現就是爲了很好地解決上面這些問題。Helm Chart是用來封裝Kubernetes原生應用程序的一系列YAML文件。咱們能夠在部署應用的時候自定義應用程序的一些 Metadata,以便於應用程序的分發。對於應用發佈者而言,能夠經過 Helm 打包應用、管理應用依賴關係、管理應用版本併發布應用到軟件倉庫。對於使用者而言,使用 Helm 後不用須要編寫複雜的應用部署文件,能夠以簡單的方式在 Kubernetes 上查找、安裝、升級、回滾、卸載應用程序。總之,Helm大大簡化了應用管理的難度,其主要有如下優點:app
管理複雜應用。Charts能定義哪怕是再複雜的應用,而且提供了可重複使用應用程序部署定義。curl
易於更新升級。
易於共享。Charts不管是在私有服務器仍是公共服務器上,都很是易於升級、共享和託管。
輕鬆回滾。
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。
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提供了一個犀利的擴展工具——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快速部署,下一篇咱們再來詳細說明!