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

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

2019-09-09    來源:多智時代

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

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

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

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

模板引擎

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

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

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

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

模板定義

模板定義包括兩類信息:部署模板;參數(shù)標識。

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

1.資源:表示kubernetes中定義的對象類型。

2.版本:表示對象的版本

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

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

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

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

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

3.displayname:具體語義信息

4.name:與引用參數(shù)名稱對應,表示描述信息為對應的引用參數(shù)

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

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

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

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

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

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

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

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

1.apiVersion:通用選項,定義版本信息

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

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

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

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

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

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

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

模板解析器

通過輸入輸出流獲取模板中參數(shù)標識,進行語義轉化,得到易于理解的配置參數(shù)。模板解析器的工作原理如下圖2所示:

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

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

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

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

模板轉化器

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

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

圖3 模板轉化器的工作原理

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

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

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

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

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

模板執(zhí)行器

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

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

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

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

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

圖 5

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

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

標簽: 業(yè)務場景 程序員 架構師 

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

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

下一篇:設計基礎:云計算交互設計師的正確出裝姿勢