【乾貨】英雄聯盟選擇JFrog Artifactory 作爲Docker註冊中心的八大理由

在企業內部的Docker部署正在經歷一個從測試到生產環境轉變的過程,同時,組織內部不斷增長的Docker鏡像也面臨着一些相同的挑戰。英雄聯盟在選擇 Docker 容器鏡像管理解決方案時,就面臨着以下問題。

(1) Docker pull 速度慢,怎麼辦?
(2) 如何確保鏡像一直可用?
(3) 如何在組織內傳播和分享鏡像?
(4) 如何管理誰可以訪問鏡像?
(5) 如何快速找到鏡像?
(6) 如何與部署工具 (Ansible/Puppet/Chef) 集成,部署和分發鏡像?
(7) 如何獲取多種語言開發的包?
(8) 如何支持Docker 鏡像流水線升級?

市面上有多種 Docker 註冊中心的解決方案,包含免費版本的Docker OSS,付費的Docker Trusted Registery,以及JFrog(傑蛙)的 Artifactory。英雄聯盟的架構師 Carl Quinn 選擇了 JFrog Artifactory,目前英雄聯盟部署在全球的 Artifactory 服務器已經達到上百臺,來聽聽他選擇的理由:

1
可靠的Docker 鏡像私服,下載速度更快

英雄聯盟經是Docker Hub 的重度使用者,但是,由於Docker Hub是一個遠程資源,如果它突然停止運行,或者網絡出了問題,該怎麼辦?

那麼 Carl 看到Artifactory 可以遠程代理Docker Hub或私有的Docker註冊中心,提供可靠且一致的鏡像獲取途徑。

鏡像一經下載,便被Artifactory存儲在本地緩存中。 在接收到後續請求時,Artifactory對所請求的鏡像執行智能校驗和搜索,如果檢測到它已經被下載過,則提供本地高速緩存的副本。 因此,鏡像只需下載一次,便可供本地組織中的所有其他開發者使用(從而減少網絡流量)。

在Artifactory中使用本地存儲庫而不是在Docker Hub上使用私有存儲庫,可以消除任何與網絡連接相關的問題。當所有的Docker鏡像通過Artifactory中的本地存儲庫訪問時,連接就不成問題了。

2
Docker高可用性

英雄聯盟的併發訪問量非常大,資源包的下載量也很大,這就需要後端服務器具備高可用的能力。

Artifactory支持在同一局域網上具有2個及以上的Artifactory服務器集羣的高可用性網絡配置。 沒有單點故障意味着只要至少有一個Artifactory節點可運行,那麼整個系統就可以繼續運行。這最大限度地延長了正常運行時間,甚至可以達到“五個九”的可用性水平。 此外,系統可以在不影響性能的條件下適應更大的負載突發。 最後,通過使用具有多個服務器的體系結構,Artifactory HA支持無需系統停機的狀況下執行大多數維護任務和系統升級。

3
公司內部分發以及共享Docker鏡像

英雄聯盟經常會遇到多開發團隊中環境的不一致以及無法重用代碼庫的問題。

使用本地存儲庫,Artifactory提供了一箇中心位置去部署和存儲鏡像:一個有效地、可以替換Docker Hub的私有Docker註冊中心。 當所有團隊都知道可以從一個URL訪問所有鏡像時,管理不同團隊之間的鏡像訪問就會變得非常容易。 但是如果想與距離組織較遠站點的同事分享鏡像該怎麼辦?

要允許在不同站點之間共享,可以複製存儲庫到本地網絡之外的那個Artifactory節點。 複製後的存儲庫會定期與其源自動同步,以便鏡像可供不同的團隊使用,無論他們身處何方。

Artifactory還能提供在組織中分佈多個Docker註冊中心的功能。開發,測試和部署團隊都有各自的註冊中心,可以自定義設置用戶權限,在不同階段通過組織部署管道傳遞Docker鏡像。

4
安全及訪問控制

每個組織都面臨安全問題,英雄聯盟也不例外。比如開發人員在未授權的位置存儲鏡像和訪問他們未被授權使用的鏡像。

