雲原生製品那些事(4):Registry作用原理

題圖攝於德州聖安東尼奧

注:微信公衆號不按照時間排序,請關注“亨利筆記”,並加星標以置頂,以免錯過更新。

VMware招聘機器學習和雲原生開發工程師

本篇繼續和大家說說鏡像那些事,是連載之四,從《Harbor權威指南》一書節選的純技術乾貨,敬請關注、轉發和收藏。

第一篇:容器鏡像的結構

第二篇:OCI 鏡像規範

第三篇:OCI 製品

第四篇:Registry 的作用原理

《Harbor權威指南》目前噹噹網優惠中,點擊下圖直接購買。

容器鏡像一般由開發人員通過 “docker build” 之類的命令構建,鏡像在生成後都會被保存在開發機器的本地鏡像緩存中,供本地開發和測試使用。

從另一方面來看,容器鏡像很重要的一個作用是作爲可移植的應用打包形式,在其他環境下無差別地運行所封裝的應用,所以本地生成的鏡像有時需要發送到其他環境下,如其他開發人員的機器、數據中心的機器或者雲端計算節點。這時需要一種能在不同環境中傳輸鏡像的有效方法,而鏡像傳輸和分發中關鍵的一環就是鏡像的 Registry(註冊表)。Registry 有服務發現模式下服務註冊的含義,實際應用中,用戶往往稱鏡像 Registry 爲鏡像倉庫,說明 Registry 不僅能註冊鏡像,還有存儲鏡像和管理鏡像的功能。(本文爲公衆號:亨利筆記 原創文章)

下圖描繪了鏡像在單臺(本地)計算機上容器生命週期中的狀態變化,對開發者而言,鏡像還可被推送到Registry上,也可以從 Registry 下載鏡像。

如果上圖所示的推送和拉取發生在不同的計算環境之間,則可以實現跨環境的鏡像傳送,而且在不同的環境下得到的鏡像是一樣的,可以無差別地運行,如下圖所示。

在實際環境下,鏡像的構建者往往是少數(如開發人員),絕大多數用戶或機器集羣都是鏡像的消費者,這樣的模式通常被稱爲鏡像的分發,既可以是開發團隊成員之間共享應用鏡像,也可以是運維人員通過鏡像發佈應用到生產機器集羣的各個節點,如下圖所示。

從上述分發模式可以看到,Registry 是維繫容器鏡像生產者和消費者的關鍵環節,也是所有基於容器的雲原生平臺幾乎都離不開 Registry 的根本原因。正是因爲 Registry 的重要性及其在應用分發上的關鍵性,使 Registry 非常適合進行鏡像管理,比如權限控制、遠程複製、漏洞掃描等。Harbor 等鏡像倉庫軟件就是在 Registry 鏡像分發的基礎功能上增加了豐富的管理能力,從而得到用戶的青睞。 

 

公有Registry服務

 

從用戶的訪問方式來看,Registry主要分爲公有 Registry 服務和私有 Registry 服務兩種。公有 Registry 服務一般被部署在公有云中,用戶可以通過互聯網訪問公有Registry 服務。私有 Registry 服務通常被部署在一個組織內部的網絡中,只服務於該組織內的用戶。(本文爲公衆號:亨利筆記 原創文章)

 

公有 Registry 服務的最大優點是使用便利,無須安裝和部署就可以使用,不同組織之間的用戶可以通過公有 Registry 服務共享或者分發鏡像。公有 Registry 服務也有不足:因爲鏡像被存放在雲端存儲之中,鏡像之中的私密數據可能會因此泄露,因而對安全有要求的許多企業和政府等機構往往不允許存放鏡像到公有 Registry 中;另外,使用公有 Registry 服務需要從公網下載鏡像,在傳輸上需要較長時間,在頻繁使用鏡像的場景中,如應用開發測試的鏡像構建和拉取等,效率較低。因此,公有 Registry 不太適用於本地鏡像高頻使用的場景。

 

 目前,公有 Registry 服務最著名的就是 Docker Hub,這個服務是隨着 Docker 開源項目的發佈而設立的,由 Docker 公司維護,是最常用的公有 Registry 服務。根據官方數據,Docker Hub 在 2020 年年初,每月的下載量達到80億次之多。開發者可以在 Docker 容器管理工具中直接、免費使用Docker Hub,推送和拉取鏡像都很方便,這也是 Docker 工具能夠極快地被廣大開發者接受和使用的原因之一。

