日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
什么是Helm?它是如何提升創(chuàng)新互聯(lián)應(yīng)用私有化部署效率的

大家好,我是蝸牛哥,試想一下,如果有一個(gè)項(xiàng)目有50 個(gè)微服務(wù),每個(gè)微服務(wù)都有service、deployment、ingress、pvc等 yaml 文件,算下來(lái)大概有 200 個(gè)文件,然后這個(gè)項(xiàng)目需要基于k8s進(jìn)行私有化交付,如果是你會(huì)怎么快速部署應(yīng)用?

成都創(chuàng)新互聯(lián)公司專(zhuān)注于民權(quán)企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),電子商務(wù)商城網(wǎng)站建設(shè)。民權(quán)網(wǎng)站建設(shè)公司,為民權(quán)等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

首先讓我們先思考一下:

  • 200 個(gè)文件是否通過(guò)kubectl apply進(jìn)行部署,寫(xiě)個(gè)shell 腳本for 循環(huán)一個(gè)個(gè)讀取執(zhí)行?,但是如果這些yaml 文件更新了,如何同步?
  • 如果這些pod進(jìn)行需要升級(jí)怎么辦,一個(gè)個(gè)修改鏡像 tag?
  • yaml文件關(guān)聯(lián)地址如何更新,比如數(shù)據(jù)庫(kù)地址、文件系統(tǒng)地址,日志目錄,資源大小等?
  • 如果想進(jìn)行卸載,如何做,一個(gè)個(gè)去刪除?

如果有一個(gè)工具能把這些yaml文件放在一個(gè)包里,類(lèi)似npm、maven這樣的包管理工具,然后把關(guān)鍵的參數(shù)暴露出來(lái),在部署時(shí)指定這些參數(shù),執(zhí)行一鍵部署,在卸載時(shí)一鍵卸載是不是很方便,而Helm 就是這樣的工具。

什么是Helm

Helm 是一個(gè)能夠在 Kubernetes 上打包、部署和管理應(yīng)用程序的工具,即使是最復(fù)雜的 Kubernetes 應(yīng)用程序它都可以幫助定義,安裝和升級(jí),同時(shí)Helm 也是 CNCF 的畢業(yè)項(xiàng)目。

以下Helm中的概念:

  • Helm Charts:預(yù)先配置yaml的模板,在這里叫Chart,用于描述 Kubernetes 應(yīng)用程序的yaml和配置
  • Helm Client:用于與 Helm 交互并管理這些Chart版本的命令行界面
  • Chart 倉(cāng)庫(kù):管理Chart的倉(cāng)庫(kù),跟Maven的Nexus一個(gè)意思,比如在公司環(huán)境構(gòu)建上傳,在客戶(hù)的機(jī)房連接到這Chart 倉(cāng)庫(kù)下載Chart,并部署到k8s中。

我們要做什么?

這里我們不介紹Helm 的具體函數(shù),具體可以查官網(wǎng),這里只講一下如何使用Helm,讓你對(duì)Helm有一個(gè)認(rèn)識(shí),知道在什么場(chǎng)景下使用即可,所以我們結(jié)合一個(gè)示例講一下玩法。

示例介紹

有一個(gè)運(yùn)維部署系統(tǒng),分為前后端,需要部署到客戶(hù)機(jī)房,在k8s架構(gòu)如下,可以看到需要8 個(gè)文件(其中Istio需要2個(gè)yaml文件),下面通過(guò)示例一步步創(chuàng)建這個(gè)Chart。

1.示例創(chuàng)建

我們通過(guò)helm create dp-manage命令創(chuàng)建一個(gè)Chart,執(zhí)行完以后,默認(rèn)會(huì)生成一個(gè) nginx 的Chart,如下圖

2.關(guān)鍵文件說(shuō)明

(1) Chart.yaml

定義了當(dāng)前 chart版本,以及描述當(dāng)前chart用途,其中 name 參數(shù)表示 chart 名稱(chēng),后期上傳下載都會(huì)用此名稱(chēng)

(2) values.yaml

可變參數(shù),都是在此文件中定義,在yaml模板中引用,比如:image.repository,而引用則通過(guò).Values+變量的名進(jìn)行引用,如下圖

(3) _helpers.tpl

通用代碼塊定義,類(lèi)似于freemaker的宏,然后在yaml中通過(guò)名稱(chēng)進(jìn)行引用,include 修飾的都是,比如dp-manager.selectorLabels

