利用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集群之節點部署(三十二)
集群故障處理之處理思路以及健康狀態檢查(三十三)
集群故障處理之處理思路以及聽診三板斧(三十四)
使用WebDeploy部署遠程IIS網站
使用Kubectl部署應用
通過Service訪問應用 (1)
通過Service訪問應用 (2)
使用Ingress來負載分發微服務
總結
以上是生活随笔為你收集整理的利用Helm简化Kubernetes应用部署(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码编辑器横评:为什么 VS Code
- 下一篇: 在 ABP vNext 中编写仓储单元测