天天看點

幹貨合集 | 關于制品庫,你了解多少?

在DevOps實踐中,制品庫可以說是至關重要的元件。一個可靠的制品庫在DevOps流程中往往可以幫助企業解決許多安全和版本管控方面的問題。本文将以兩個問題為切入口,帶您深入了解制品庫的那些事兒。

問題1:DevOps平台裡的制品庫有什麼用?

問題2:DevOps實踐中,有必要用制品庫嗎?

DevOps平台裡的制品庫有什麼用?

制品&制品庫

不同開發語言的源碼編譯建構打包的二進制檔案,例如Java JAR,WAR,EAR格式;Android AAR格式;其他軟體包格式,例如NuGet軟體包,Ruby gems,NPM軟體包;Docker鏡像和Helm charts;普通ZIP或.tar.gz、dmg等壓縮檔案;可執行檔案格式,例如.exe 或.sh 檔案,以及Android APK、Apple IPA等各種安裝程式格式。

使用場景上,分為三類:

制品倉庫

存放流水線建構的通用檔案類型的倉庫,以及部署時拉取檔案的倉庫:Generic——例如普通ZIP或.tar.gz、dmg等壓縮檔案;可執行檔案格式,例如.exe 或.sh 檔案,以及Android APK、Apple IPA等各種安裝程式格式。

鏡像倉庫

通過k8s 服務部署應用時,需要從鏡像倉庫拉取鏡像:Docker,Docker鏡像,Helm,Helm charts。

依賴倉庫

各種開發語言的依賴包管理倉庫,通常會搭建nexus私服來通過代理拉取各個中央倉庫的開源依賴包,也叫三方包;由企業公共元件開發團隊或合作公司提供的依賴包或SDK,也叫二方包:

  • Maven——Java JAR,WAR,EAR格式;Android AAR格式(包含Gradle、Ivy方式)
  • NPM——NodeJS包
  • PyPI——Python包
  • Go——golang包
  • Composer——PHP包
  • NuGet——.NET包
  • RPM——rpm和yum包
  • Conan——C/C++語言的包
  • CocoaPods——iOS包

其中maven和npm是目前使用比較多的類型,還有其他類型語言的依賴包管理倉庫,這裡就不一一列舉。

再來看看DevOps以及DevSecOps的理念和研發過程,就可以看到制品庫在其中起到的重任。DevOps将開發、測試、運維拉到同一戰線,使産品持續開發、持續內建、持續測試、持續部署、持續監控,非常頻繁地釋出新版本。

幹貨合集 | 關于制品庫,你了解多少?

DevSecOps是一種遵循DevOps的思想,并将安全無縫內建到其中的研發模式。在國内,央國企、泛金融、營運商、通信、網際網路等頭部行業,已經開始在實踐DevSecOps。

DevOps&DevSecOps中的安全風險

幹貨合集 | 關于制品庫,你了解多少?

安全隐患明顯:

第三方依賴包下載下傳管理混亂,缺乏安全漏洞掃描和安全準入設定,極易引入漏洞,造成生産事故。

制品管理混亂:

對不同類型制品缺乏統一管理平台,備援制品無法及時清理造成資源管理混亂。

無法溯源管理:

缺乏對開發、建構、測試和部署等制品全生命周期的過程管控,無法曆史溯源。

服務中斷風險:

缺少高可用時,存在因故障引起服務中斷的風險,影響研發和運維工作。

運維成本高昂:

缺乏叢集部署,存在重複建設的問題,維護成本高,且無法進行多地區節點的制品同步分發。

一個合格的制品庫,除了要支援常用的制品類型的存儲功能以外,還必須提供倉庫代理、版本管理、通路控制、安全掃描、依賴分析、制品同步等重要功能,是一種企業處理軟體開發過程中産生的所有包類型的标準化方式。實作對制品全生命周期的流程、風險、權限和品質等多元度管控,支撐企業在開發、建構、測試和部署等階段對制品的管理和使用,可以大幅提升軟體工程的管控與效能。

DevOps實踐中制品庫的必要性?

典型的軟體開發會涉及到開發,建構,測試,部署等環節。在這個過程中,依賴元件如何確定安全,中間制品如何規範管理,傳遞物如何準确投産,諸如此類的問題往往會成為整個DevOps流轉的阻礙。可靠的制品庫在DevOps流程中往往可以幫助企業解決許多安全和版本管控方面的問題。

幹貨合集 | 關于制品庫,你了解多少?

在開發建構階段,因技術所需,往往會“依賴”大量外部的依賴元件。在這個時候既要費時費力下載下傳各種外部依賴檔案;還要防止下載下傳的開源元件有漏洞;有些元件可能還有授權大坑,有法律風險;是以,如何處理依賴庫就成為了開發建構中的大難題。

在建構完之後往往會将制品存入制品庫中進行集中管理,在這個時候開發無法對庫裡制品的品質狀況了如指掌;運維難以确定本次可釋出的版本,如果有未經測試的版本上了生産環境,或者是老版本覆寫了新版本,釀成的都是大事故。

最後傳遞的制品,在部署實施的時候會有許多要求:

  • 首先要保證傳輸的媒體可靠和安全;
  • 兼顧版本的管理,哪個版本是最新的?哪個是臨時版本?
  • 萬一制品庫當機,按時投産就成了大問題;
  • 很多情況下,企業開發和生産處于異地隔離,那麼如果制品異地傳輸慢,大規模部署就隻能幹着急;
  • 權限管控方面,如果制品庫無法做到細粒度的權限管控,權限管控不嚴,制品被篡改,那将遺患無窮。

嘉為藍鲸CPack制品管理

CPack制品管理平台是一款國産自研的企業級制品庫,專注于嘉為藍鲸DevOps解決方案的應用開發域。CPack不僅支援多種常見制品庫類型,而且支援倉庫代理功能,解決不同倉庫管理複雜的問題;通過版本管理及中繼資料來管理制品全生命周期;提供安全掃描與依賴分析進行風險把控;擁有精細化的權限管控與監控能力,保障數字資産安全;具備制品同步分發能力,實作多資料中心的資料同步。

幹貨合集 | 關于制品庫,你了解多少?

多類型制品支援:

支援Generic、Maven、NPM、PYPI、Docker、Helm等多種常見類型,支撐多種不同語言的研發團隊使用。

制品統一管理:

提供代理功能,通過設定多個代理源實作本地倉庫、私有倉庫和中央倉庫的制品統一管理,打造企業唯一可信源。

制品溯源追蹤:

基于制品中繼資料和準入準出規則,進行制品晉級,以制品次元記錄從需求到釋出的過程資料,實作需求、編碼、建構、測試、品質和部署全生命周期過程的強管控,實作可信追溯與安全審計。

制品安全掃描:

提供自定義掃描計劃和品質規則,滿足企業對開源元件的漏洞安全和許可證合規性方面的檢測管控要求。

保障服務穩定:

支援叢集部署和健康監控,為企業提供穩定的性能服務。

降低運維成本:

多地資料中心叢集方式部署,支援橫向多節點擴充,以靈活的同步政策應對高并發下載下傳場景。

  • 單環境:私服依賴倉庫+項目隔離的制品倉庫+制品晉級+部署釋出
  • 多地中心:CI流水線+多節點制品庫+同步分發+應用釋出自動化+部署
  • 私服依賴庫:DMZ隔離區+多級代理

繼續閱讀