溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限

發(fā)布時(shí)間:2021-11-18 14:51:33 來(lái)源:億速云 閱讀:157 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

先說(shuō)一個(gè)事故案例:

場(chǎng)景:某大型互聯(lián)網(wǎng)電商公司,使用一個(gè)鏡像倉(cāng)庫(kù)管理所有Docker鏡像。開(kāi)發(fā)者打出的鏡像上傳到唯一的鏡像庫(kù),測(cè)試通過(guò)后,運(yùn)維環(huán)境的 Kubernetes 直接從這個(gè)庫(kù)里拉取鏡像,所有人對(duì)鏡像庫(kù)都有 CRUD 的權(quán)限。
事故:由于鏡像存儲(chǔ)容量過(guò)大,開(kāi)發(fā)者打算清理下Snapshot 的鏡像,在鏡像清理的時(shí)候,誤將生產(chǎn)環(huán)境的鏡像進(jìn)行了刪除,導(dǎo)致上線出現(xiàn)問(wèn)題。本質(zhì)是鏡像缺乏成熟度的區(qū)分管理,
解決辦法:為通一個(gè)項(xiàng)目的鏡像通過(guò)升級(jí),放在3個(gè)鏡像倉(cāng)庫(kù)內(nèi),開(kāi)發(fā)庫(kù),測(cè)試庫(kù),生產(chǎn)庫(kù)。不同的鏡像庫(kù)對(duì)應(yīng)管理不同成熟度的鏡像。
Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限

從上圖可以看到,Michael Huttermann 在2012年展示的流水線質(zhì)量關(guān)卡的概念。上圖的意思,是每個(gè)流水線必須具備一定的質(zhì)量關(guān)卡,特別是在測(cè)試環(huán)境,也就是說(shuō),未經(jīng)自動(dòng)化測(cè)試的 Docker 鏡像,是不能被放到線上環(huán)境運(yùn)行的。為了區(qū)分不同成熟度的制品,需要為不同成熟度階段的制品建立不同的制品倉(cāng)庫(kù),也就是開(kāi)發(fā)庫(kù),測(cè)試庫(kù),生產(chǎn)庫(kù)。
Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限

根據(jù)鏡像成熟度區(qū)分的原則,我推薦上圖的鏡像存儲(chǔ)方式。我們?yōu)殚_(kāi)發(fā)者提供鏡像的開(kāi)發(fā)庫(kù),供他們將打好的鏡像 Push 到開(kāi)發(fā)庫(kù),推送到鏡像庫(kù)之后,即開(kāi)始開(kāi)發(fā)者自我驗(yàn)證功能。自我驗(yàn)證通過(guò)后,鏡像倉(cāng)庫(kù)會(huì)復(fù)制(也叫Promote升級(jí))到測(cè)試庫(kù),隨后調(diào)用測(cè)試環(huán)境的 Jenkins 流水線,執(zhí)行自動(dòng)化測(cè)試案例,當(dāng)測(cè)試完成后,記錄測(cè)試結(jié)果的關(guān)鍵信息到該鏡像的元數(shù)據(jù)上。同時(shí)通知測(cè)試人員進(jìn)行 UAT 測(cè)試,待所有的測(cè)試(人工+自動(dòng)化)完成之后,邊將該鏡像升級(jí)到發(fā)布庫(kù),也叫生產(chǎn)庫(kù)。
現(xiàn)在我們?yōu)槊總€(gè)項(xiàng)目建立了三個(gè)鏡像倉(cāng)庫(kù),那么你可能會(huì)問(wèn),難道我需要配置3個(gè)鏡像倉(cāng)庫(kù)地址嗎?這里我們推薦下面的鏡像倉(cāng)庫(kù)工作模型。
Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限

來(lái)看看上述模型的工作原理:
?   首先需要有一個(gè)虛擬倉(cāng)庫(kù)(Virtual Repository)來(lái)聚合三個(gè)本地倉(cāng)庫(kù)(Local)和遠(yuǎn)程倉(cāng)庫(kù)(Remote)。目前JFrog Artifactory支持了虛擬倉(cāng)庫(kù),為研發(fā)團(tuán)隊(duì)提供唯一的 Docker 鏡像中心訪問(wèn)地址,而不需要在多個(gè)鏡像中心之間切換。
?   開(kāi)發(fā)者通過(guò)遠(yuǎn)程倉(cāng)庫(kù)用于代理和緩存 DockerHub 的官方鏡像源。
?   鏡像通過(guò) Jenkins流水線,在三個(gè)本地倉(cāng)庫(kù)之間進(jìn)行升級(jí)。
?   終端用戶(hù),例如生產(chǎn)環(huán)境的 Docker 客戶(hù)端,訪問(wèn) Docker 生產(chǎn)環(huán)境的虛擬倉(cāng)庫(kù),該倉(cāng)庫(kù)提供對(duì)外的服務(wù)。
好的,了解了鏡像升級(jí),虛擬倉(cāng)庫(kù)的概念之后,你可能會(huì)問(wèn),如何做這些倉(cāng)庫(kù)的權(quán)限配置呢?
我畫(huà)了下面的表格,來(lái)幫助你理解不同團(tuán)隊(duì)對(duì)不同成熟度的鏡像倉(cāng)庫(kù)應(yīng)該基本什么樣的權(quán)限。
Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限

開(kāi)發(fā)只對(duì)開(kāi)發(fā)庫(kù)有CRUD權(quán)限,對(duì)生產(chǎn)庫(kù)無(wú)權(quán)限,這樣就能避免開(kāi)發(fā)對(duì)生產(chǎn)庫(kù)的誤操作。測(cè)試團(tuán)隊(duì)只接受通過(guò)開(kāi)發(fā)自測(cè),升級(jí)到測(cè)試庫(kù)的鏡像,這樣降低測(cè)試團(tuán)隊(duì)的無(wú)效測(cè)試率。運(yùn)維對(duì)生產(chǎn)庫(kù)有CRUD 的權(quán)限。那么這里你可能注意到了 CI 服務(wù)器對(duì)三個(gè)倉(cāng)庫(kù)都有權(quán)限,那是應(yīng)為鏡像的跨倉(cāng)庫(kù)復(fù)制,打標(biāo)簽,都是通過(guò)CI 服務(wù)器自動(dòng)化完成的。

通過(guò)開(kāi)發(fā),測(cè)試,生產(chǎn)的三庫(kù)分離設(shè)置,來(lái)存放不同成熟度的 Docker 鏡像,這樣方便做鏡像倉(cāng)庫(kù)的清理,只清理開(kāi)發(fā)庫(kù)的鏡像,同時(shí),生產(chǎn)庫(kù)只有CI 服務(wù)器能上傳,運(yùn)維只接受生產(chǎn)庫(kù)里的鏡像,進(jìn)行鏡像漏洞掃描,部署到生產(chǎn)環(huán)境。有

上述內(nèi)容就是Docker鏡像倉(cāng)庫(kù)為什么要分庫(kù)分權(quán)限,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI