劉安
摘要:隨著IT行業(yè)的迅猛發(fā)展,相關(guān)軟件企業(yè)對于DevOps系統(tǒng)應(yīng)用也在不斷加深,但是傳統(tǒng)的DevOps系統(tǒng)仍然存在一定的缺陷和不足?;诖?,該文通過Docker的應(yīng)用對DevOps系統(tǒng)構(gòu)建的影響的分析,針對基于Docker下DevOps系統(tǒng)的設(shè)計與應(yīng)用的設(shè)計、運作、應(yīng)用三個方面進行深入的研究。
關(guān)鍵詞:Docker;DevOps系統(tǒng);etcd數(shù)據(jù)庫集群
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)07-0069-01
研發(fā)團隊和運維團隊是IT部門的兩大核心團隊,兩個團隊的目標卻存在一定的沖突:研發(fā)人員希望對常規(guī)軟件迅速進行大面積推廣,運維人員則更多的考慮產(chǎn)品的穩(wěn)定性。為了維持兩個團隊的平衡,就需要采用現(xiàn)代化的手段來維持團隊在目標確定中存在的分歧,因此需要通過DevOps系統(tǒng)進行干預(yù)。
1 Docker的應(yīng)用對DevOps系統(tǒng)構(gòu)建的影響
Docker是個開源平臺,主要由Docker Hub注冊服務(wù)器、容器引擎等幾方面構(gòu)成。從功能上來看,Docker Hub注冊服務(wù)器能完成用戶的相關(guān)數(shù)據(jù)操作,例如構(gòu)鏡像庫數(shù)據(jù)庫、數(shù)據(jù)的分享等;Docker的容器引擎能滿足深層次的數(shù)據(jù)管理要求,例如可以讓技術(shù)人員將應(yīng)用打包到一個移植的容器內(nèi)部,并通過Linux設(shè)備完成發(fā)布。利用Docker,能夠?qū)崿F(xiàn)各種軟件的隨處運行以及一次配置。
DevOps系統(tǒng)是一系列過程、系統(tǒng)和方法的統(tǒng)稱,該系統(tǒng)的應(yīng)用有利于促進軟件工程的開發(fā)、加強質(zhì)量保證部門和技術(shù)運營之間的溝通和整合。DevOps系統(tǒng)的核心理念是研發(fā)、運行、維護、質(zhì)保各個團隊之間的高效協(xié)作。
與傳統(tǒng)的DevOps系統(tǒng)相比,應(yīng)用Docker構(gòu)建DevOps系統(tǒng)的優(yōu)勢主要有以下幾點:
1)對研發(fā)、生產(chǎn)等環(huán)節(jié)完成標準化管理。在數(shù)據(jù)處理中,景象經(jīng)常被看做是標準交付件,所以其各個編輯過程都能在容器內(nèi)實現(xiàn)運行。
2)有效解決基礎(chǔ)環(huán)境的架構(gòu)異常問題。從Dev到Ops的過程中,產(chǎn)生阻力的主要原因是基礎(chǔ)環(huán)境的多元化,Docker Engine的使用可以忽略基礎(chǔ)環(huán)境的類型條件。不同的虛擬化類型、物理設(shè)備或者云計算平臺,在Docker Engine的運行環(huán)境下最終都會提供以容器作為基礎(chǔ)的服務(wù)。
3)方便構(gòu)建、轉(zhuǎn)移以及部署。能夠完成標準化的鏡像構(gòu)建,在這個過程中,依靠分層機制來保證鏡像構(gòu)建效率。在操作中,應(yīng)用容器倉庫能夠把成型的鏡像轉(zhuǎn)移到任何環(huán)境中,同時只需要把靜態(tài)只讀轉(zhuǎn)變成動態(tài)可運行容器即可[1]。
2 基于Docker下DevOps系統(tǒng)的設(shè)計與應(yīng)用
2.1設(shè)計
DevOps系統(tǒng)主要由etcd數(shù)據(jù)庫集群、Kubernetes集群、GitLab、Web管理頁面、統(tǒng)一集成編譯、網(wǎng)絡(luò)與域名系統(tǒng)(DNS)等九大模塊組成。其中etcd數(shù)據(jù)庫集群可以提供高可用配置的中心能力;Kubernetes集群負責Docker的集群管理和調(diào)度;GitLab可以對源碼進行配置與管理;統(tǒng)一集成編譯鏡像可以對集成的環(huán)境進行統(tǒng)一配置,完成統(tǒng)一編譯。
Docker下DevOps系統(tǒng)具體的設(shè)計思路為:
1)數(shù)據(jù)庫集群。數(shù)據(jù)庫集群設(shè)計必須要保證etcd數(shù)據(jù)庫應(yīng)用分布方式的完整性,一般采用分布式key-value存儲的方法,這是因為這個方法能夠為整個系統(tǒng)提供一個安全的儲存服務(wù),包括各種形式的插件配置儲存等。
2)網(wǎng)絡(luò)管理。網(wǎng)絡(luò)部分的管理主要集中在服務(wù)容器、容器網(wǎng)路等多個方面,在網(wǎng)絡(luò)管理實現(xiàn)過程中,主要利用Flannel插件在運行的每臺主機上建立一個虛擬網(wǎng)卡,并運行Flannel插件服務(wù),用以傳輸控制協(xié)議數(shù)據(jù)包,可以有效解決一些跨主機容器的網(wǎng)絡(luò)通信問題,精簡網(wǎng)絡(luò)管理配置,實現(xiàn)容器間的連接;在DNS解析部分,應(yīng)用Kube2sky插件對Kubernetes中的服務(wù)、端點及其相應(yīng)的子節(jié)點變化進行控制,在必要情況下,將IP地址及其相應(yīng)的DNS關(guān)系錄入到數(shù)據(jù)庫中,這樣相關(guān)統(tǒng)模塊就能對數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)做進一步的編輯處理。
3)鏡像。Jenkins鏡像應(yīng)用于Jenkins服務(wù)的構(gòu)建,對源代碼進行構(gòu)建編譯;GitLab鏡像應(yīng)用于GitLab服務(wù),對源代碼進行管理;統(tǒng)一集成編譯鏡像是項目鏡像的容器,其中具有鏡像構(gòu)建所需要的各種依賴,保證鏡像構(gòu)建過程中環(huán)境的同意,提升構(gòu)建速度,擺脫額外依賴[2]。
2.2運作
編程思想在DevOps系統(tǒng)中的應(yīng)用較為常見,該系統(tǒng)以Docker等技術(shù)為媒介,并依靠相應(yīng)的技術(shù)流程得以實現(xiàn),其具體的實現(xiàn)步驟為:
1)開發(fā)者把代碼提交給源代碼管理GitLab;2)GitLab借助Webhook通知Jenkins進行更新;3)Jenkins在GitLab下載最新的代碼以及其他文件;4)Jenkins在云鏡像服務(wù)的節(jié)點構(gòu)建Docker鏡像;5)Jenkins在云鏡像服務(wù)的節(jié)點實例化Docker鏡像,執(zhí)行測試代碼;6)一旦通過測試,Jenkins把Docker鏡像推送到倉庫;7)保證CDserver的持續(xù)發(fā)布,利用配置管理向測試、生產(chǎn)等環(huán)境推送相應(yīng)的產(chǎn)品。
調(diào)查顯示,2016年,38%的企業(yè)已經(jīng)在使用DevOps,2017年超過70%的IT市場會將目光聚焦在DevOps技術(shù)及功能上。美團云從2015年開始構(gòu)建Docker容器集群管理系統(tǒng),提供對Docker容器的實例化、調(diào)度、運行、監(jiān)控以及鏡像托管等功能。兩年的實戰(zhàn)驗證了Docker容器虛擬化技術(shù)在提高運維效率,降低IT成本等方面的價值。近日,美團云技術(shù)團隊與金融科技企業(yè)買單俠的技術(shù)專家就Docker的應(yīng)用進行了分享交流?;诿缊F云計算平臺構(gòu)建的Docker容器管理平臺讓美團點評的研發(fā)和運維人員通過自動化流程加強協(xié)作,加速落地了美團點評DevOps的實施,在面對日訂單超1800萬的業(yè)務(wù)壓力時,為公司提升了IT運營效率并節(jié)省大量資源,真正實現(xiàn)了精細化運營。
2.3應(yīng)用
假設(shè)一個軟件企業(yè)越有100人,采用Java開發(fā)語言,以Tomcat為中間服務(wù)器,并采用相應(yīng)的功能模塊開展數(shù)據(jù)處理。
傳統(tǒng)的DevOps系統(tǒng)持續(xù)集成流程如下:本地環(huán)境利用新的Java完成一個新的功能開發(fā),在本地測試結(jié)束后電腦下線,另一個環(huán)節(jié)的測試部署服務(wù)器的研發(fā)人員提交的代碼無法執(zhí)行,功能一點就錯,第三個環(huán)節(jié)的生產(chǎn)服務(wù)器與測試服務(wù)器不一致,導(dǎo)致運維部門需要重做測試部門的工作。受工作環(huán)境、運維環(huán)境等做種因素影響,整個處理過程的工作效率低。
相比之下,采用Docker下DevOps系統(tǒng)可以很好地解決上述問題。整個項目運行過程中設(shè)立一個項目構(gòu)架師,研發(fā)人員、測試人員、運維人員的進度都直接反饋給項目構(gòu)架師,一旦出現(xiàn)問題,可以及時調(diào)整,在提高工作效率的同時簡化了工作流程。
4 結(jié)束語
綜上所述,Docker的應(yīng)用對DevOps系統(tǒng)構(gòu)建具有積極的影響。Docker在DevOps系統(tǒng)的設(shè)計與應(yīng)用中設(shè)計、運作、應(yīng)用三個方面的融入,可以使得DevOps系統(tǒng)更加簡潔、方便、快速。隨著Docker等開源技術(shù)的逐漸成熟和廣泛應(yīng)用,DevOps系統(tǒng)構(gòu)建已經(jīng)不再是科研難題,未來DevOps系統(tǒng)必將越來越完善。
參考文獻:
[1] 周振興. 基于Docker和持續(xù)交付的項目管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 大連:大連理工大學,2016.
[2] 孫庚澤. 基于Docker的混合云應(yīng)用編排方案研究[D]. 西安:西安電子科技大學,2015.