中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

基于模板引擎的容器部署框架

2019-09-09    來(lái)源:多智時(shí)代

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

  容器創(chuàng)建或者應(yīng)用部署配置繁雜且存在變數(shù),為了保證系統(tǒng)靈活性和復(fù)用性,本文重點(diǎn)講述如何以模板引擎為核心,構(gòu)建統(tǒng)一的容器部署框架。

在大家使用容器的過(guò)程中,都會(huì)有一種經(jīng)歷,容器配置項(xiàng)眾多大概有四五十項(xiàng),且需要一定技術(shù)背景才能理解。部署過(guò)程中,用戶常常會(huì)因?yàn)閷?duì)于配置參數(shù)缺乏理解,導(dǎo)致容器啟動(dòng),應(yīng)用部署或者升級(jí)時(shí)遇到各種各樣的問(wèn)題。用戶如何加快對(duì)不同參數(shù)的理解并且能夠根據(jù)不同的應(yīng)用類(lèi)型和場(chǎng)景,做相應(yīng)擴(kuò)展,本文將重點(diǎn)要探討和解決這些問(wèn)題。

容器創(chuàng)建或者應(yīng)用部署配置繁雜且存在變數(shù),為了保證系統(tǒng)靈活性和復(fù)用性,決定以模板引擎為核心,構(gòu)建統(tǒng)一的容器部署框架。本文重點(diǎn)講述如何構(gòu)建模板引擎以及以模板引擎為核心構(gòu)建容器部署框架的運(yùn)行原理。模板引擎中,符合一定格式規(guī)范的文件是基礎(chǔ),對(duì)于可能有變化或者根據(jù)部署流程需要變化的位置,使用參數(shù)標(biāo)識(shí)站位。模板文件結(jié)尾追加參數(shù)標(biāo)識(shí)的定義,用來(lái)執(zhí)行參數(shù)標(biāo)識(shí)語(yǔ)義轉(zhuǎn)化。模板或者參數(shù)標(biāo)識(shí)的具體內(nèi)容,可以通過(guò)特定配置文件讀取或者接收客戶端請(qǐng)求參數(shù)。

模板引擎

模板引擎由模板定義,模板解析,模板轉(zhuǎn)換,模板執(zhí)行四個(gè)模塊組成。模板定義依賴(lài)于容器集群的管理框架,是非可執(zhí)行的文件。模板解析器負(fù)責(zé)把模板一分為二:一部分形成非可執(zhí)行的部署模板;一部分形成部署模板中參數(shù)的定義說(shuō)明,參數(shù)定義說(shuō)明通過(guò)唯一的站位標(biāo)識(shí)符與部署模板中的站位標(biāo)識(shí)符一一對(duì)應(yīng)。模板轉(zhuǎn)換器接受參數(shù)值,結(jié)合解析器中生成的部署模板,參數(shù)值標(biāo)識(shí)與模板中占位標(biāo)識(shí)關(guān)聯(lián),參數(shù)值通過(guò)占位標(biāo)識(shí)替換,生成可執(zhí)行文件。模板執(zhí)行器負(fù)責(zé)根據(jù)模板創(chuàng)建對(duì)象,一般有調(diào)度框架或者容器引擎承擔(dān)。

模板引擎的執(zhí)行原理如圖1所示:

基于模板引擎的容器部署框架

圖1 模板引擎的執(zhí)行原理

模板定義

模板定義包括兩類(lèi)信息:部署模板;參數(shù)標(biāo)識(shí)。

以kubernetes的部署模板為例,部署模板涉及到4種不同類(lèi)型定義,分別是:資源、版本、信息說(shuō)明、數(shù)據(jù)配置。

1.資源:表示kubernetes中定義的對(duì)象類(lèi)型。

2.版本:表示對(duì)象的版本

3.信息說(shuō)明:包括對(duì)象名稱(chēng),標(biāo)簽,注釋等,為對(duì)象查找或者調(diào)度提供索引。

4.數(shù)據(jù)配置:負(fù)責(zé)定義容器處于運(yùn)行態(tài)遵循的標(biāo)準(zhǔn),包括端口、環(huán)境變量、資源、調(diào)度、健康檢查等。