Artifactory使用一系列權限設置來保障Docker鏡像的安全和訪問控制。 通過定義適當的用戶和組,可以控制開發者訪問或部署鏡像的位置,是否可以註釋元數據,是否可以刪除鏡像等。 Artifactory還能通過與最常見的訪問協議(如LDAP,SAML,Crowd等)完全集成,提供對服務器訪問的控制。

通過使用Artifactory中的本地存儲庫,企業可以享受比Docker私有註冊中心提供的更可靠的安全性,和對其鏡像更細微的訪問控制。 此外,作爲第一道防線,Artifactory允許使用命名模式定義“排除”和“包括”訪問。

舉一個例子,在管理開發過程中,安全訪問控制是要確保開發者可以將發佈候選者部署到本地QA倉庫,但只有授權過的QA工作人員確保候選者已經滿足所需標準後,才能移動其到“發佈”倉庫,從中提取產品鏡像。

這種由Artifactory爲本地存儲庫提供的安全和訪問控制級別遠遠高於Docker Hub目前能提供的級別。 Artifactory有效地替換了Docker Hub,可以在組織內管理任何數量的安全問題和私有Docker註冊中心。

5
使用自定義屬性智能搜索鏡像

英雄聯盟的鏡像數目非常龐大,要找到特定的鏡像有時會變得相當困難。例如我如何通過一個查詢找到經過測試的最新鏡像?

Artifactory通過UI和使用廣泛的REST API提供靈活的搜索功能。 可以用基於固有屬性的任何組合來查找鏡像,例如名稱,版本,時間戳,校驗或自定義屬性(鏡像是否通過性能或安全測試)。Artifactory還提供了一些常見的內置搜索。 例如,可以要求Artifactory獲取任何鏡像的“最新”版本,而無需指定一個特定的內部版本號。 Artifactory知道如何在其存儲庫中比較所有不同版本的鏡像,來提供最新的可用版本。

英雄聯盟也使用到了 Artifactory 元數據的功能,在鏡像上加入特定的元數據,比如自動化測試的通過率,測試的平臺,等等,通過 API 過濾出包含某些元數據的鏡像,鏡像部署和分發。

6
和部署腳本 Ansible/Puppet/Chef 集成

爲了實現持續交付,英雄聯盟使用 Artifactory 的 API 和他們的部署腳本集成。

Artifactory 裏的所有工件(包括 Docker 鏡像)均提供統一的 REST API 對外提供訪問。無論使用什麼樣的部署腳本,均可以通過標準的 REST API 來獲取所需的 Docker 鏡像。 另外,最新版本的 Artifactory5.1已經支持了 Puppet 和 Chef 倉庫。

7
支持多種語言

英雄聯盟在開發語言的選擇上比較廣泛,所以需要不同的倉庫來支持不同語言打包的工件,然後整合到 Docker 鏡像裏。使用 Artifactory 減少了多種語言倉庫維護的成本,更重要的是它提供把每種語言的部署流程統一化的能力,讓組織內的開發,測試,運維在一個平臺上協作,進行持續交付。

8
Docker 鏡像流水線升級

Artifactory 提供了Docker 的升級 API,使用這個 API 可以把鏡像升級到最新版,並且推送到安全性更高的生產倉庫。

總結

英雄聯盟現在成爲JFrog Artifactory的重度用戶, Artifactory提供私有的,高可用的Docker 註冊中心,提高構建速度,統一鏡像交付流程,讓開發,測試,部署團隊有一致的交付流水線視圖,同時保證安全訪問,和部署腳本集成,使得DevOps 真正落地,實現快速發佈。

關於Docker 持續交付流水線
我們會在後續的文章中詳細的闡述用Docker 實現不可變基礎設施,進行持續交付,敬請關注!

下載JFrog Artifactory 開源版(代替 Nexus):
http://www.jfrogchina.com/open-source/

下載JFrog Artifactory 企業版(免費試用):
https://www.jfrog.com/artifactory/free-trial/?lang=zh-hans#High-Availability

任何問題歡迎聯繫我們:[email protected]

關於JFrog

公司成立於2008年,在美國、以色列、法國和西班牙,中國北京擁有超過200名員工。JFrog 擁有3000多個付費客戶,其中知名公司包括如Netflix、思科、谷歌、亞馬遜。最近,JFrog 連續第二年被德勤評選爲50家增長最快的技術公司之一,還被評爲硅谷增長最快的私營企業之一。

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