-
互聯(lián)網(wǎng)安全法,互聯(lián)網(wǎng)凈網(wǎng)行動
-
”凈網(wǎng)2020”落實(shí)好維護(hù)網(wǎng)絡(luò)安全責(zé)任
-
關(guān)于端午節(jié)放假通知-宇眾網(wǎng)絡(luò)
-
宇眾網(wǎng)絡(luò)春節(jié)放假通知
-
關(guān)于公司收款銀行賬戶變更通知函-宇眾網(wǎng)絡(luò)
-
關(guān)于網(wǎng)上有人冒充我公司名義進(jìn)行詐騙的公告。
-
關(guān)于端午節(jié)放假通知,節(jié)日放假,但是我們業(yè)務(wù)不“放假”-宇眾網(wǎng)絡(luò)
-
工信部進(jìn)一步加強(qiáng)未備案網(wǎng)站管理工作的通知-宇眾網(wǎng)絡(luò)
-
關(guān)于東莞市宇眾網(wǎng)絡(luò)科技有限公司香港數(shù)據(jù)中心(香港機(jī)房)路由優(yōu)化通知
-
宇眾網(wǎng)絡(luò)慶祝五·一勞動節(jié)快樂
-
東莞東城機(jī)房網(wǎng)絡(luò)升級通知
-
臨近過年,互聯(lián)網(wǎng)IDC貴圈也有被騙的,請認(rèn)準(zhǔn)宇眾網(wǎng)絡(luò)公司官方聯(lián)系方式
-
我司已獲得ISP/ICP/IDC三證資格,更好的為客戶服務(wù)
-
關(guān)于浙江金華高防機(jī)房網(wǎng)絡(luò)線路切割通知
-
工信部近日下發(fā)關(guān)于進(jìn)一步規(guī)范域名備案工作的通知
行業(yè)資訊
- 首頁
- 新聞中心
- 行業(yè)資訊
持續(xù)集成服務(wù)器部署策略-宇眾網(wǎng)絡(luò)科技服務(wù)器租用-高防服務(wù)器租用
在軟件交付領(lǐng)域上有一個非常有用的啟發(fā)式原則:提前并頻繁地做讓你感到痛苦的事。集成通常是一個非常痛苦的過程,所以每次有人提交代碼后應(yīng)立刻進(jìn)行集成。
馬丁福勒說:持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗(yàn)證,從而盡早地發(fā)現(xiàn)集成錯誤。
而持續(xù)集成服務(wù)器(也稱為構(gòu)建服務(wù)器,又稱CI服務(wù)器)是一種軟件工具,它包含所有持續(xù)集成操作,并為我們構(gòu)建項(xiàng)目提供可靠和穩(wěn)定的環(huán)境。
工欲善其事,必先利其器。持續(xù)集成的重要性毋庸置疑,但是理解如何創(chuàng)建安全、高效、可伸縮的持續(xù)集成服務(wù)器將使得持續(xù)集成更加順暢。
CI服務(wù)器 - 安裝方式
CI服務(wù)器的安裝方式有四種:
-
單機(jī)
單機(jī)的CI服務(wù)器即安裝在一臺單個主機(jī)上,通常用于小型項(xiàng)目。 -
托管
托管的CI服務(wù)器由托管平臺提供,一般是根據(jù)訂閱計(jì)價。這一般被那些不想維護(hù)CI服務(wù)器的企業(yè)所采納。 -
私有云
一些大型企業(yè)或者想要完全掌控及安全使用他們自己的基礎(chǔ)設(shè)施的組織,通常會選擇私有云的部署方式。 -
半托管半私有云
這種方式是對托管部署和私有云部署的折中方案。這種部署方式通常將流水線管理,日志管理,用戶管理部分進(jìn)行托管,而將流水線運(yùn)行時環(huán)境放在私有云中。這種方式即保證了基礎(chǔ)設(shè)施安全,同時也降低了維護(hù)CI服務(wù)器的成本。
我所在的團(tuán)隊(duì)最初使用私有云的方式搭建CI服務(wù)器,但出于可維護(hù)性、成本和安全性等方面的折中考慮轉(zhuǎn)向了半托管半私有云的安裝方式。本文將主要討論在私有云和半托管半私有云安裝方式下CI服務(wù)器的部署策略。
CI服務(wù)器 - 主從架構(gòu)
主從架構(gòu)也叫主仆架構(gòu)或者M(jìn)aster-Slave架構(gòu),主從式架構(gòu)意圖提供一個可伸縮的架構(gòu),其核心是基于分而治之的思想,將一個原始任務(wù)分解為若干個子任務(wù),并由專門的工作者來執(zhí)行這些任務(wù),原始任務(wù)的結(jié)通過整合各個子任務(wù)的處理結(jié)果形成。
主從架構(gòu)看似與CI服務(wù)器毫無關(guān)系,實(shí)則聯(lián)系緊密。因?yàn)楹芏郈I服務(wù)器使用了主從架構(gòu)或者服務(wù)器/代理架構(gòu)。通過主從架構(gòu)的Master可以進(jìn)行用戶管理、流水線管理、日志管理。Master作為任務(wù)調(diào)度者,給多個主從架構(gòu)的Slave分配任務(wù),Slave會將流水線任務(wù)運(yùn)行的信息和結(jié)果發(fā)給Master。主從架構(gòu)提供了一個可伸縮的架構(gòu),所以可以動態(tài)的添加或者刪除Slave以支持團(tuán)隊(duì)動態(tài)變化的持續(xù)集成任務(wù)。
CI服務(wù)器 - 部署策略
通常,一個開發(fā)團(tuán)隊(duì)會有三個應(yīng)用部署環(huán)境:開發(fā)環(huán)境(Dev),類生產(chǎn)環(huán)境(Staging)和生產(chǎn)環(huán)境(Production)。當(dāng)一次修改通過持續(xù)集成后,就會被部署到開發(fā)環(huán)境,然后部署到類生產(chǎn)環(huán)境,然后部署到生產(chǎn)環(huán)境。
為此,需要CI服務(wù)器具有操作相應(yīng)部署環(huán)境的權(quán)限。如圖2,開發(fā)環(huán)境中部署了CI服務(wù)器,其中每個CI服務(wù)器都具有開發(fā)、類生產(chǎn)和生產(chǎn)環(huán)境的權(quán)限。
圖2
這種方式粗暴簡單,看似藥到病除實(shí)質(zhì)上卻會引發(fā)很嚴(yán)重的安全問題。通常項(xiàng)目中對開發(fā)、類生產(chǎn)和生產(chǎn)環(huán)境權(quán)限的管控類似于金字塔,越往上權(quán)限管控越嚴(yán)格。但如果開發(fā)環(huán)境的CI服務(wù)器也具有類生產(chǎn)和生產(chǎn)環(huán)境的權(quán)限,那么這座本來堅(jiān)固的金字塔將有可能瞬間崩塌。
為了解決開發(fā)環(huán)境CI服務(wù)器具有多環(huán)境操作權(quán)限的問題,如圖3所示,可以在不同的環(huán)境獨(dú)立部署一套CI服務(wù)器,這樣部署某個環(huán)境時,就可以使用相應(yīng)環(huán)境的CI服務(wù)器即可。
但隨之而來的問題是,不同的環(huán)境獨(dú)立部署一套CI服務(wù)器,會使得每個環(huán)境的CI服務(wù)器之間沒有任何關(guān)系。它們的流水線管理,日志管理,用戶管理都是獨(dú)立的。這意味著原本一個流水線完成的事情會分散的對個多個持續(xù)集成系統(tǒng)中,用戶需要在多個系統(tǒng)中來回切換。這不僅降低了使用體驗(yàn),并且增加了復(fù)雜性和維護(hù)成本。
那么有沒有什么辦法,既保證只部署一套CI服務(wù)器,同時又能保證CI服務(wù)器不能跨環(huán)境操作?如圖4所示,雖然所有的CI服務(wù)器依然部署在開發(fā)環(huán)境中,但每個CI服務(wù)器代理已經(jīng)被打上了開發(fā)環(huán)境、類生產(chǎn)和生產(chǎn)環(huán)境的標(biāo)簽,并且只具有操作相應(yīng)環(huán)境的權(quán)限。
這種部署策略看似解決了安全問題,但實(shí)際上有點(diǎn)掩耳盜鈴,因?yàn)橹灰_發(fā)環(huán)境上的用戶具有足夠的權(quán)限,他就有可能可以修改CI服務(wù)器代理的權(quán)限,從而達(dá)到操縱其他環(huán)境的目的。
既然如此,那么可不可以將CI服務(wù)器代理部署到相應(yīng)的環(huán)境中?如圖5所示,不同環(huán)境將維護(hù)相應(yīng)的CI服務(wù)器代理,通過這種部署方式,既保證只部署一套CI服務(wù)器,同時又能保證CI服務(wù)器代理不能跨環(huán)境操作。