利用Helm简化Kubernetes应用部署(1)
目錄
利用Helm簡化Kubernetes應(yīng)用部署?
Helm基礎(chǔ)?
安裝Helm?
使用Visual Studio 2019為Helm編寫一個(gè)簡單的應(yīng)用?
利用Helm簡化Kubernetes應(yīng)用部署
Helm是Kubernetes生態(tài)系統(tǒng)中的一個(gè)軟件包管理工具,有點(diǎn)類似于Linux操作系統(tǒng)里面的“apt-get”和“yum”。結(jié)合上一節(jié)內(nèi)容,對Kubernetes集群進(jìn)行部署應(yīng)用時(shí),我們面臨了以下問題:
如何管理、編輯和更新這些這些分散的 Kubernetes 應(yīng)用配置文件。
如何把一套相關(guān)的配置文件作為一個(gè)應(yīng)用進(jìn)行管理。
如何分發(fā)和重用 Kubernetes 的應(yīng)用配置。
Helm 的出現(xiàn)就是為了很好地解決上面這些問題。Helm Chart是用來封裝Kubernetes原生應(yīng)用程序的一系列YAML文件。我們可以在部署應(yīng)用的時(shí)候自定義應(yīng)用程序的一些 Metadata,以便于應(yīng)用程序的分發(fā)。對于應(yīng)用發(fā)布者而言,可以通過 Helm 打包應(yīng)用、管理應(yīng)用依賴關(guān)系、管理應(yīng)用版本并發(fā)布應(yīng)用到軟件倉庫。對于使用者而言,使用 Helm 后不用需要編寫復(fù)雜的應(yīng)用部署文件,可以以簡單的方式在 Kubernetes 上查找、安裝、升級、回滾、卸載應(yīng)用程序。總之,Helm大大簡化了應(yīng)用管理的難度,其主要有以下優(yōu)勢:
管理復(fù)雜應(yīng)用。Charts能定義哪怕是再復(fù)雜的應(yīng)用,并且提供了可重復(fù)使用應(yīng)用程序部署定義。
易于更新升級。
易于共享。Charts無論是在私有服務(wù)器還是公共服務(wù)器上,都非常易于升級、共享和托管。
輕松回滾。
Helm基礎(chǔ)
Helm
Helm 是一個(gè)命令行下的客戶端工具。主要用于 Kubernetes 應(yīng)用程序 Chart 的創(chuàng)建、打包、發(fā)布以及創(chuàng)建和管理本地和遠(yuǎn)程的 Chart 倉庫。
Tiller
Tiller 是 Helm 的服務(wù)端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的請求,并根據(jù) Chart 生成 Kubernetes 的部署文件( Helm 稱為 Release ),然后提交給 Kubernetes 創(chuàng)建應(yīng)用。Tiller 還提供了Release 的升級、刪除、回滾等一系列功能。
Chart
Helm 的軟件包,采用 TAR 格式。類似于APT的DEB包或者YUM的RPM包,其包含了一組定義 Kubernetes 資源相關(guān)的 YAML 文件。
Repoistory
Helm 的軟件倉庫,其保存了一系列的 Chart 軟件包以供用戶下載,并且提供了一個(gè)該 Repository 的 Chart 包的清單文件以供查詢。Helm 可以同時(shí)管理多個(gè)不同的 Repository。
Config
應(yīng)用程序?qū)嵗渴疬\(yùn)行時(shí)的配置信息。
Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 稱為 Release。Helm 中提到的 Release和我們通常概念中的版本有所不同,這里的 Release 可以理解為 Helm 使用 Chart包部署的一個(gè)應(yīng)用實(shí)例。在同一個(gè)集群中,一個(gè)Chart可以使用不同的配置(Config)安裝多次,每次安裝都會創(chuàng)建一個(gè)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
如果安裝包無法下載,可以復(fù)制腳本輸出的下載鏈接手動下載然后再解壓復(fù)制到bin目錄,如下所示:
tar -zxvf helm-v2.14.2-linux-amd64.tar.gz cp linux-amd64/helm /usr/local/bin/2.安裝服務(wù)端——Tiller
安裝腳本如下所示:
#創(chuàng)建 Kubernetes 的服務(wù)帳號和綁定角色 kubectl create serviceaccount --namespace kube-system tiller kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller #初始化安裝tiller,并制定服務(wù)賬戶和鏡像 helm init --service-account tiller --tiller-image gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.2 --skip-refresh其中,Helm初始化指定了第三方鏡像。安裝過程如下所示:
安裝完成后,我們可以執(zhí)行以下命令來查看安裝的版本以及賬戶授權(quán):
helm version kubectl get deploy --namespace kube-system tiller-deploy --output yaml|grep serviceAccount值得注意的是,tiller安裝完成后,會運(yùn)行在Pod之中,我們可以通過標(biāo)簽“app=helm”來查看tiller是否安裝成功:
kubectl get pods -o wide -n kube-system -lapp=helm如果安裝過程中出現(xiàn)問題需要重新安裝,可以執(zhí)行以下命令再重裝:
kubectl delete deployment tiller-deploy --namespace=kube-system kubectl delete service tiller-deploy --namespace=kube-system rm -rf ~/.helm/安裝完成之后,我們編寫一個(gè)簡單的應(yīng)用然后來使用Helm進(jìn)行部署。
使用Visual Studio 2019為Helm編寫一個(gè)簡單的應(yīng)用
Visual Studio 2019提供了一個(gè)犀利的擴(kuò)展工具——Visual Studio Kubernetes Tool來輔助我們編寫Helm應(yīng)用,如果還沒有安裝的小伙伴可以在擴(kuò)展中查找并安裝此擴(kuò)展。
VS除了可以自動編寫dockerfile,構(gòu)建并推送docker鏡像之外,還能自動添加Helm的配置模板,接下來我們按照以下步驟來創(chuàng)建我們第一個(gè)Helm應(yīng)用工程。
1.創(chuàng)建項(xiàng)目,選擇Kubernetes項(xiàng)目模板。如下圖所示:
2.填寫項(xiàng)目名稱等信息。
3.選擇項(xiàng)目模板類型。
4.添加【容器業(yè)務(wù)流程協(xié)調(diào)程序支持】。
5.選擇【Kubernetes/Helm】。
6.查看解決方案目錄,確認(rèn)Chart。
如上圖所示,VS自動為我們創(chuàng)建了charts目錄,相關(guān)目錄和文件說明如下所示:
Chart.yaml 用于描述這個(gè)Char的相關(guān)信息,包括應(yīng)用名稱、描述以及版本等。
values.yaml 用于存儲templates目錄中模板文件中用到變量的值。
NOTES.txt 用于介紹 Chart 部署后的一些信息,例如:如何使用這個(gè) Chart、列出缺省的設(shè)置等。
Templates 目錄下是YAML文件的模板,比如deployment、service、secrets等模板,該模板文件遵循 Go template 語法。
注意:如上圖所示的charts目錄,我們也可以通過命令“helm create mychart”來創(chuàng)建。
至此,一個(gè)簡單的Helm應(yīng)用模板創(chuàng)建完成,接下來我們來將此應(yīng)用通過Helm快速部署,下一篇我們再來詳細(xì)說明!
往期內(nèi)容
Docker+ Kubernetes已成為云計(jì)算的主流(二十六)
容器化之后如何節(jié)省云端成本?(二十七)
了解Kubernetes主體架構(gòu)(二十八)
使用Minikube部署本地Kubernetes集群(二十九)
使用kubectl管理k8s集群(三十)
使用Kubeadm創(chuàng)建k8s集群之部署規(guī)劃(三十一)
使用Kubeadm創(chuàng)建k8s集群之節(jié)點(diǎn)部署(三十二)
集群故障處理之處理思路以及健康狀態(tài)檢查(三十三)
集群故障處理之處理思路以及聽診三板斧(三十四)
使用WebDeploy部署遠(yuǎn)程IIS網(wǎng)站
使用Kubectl部署應(yīng)用
通過Service訪問應(yīng)用 (1)
通過Service訪問應(yīng)用 (2)
使用Ingress來負(fù)載分發(fā)微服務(wù)
總結(jié)
以上是生活随笔為你收集整理的利用Helm简化Kubernetes应用部署(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码编辑器横评:为什么 VS Code
- 下一篇: 在 ABP vNext 中编写仓储单元测