需要指出的是,Docker Hub 的私有鏡像服務雖然提供了保護用戶私有數據的能力,但其在本質上還是公有鏡像服務,因爲鏡像是被存放在公有云中的,公有 Registry 服務在安全和性能等方面的不足依然存在。(在搜狐、CSDN等網站轉載亨利筆記的文章均爲未經授權的剽竊)

除了Docker Hub,各大公有云服務商如亞馬遜 AWS、微軟 Azure、阿里雲和騰訊雲等,都有自己的 Registry 服務。這些雲服務商提供的 Registry 服務既可滿足自身雲原生用戶的鏡像使用需求,加速雲原生應用的訪問效率;也可提供公網用戶的鏡像訪問能力,便於鏡像的分發和傳送,如用戶可從內網環境向雲端 Registry 推送鏡像等。

私有Registry服務

私有 Registry 服務可以克服公有 Registry 服務的不足:鏡像被存放在組織內部的存儲中,不僅可以保證鏡像的安全性,又可以提高鏡像訪問效率。同時,在私有 Registry 服務中還能夠進行鏡像的訪問控制和漏洞掃描等管理操作,因此私有 Registry 在大中型組織中通常都是首選方案。私有 Registry 服務的缺點主要是組織需要承擔採購軟硬件的成本,並且需要團隊負責維護服務。

在私有環境下部署 Registry 服務的最簡易方法就是從 Docker Hub 中拉取鏡像部署Docker Registry 。Docker Registry 屬於 Docker 容器管理工具的一部分,可存儲和分發 Docker 及 OCI 鏡像,主要面向開發者和小型應用環境,開源代碼位於 GitHub的“docker/distribution”項目中。Docker Registry 結構簡單、部署快速,適合小型開發團隊共享鏡像或者在小規模的生產環境下分發應用鏡像。

在較大型的組織內部,由於用戶、應用和鏡像的數量較多、管理需求複雜,功能較單一的 Docker Registry 難以勝任,因此需要更全面的鏡像管理方案。在開源軟件中有 Harbor 和 Portus 等項目;在商用軟件中有 Docker Trust Registry(DTR)和 Artifactory等產品,用戶可根據需要選擇合適的方案。

隨着混合雲在企業中使用越來越普遍,用戶在私有云和公有云中都有應用運行,這就涉及兩個 Registry 鏡像同步和發佈的問題。從效率和管理上看,在私有云和公有云中各部署一個 Registry 服務,可以使鏡像就近下載。然後在兩個 Registry 之間通過鏡像同步的方式,將在私有環境下開發的應用鏡像複製到公有云的生產環境下,可達到鏡像的一致性,從而實現應用發佈的目的。(本文爲公衆號:亨利筆記 原創文章)

Harbor Registry

Harbor Registry(又稱 Harbor 雲原生製品倉庫或 Harbor 鏡像倉庫)由 VMware 公司中國研發中心雲原生實驗室原創,並於 2016 年 3 月開源。Harbor 在 Docker Registry 的基礎上增加了企業用戶必需的權限控制、鏡像簽名、安全漏洞掃描和遠程複製等重要功能,還提供了圖形管理界面及面向國內用戶的中文支持,開源後迅速在中國開發者和用戶社區流行,成爲中國雲原生用戶的主流容器鏡像倉庫。

2018年7月,VMware 捐贈 Harbor 給 CNCF,使 Harbor 成爲社區共同維護的開源項目,也是首個源自中國的 CNCF 項目。在加入 CNCF 之後,Harbor 融合到全球的雲原生社區中,衆多的合作伙伴、用戶和開發者都參與了 Harbor 項目的貢獻,數以千計的用戶在生產系統中部署和使用 Harbor ,Harbor 每個月的下載量超過3萬次。2020年6月,Harbor 成爲首箇中國原創的 CNCF 畢業項目。