參數(shù)標(biāo)識(shí)由6個(gè)屬性組成,分別是parameters、name、description、displayname、value、type。

1.parameters:參數(shù)定義起始標(biāo)志

2.description:參數(shù)的提示信息

3.displayname:具體語(yǔ)義信息

4.name:與引用參數(shù)名稱(chēng)對(duì)應(yīng),表示描述信息為對(duì)應(yīng)的引用參數(shù)

5.value:參數(shù)默認(rèn)值

6.type:代表不同的樣式,客戶端根據(jù)type類(lèi)型,呈現(xiàn)具體樣式

以kubernetes中的namespace對(duì)象為例,模板的完整定義如下代碼所示:

基于模板引擎的容器部署框架

由上述代碼中,包含兩部分內(nèi)容:部署模板,參數(shù)說(shuō)明。

部署模板如下代碼塊所示:

基于模板引擎的容器部署框架

部署模板定義對(duì)象創(chuàng)建的所有內(nèi)容,模板中字段含義描述如下:

1.apiVersion:通用選項(xiàng),定義版本信息

2.Kind:定義對(duì)象類(lèi)型,區(qū)別不同的對(duì)象

3.Metadata:定義部署時(shí)指定的參數(shù)鍵值對(duì)

4${}:表示參數(shù)的引用值,即可替代參數(shù)

參數(shù)標(biāo)識(shí),定義了客戶端動(dòng)態(tài)獲取參數(shù)后的展現(xiàn)形態(tài),下面代碼示例參數(shù)標(biāo)識(shí)定義:

基于模板引擎的容器部署框架

參數(shù)標(biāo)識(shí)定義統(tǒng)一的格式。通過(guò)語(yǔ)義轉(zhuǎn)化,把繁雜的配置轉(zhuǎn)變?yōu)橛脩粢子诶斫獾姆绞?蛻舳俗x取到Parameters標(biāo)識(shí),通過(guò)模板解析器抽象可輸入?yún)?shù),展示需要的Form表單,提供用戶輸入的功能。

模板定義由對(duì)Kubernetes或者Docker熟悉的專(zhuān)業(yè)人員編寫(xiě)?梢愿鶕(jù)具體的業(yè)務(wù)場(chǎng)景,進(jìn)行實(shí)時(shí)和動(dòng)態(tài)調(diào)整,保證部署的靈活性和擴(kuò)展性。同時(shí),系統(tǒng)根據(jù)不同的對(duì)象,提供基礎(chǔ)模板。用戶在具備一定知識(shí)背景的基礎(chǔ)上同樣可以進(jìn)行模板制作和維護(hù)。

模板解析器

通過(guò)輸入輸出流獲取模板中參數(shù)標(biāo)識(shí),進(jìn)行語(yǔ)義轉(zhuǎn)化,得到易于理解的配置參數(shù)。模板解析器的工作原理如下圖2所示:

基于模板引擎的容器部署框架

圖2 模板解析器的工作原理

客戶端發(fā)起創(chuàng)建對(duì)象請(qǐng)求,服務(wù)端收到請(qǐng)求以后,會(huì)根據(jù)請(qǐng)求的對(duì)象類(lèi)型自關(guān)聯(lián)基礎(chǔ)模板。通過(guò)文件流的方式,讀取基礎(chǔ)模板,讀取過(guò)程中以Parameters標(biāo)志為起始點(diǎn),獲取參數(shù)描述信息。解析完成,參數(shù)以Json串的方式返回客戶端,客戶端根據(jù)Json串,動(dòng)態(tài)生成需要用戶填寫(xiě)的表單,用戶根據(jù)表單內(nèi)容完成參數(shù)輸入操作。

模板解析器重點(diǎn)解析模板定義中的參數(shù)標(biāo)識(shí)。通過(guò)語(yǔ)義轉(zhuǎn)化,信息提示,形成易辨識(shí)的輸入項(xiàng)。對(duì)用戶而言,解析完成以后能夠屏蔽繁雜的技術(shù)指標(biāo),用戶的關(guān)心點(diǎn)由技術(shù)轉(zhuǎn)變到業(yè)務(wù)配置。最大程度降低使用成本,增加易用性。

模板轉(zhuǎn)化器

