利用Helm簡化Kubernetes應用部署(1)

目錄

  • 利用Helm簡化Kubernetes應用部署 html

  • Helm基礎 linux

  • 安裝Helm git

  • 使用Visual Studio 2019爲Helm編寫一個簡單的應用 github

 


 

  利用Helm簡化Kubernetes應用部署

 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

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快速部署,下一篇咱們再來詳細說明!

 

往期內容連接

集羣故障處理之處理思路以及健康狀態檢查(三十二)

集羣故障處理之處理思路以及聽診三板斧(三十三)

開源導入導出通用庫Magicodes.ExporterAndImporter發佈

使用Kubectl部署應用

經過Service訪問應用 (1)

經過Service訪問應用 (2)

使用Ingress來負載分發微服務

相關文章
相關標籤/搜索