Harbor 是爲滿足企業安全合規的需求而設計的,旨在提供安全和可信的雲原生製品管理,支持鏡像簽名和內容掃描,確保製品管理的合規性、高效性和互操作性。Harbor 的功能主要包括四大類:多用戶的管控(基於角色訪問控制和項目隔離)、鏡像管理策略(存儲配額、製品保留、漏洞掃描、來源簽名、不可變製品、垃圾回收等)、安全與合規(身份認證、掃描和 CVE 例外規則等)和互操作性( Webhook、內容遠程複製、可插拔掃描器、REST API、機器人賬號等)。(在搜狐、CSDN等網站轉載亨利筆記的文章均爲未經授權的剽竊)

Harbor 2.0 是一個包含了較多改進功能的大版本,其中最重要的功能是支持遵循 OCI 鏡像規範和分發規範的製品,使 Harbor 不僅可以存儲容器鏡像,還可以存儲 Helm Chart、CNAB 等雲原生製品。這些製品和鏡像一樣,都能夠設置訪問權限和遠程複製策略,並在界面上統一展示,大大方便了用戶,也拓寬了 Harbor 的使用範圍。因此,Harbor  已經從鏡像倉庫發展成爲通用的雲原生製品倉庫。

隨着功能日益完整,Harbor 的應用場景也越來越靈活,歸納起來有以下幾種。

(1)持續集成和持續發佈。持續集成和持續發佈是容器最早的使用場景之一,應用的源代碼經過自動化流水線編譯和測試後,構建成容器鏡像存入 Harbor,鏡像再被髮布到生產環境或者其他環境下,Harbor起到了連接開發與生產環節的作用。(本文爲公衆號:亨利筆記 原創文章)

(2)在組織內部統一鏡像源。在企業等組織內部對鏡像的來源和安全性有一定要求和規則,如果內部用戶從公網下載任意鏡像並在企業內部運行,則將引入各種安全隱患,如病毒、系統漏洞等。爲此,企業會在內部統一設立標準鏡像源,存放經過驗證或者測試過的鏡像讓用戶使用。採用 Harbor 是較好的選擇,可對鏡像設立訪問權限,並按照項目組加以隔離。同時,可以對鏡像定期掃描,在發現安全漏洞時拒絕用戶下載並及時打補丁。管理員還可以對鏡像進行數字簽名,實現來源校驗。(在搜狐、CSDN等網站轉載亨利筆記的文章均爲未經授權的剽竊)

(3)鏡像跨系統傳輸。容器鏡像的一個重要特性是不可更改(immutability),即鏡像封裝了應用的運行環境,可以在其他系統中無差別地重現該環境。這個特性決定了容器鏡像必須具有可移動性,能在不同的環境下轉移。Harbor 的遠程內容複製恰到好處地提供了容器遷移的能力,無論是在用戶不同的數據中心之間,還是在公有云和私有云之間,無論是局域網還是廣域網,Harbor都能夠實現不同系統的鏡像同步,並且具備出錯重試的功能,大大提高了運維效率。

(4)製品備份。容器鏡像等製品的備份是從跨系統鏡像傳輸衍生而來的用例,主要是把 Harbor 的鏡像等製品複製到其他系統中,保留一個或多個副本。在需要時,可把副本數據遷回原 Harbor 實例,達到恢復的目的。

(5)製品本地訪問。鏡像等製品的本地訪問也是從跨系統鏡像傳輸衍生而來的用例,Harbor 可以把鏡像等製品同時遠程複製到若干個地點,如從北京的數據中心分別複製到上海、廣州和深圳的數據中心,這樣不同地理位置的用戶可以就近獲取製品數據,縮短了下載時間。

(6)數據存儲。在 Harbor 2.0 支持 OCI 規範之後,更多的應用都可存放非鏡像數據到 Harbor 中。比如,人工智能的模型數據和訓練數據、邊緣計算的設備介質等。這些數據被存放到 Harbor 後,最大的好處就是能夠自動獲得內容複製、權限控制等功能,無須另行開發類似的功能。

(未經授權,請勿轉載本公衆號文章)

《Harbor權威指南》目前噹噹網優惠中,點擊上圖直接購買。

《Harbor權威指南》招募英文版翻譯人員

要想了解雲原生、區塊鏈和人工智能等技術原理,請立即長按以下二維碼,關注本公衆號亨利筆記 ( henglibiji ),以免錯過更新。

歡迎轉發、收藏以及點 “在看”和贊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章