3.示例修改

由于默認(rèn)創(chuàng)建一個(gè)Nginx 的 Chart 無(wú)法滿(mǎn)足我們需求,所以刪除掉多余的文件,并添加運(yùn)維部署系統(tǒng)的yaml 文件,如下圖:

可以看到有8個(gè)模板文件,其中backend-dp.yaml定義如下:

通過(guò)引用values.yml參數(shù)和_helpers.tpl的通用代碼塊,最終會(huì)生成一個(gè)k8s的deployment.yml文件,其他文件就不一一介紹

構(gòu)建與部署

通過(guò)前面的介紹,需要把Chart構(gòu)建好以后,上傳到Chart倉(cāng)庫(kù),然后在客戶(hù)機(jī)房連接這個(gè)倉(cāng)庫(kù),進(jìn)行下載,因此需要一個(gè)Chart 倉(cāng)庫(kù),這里我們使用Harbor ,Habor可以作為容器鏡像倉(cāng)庫(kù)也可以作為 Chart倉(cāng)庫(kù)一舉兩得,推薦使用。

1.關(guān)聯(lián)倉(cāng)庫(kù)

在安裝好 Helm client 以后,在本地執(zhí)行以下命令,關(guān)聯(lián)到倉(cāng)庫(kù):

helm repo add myrepo https://host/倉(cāng)庫(kù)地址 \
--username sre \
--password xxxx

添加完,執(zhí)行helm repo list可以查到添加的myrepo倉(cāng)庫(kù):

2.構(gòu)建打包

倉(cāng)庫(kù)關(guān)聯(lián)好以后,執(zhí)行helm package dp-manager命令打包,會(huì)生成一個(gè)dp-manager-1.0.0.tgz包:

執(zhí)行helm cm-push dp-manager-1.0.0.tgz myrepo推送至Harbor 倉(cāng)庫(kù),myrepo為我們的倉(cāng)庫(kù)名稱(chēng),推送完以后登錄Harbor 查看,如下圖:

3.拉取部署

Chart 上傳以后,我們?cè)诳蛻?hù)機(jī)房安裝Helm Client和Kubectl客戶(hù)端,具體安裝方法查詢(xún)網(wǎng)上,通過(guò)helm repo add關(guān)聯(lián)Habor倉(cāng)庫(kù)地址,關(guān)聯(lián)以后執(zhí)行search 命令查找運(yùn)維部署系統(tǒng)的Chart:

helm search repo  myrepo/dp-manager

Chart查詢(xún)到以后,就可以進(jìn)行部署了,部署分為兩種方式,一種是下載 Chart至本地,修改values.yaml文件在部署,另外一種是不用下載直接指定參數(shù)部署,我們使用第二種:

helm install dp-manager myrepo/dp-manager  \
--set istioGateway.hosts={dpmanager.test.com} \
--set pv.log.pvEnabled=false \
--set pv.log.type=storageClass \
--set pv.log.pvc.storageName=gfs-storage \
--set pv.log.pvc.storage=20Gi \
--set apollo.cluster=default 

我們?cè)谶@個(gè)命令中指定了域名,存儲(chǔ)大小等參數(shù),這些參數(shù)通過(guò)values.yaml文件暴露,另外此命令部署運(yùn)維部署系統(tǒng)至default命令空間,可以通過(guò)-n 參數(shù)指定命名空間。

命令執(zhí)行完以后,可以通過(guò)helm list進(jìn)行查看,如下圖:

helm list

4.更新

假設(shè)apollo.cluster值由 default修改為prod,執(zhí)行upgrade 更新即可:

helm upgrade dp-manager myrepo/dp-manager  \
--set istioGateway.hosts={dpmanager.test.com} \
--set pv.log.pvEnabled=false \
--set pv.log.type=storageClass \
--set pv.log.pvc.storageName=gfs-storage \
--set pv.log.pvc.storage=20Gi \
--set apollo.cluster=prod 

5.卸載

卸載非常簡(jiǎn)單,執(zhí)行以下命令即可:

helm uninsall dp-manager

網(wǎng)頁(yè)名稱(chēng):什么是Helm?它是如何提升創(chuàng)新互聯(lián)應(yīng)用私有化部署效率的
當(dāng)前URL:http://www.5511xx.com/article/dhgihoj.html