用 Pulp 托管你的容器注冊(cè)中心的 5 個(gè)理由
有很多令人信服的理由來(lái)用 Pulp 來(lái)托管你自己的容器注冊(cè)中心。下面是其中的一些。
Linux 容器極大地簡(jiǎn)化了軟件發(fā)布。將一個(gè)應(yīng)用程序與它運(yùn)行所需的一切打包的能力有助于提高環(huán)境的穩(wěn)定性和可重復(fù)性。
雖然有許多公共注冊(cè)中心可以上傳、管理和分發(fā)容器鏡像,但有許多令人信服的論據(jù)支持托管自己的容器注冊(cè)中心。讓我們來(lái)看看為什么自我托管是有意義的,以及 Pulp,一個(gè)自由開(kāi)源項(xiàng)目,如何幫助你在企業(yè)內(nèi)部環(huán)境中管理和分發(fā)容器。
為什么要托管你自己的容器注冊(cè)中心
你可以考慮托管自己的容器注冊(cè)中心,原因有很多:
- 體積:一些容器鏡像是相當(dāng)大的。如果你有多個(gè)團(tuán)隊(duì)下載同一個(gè)鏡像,這可能需要大量的時(shí)間,并給你的網(wǎng)絡(luò)和預(yù)算帶來(lái)壓力。
- 帶寬:如果你在一個(gè)帶寬有限的地區(qū)工作,或在一個(gè)出于安全原因限制訪問(wèn)互聯(lián)網(wǎng)的組織中工作,你需要一個(gè)可靠的方法來(lái)管理你工作的容器。
- 金錢(qián):服務(wù)條款可以改變。外部容器注冊(cè)中心能引入或增加速率限制閾值,這可能會(huì)對(duì)你的操作造成極大的限制。
- 穩(wěn)定性:托管在外部資源上的容器鏡像可能會(huì)因?yàn)橐恍┰蛳滋?。小到你所依賴的更新容器鏡像,可能會(huì)導(dǎo)致你想要避免的重大更改。
- 隱私:你可能也想開(kāi)發(fā)和分發(fā)容器,但你不想在公共的第三方注冊(cè)中心托管。
使用 Pulp 進(jìn)行自我托管
使用 Pulp,你可以避免這些問(wèn)題并完全控制你的容器。
1、避免速率限制
在 Pulp 中創(chuàng)建容器鏡像的本地緩存,可以讓你組織中的每個(gè)人都能拉取到 Pulp 上托管的容器鏡像,而不是從外部注冊(cè)中心拉取。這意味著你可以避免速率限制,只有當(dāng)你需要新的東西時(shí)才從外部注冊(cè)中心進(jìn)行同步。當(dāng)你確實(shí)需要從外部注冊(cè)中心同步容器時(shí),Pulp 首先檢查內(nèi)容是否已經(jīng)存在,然后再?gòu)倪h(yuǎn)程注冊(cè)中心啟動(dòng)同步。如果你受到注冊(cè)中心的速率限制,你就只鏡像你需要的內(nèi)容,然后用 Pulp 在整個(gè)組織中分發(fā)它。
2、整理你的容器
使用 Pulp,你可以創(chuàng)建一個(gè)倉(cāng)庫(kù),然后從任何與 Docker Registry HTTP API V2 兼容的注冊(cè)中心鏡像和同步容器。這包括 Docker、Google Container registry、Quay.io 等,也包括另一個(gè) Pulp 服務(wù)器。對(duì)于你結(jié)合來(lái)自不同注冊(cè)中心的鏡像容器的方式,沒(méi)有任何限制或約束。你可以自由地混合來(lái)自不同來(lái)源的容器。這允許你整理一套公共和私人容器,以滿足你的確切要求。
3、無(wú)風(fēng)險(xiǎn)的實(shí)驗(yàn)
在 Pulp 中,每當(dāng)你對(duì)倉(cāng)庫(kù)進(jìn)行修改時(shí),就會(huì)創(chuàng)建一個(gè)新的不可變的版本。你可以創(chuàng)建多個(gè)版本的倉(cāng)庫(kù),例如,development、test、stage 和 production,并在它們之間推送容器。你可以自由地將容器鏡像的最新更新從外部注冊(cè)中心同步到 Pulp,然后讓最新的變化在開(kāi)發(fā)或其他環(huán)境中可用。你可以對(duì)你認(rèn)為必要的倉(cāng)庫(kù)進(jìn)行任何修改,并促進(jìn)容器內(nèi)容被測(cè)試團(tuán)隊(duì)或其他環(huán)境使用。如果出了問(wèn)題,你可以回滾到早期版本。
4、只同步你需要的內(nèi)容
如果你想使用 Pulp 來(lái)創(chuàng)建一個(gè)容器子集的本地緩存,而不是一個(gè)完整的容器注冊(cè)中心,你可以從一個(gè)遠(yuǎn)程源過(guò)濾選擇容器。使用 Pulp,有多種內(nèi)容同步選項(xiàng),以便你只存儲(chǔ)你需要的內(nèi)容,或配置你的部署,按需緩存內(nèi)容。
5、在斷線和空氣隔離的環(huán)境中工作
如果你在一個(gè)斷線或受限制的環(huán)境中工作,你可以從一個(gè)連接的 Pulp 實(shí)例中同步更新到你斷連的 Pulp。目前,有計(jì)劃為 Pulp 實(shí)現(xiàn)一個(gè)原生的空氣隔離功能,以促進(jìn)完全斷線的工作流程。同時(shí),作為一種變通方法,你可以使用 Skopeo 等工具來(lái)下載你需要的容器鏡像,然后將它們推送到你斷線的 Pulp 容器注冊(cè)中心。
還有更多!
通過(guò) Pulp,你還可以從容器文件中構(gòu)建容器,將私有容器推送到倉(cāng)庫(kù),并在整個(gè)組織中分發(fā)這些容器。我們將在未來(lái)的文章中對(duì)這個(gè)工作流程進(jìn)行介紹。
如何開(kāi)始
如果你對(duì)自我托管你的容器注冊(cè)中心感興趣,你現(xiàn)在就可以 安裝 Pulp。隨著 Pulp Ansible 安裝程序的加入,安裝過(guò)程已經(jīng)被大量自動(dòng)化和簡(jiǎn)化了。
Pulp 有一個(gè)基于插件的架構(gòu)。當(dāng)你安裝 Pulp 時(shí),選擇容器插件和其他任何你想管理的內(nèi)容插件類型。如果你想測(cè)試一下 Pulp,你今天就可以評(píng)估 Pulp 的容器化版本。
如果你有任何問(wèn)題或意見(jiàn),請(qǐng)隨時(shí)在 Freenode IRC 的 #pulp 頻道與我們聯(lián)系,我們也很樂(lè)意在我們的郵件列表 pulp-list@redhat.com 中接受問(wèn)題。