模板轉(zhuǎn)化器是模板引擎的核心,重點(diǎn)解決三個(gè)問(wèn)題:獲取部署模板,參數(shù)與值轉(zhuǎn)換,構(gòu)建可執(zhí)行文件?蛻舳税涯0褰馕銎髦袇(shù)賦予真實(shí)值,傳遞到服務(wù)端,服務(wù)端讀取模版內(nèi)容,遇到參數(shù)的標(biāo)志位結(jié)束,把讀取的內(nèi)容通過(guò)文件流寫(xiě)到新文件,生成部署文件,接著用參數(shù)值對(duì)部署文件中的參數(shù)做關(guān)聯(lián)替換,生成最終的可執(zhí)行文件。模板轉(zhuǎn)化器的工作原理如圖3所示:

基于模板引擎的容器部署框架

圖3 模板轉(zhuǎn)化器的工作原理

獲取部署模板:由模板定義可知,模板中包含兩部分內(nèi)容:部署模板和參數(shù)標(biāo)識(shí)。模板轉(zhuǎn)化器首先需要部署模板,通過(guò)文件流的方式讀取模板定義中的部署模板,讀取過(guò)程中以parameters標(biāo)識(shí)符分割,獲取部署模板。

參數(shù)值轉(zhuǎn)化:核心是解決參數(shù)與占位符關(guān)聯(lián)和賦值問(wèn)題。模板轉(zhuǎn)換器通過(guò)模板參數(shù)定義的name屬性key關(guān)聯(lián),模板轉(zhuǎn)化器拿到參數(shù)值以后,獲取參數(shù)值對(duì)應(yīng)的key(key在部署模板唯一),并且根據(jù)key,替換部署模板中占位標(biāo)識(shí),完成參數(shù)替換。

構(gòu)建可執(zhí)行文件:通過(guò)文件流的方式,把前兩部轉(zhuǎn)化的字符流輸出到文件,構(gòu)建出可執(zhí)行文件。

模板轉(zhuǎn)換器執(zhí)行以后,生成的可執(zhí)行文件如下所示:

基于模板引擎的容器部署框架

模板執(zhí)行器

模板執(zhí)行器接收可執(zhí)行的部署文件,對(duì)于文件中定義的部署類(lèi)型進(jìn)行解析,拆分成若干個(gè)可執(zhí)行任務(wù)。容器引擎根據(jù)收到的任務(wù)執(zhí)行操作,最終協(xié)同完成部署工作。模板執(zhí)行器往往依賴(lài)于容器調(diào)度和執(zhí)行引擎。以Kubernetes容器編排框架為例,模板轉(zhuǎn)化器生成的可執(zhí)行文件,以字符流的方式傳輸?shù)終ubernetes的Server端,Kubernetes根據(jù)傳入文件,自動(dòng)解析文件內(nèi)容,并且做出相關(guān)操作。對(duì)于模板引擎而言,無(wú)論是Kubernetes還是Swarmkit都能夠得到友好的支持。模板執(zhí)行器的工作原理如圖4所示:

基于模板引擎的容器部署框架

圖4 模板執(zhí)行器的工作原理

模板執(zhí)行器執(zhí)行以后的結(jié)果如圖5所示:

基于模板引擎的容器部署框架

圖 5

通過(guò)模板引擎的方式,可以對(duì)容器的配置做靈活使用,無(wú)論是容器部署還是其他資源主題對(duì)象創(chuàng)建,都有對(duì)應(yīng)模板支持。模板處理引擎不需要根據(jù)模板的變動(dòng)而不斷的修改代碼。與此同時(shí),用戶可以從自己理解的語(yǔ)義關(guān)注配置信息,不需要關(guān)注具體技術(shù)細(xì)節(jié)和實(shí)現(xiàn)方式,簡(jiǎn)化操作行為,降低使用成本。

本文為《程序員》原創(chuàng)文章,本文作者:李寧,BoCloud博云高級(jí)架構(gòu)師。

標(biāo)簽: 業(yè)務(wù)場(chǎng)景 程序員 架構(gòu)師 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:探索Google XPN的虛擬專(zhuān)用云端網(wǎng)絡(luò)

下一篇:設(shè)計(jì)基礎(chǔ):云計(jì)算交互設(shè)計(jì)師的正確出裝姿勢(shì)