2021-11-18 10:00:18
來源:晶報網
在開發方面,由于我行開發語言種類較多,不同的語言需要不同的私服,不便于管理維護和安全掃描;在投產方面,SVN+FTP傳遞制品的方式已經無法滿足上云的應用,在多種產品的選型中,我們選取了JFROG-Artifactory作為民生銀行統一制品倉庫,來管理、存儲、分發全行級的制品。經過一年多的適配,制品倉庫已經與我行DEVOPS平臺(pset+eva)、工單流程平臺、容器平臺、CMDB等關鍵系統絲滑對接。我們建設的初衷是,規范民生銀行制品投產流程,提高制品質量,加速制品投產效率。我們從SVN+FTP切換到制品倉庫的理念是,把更多的工作做到DEVOPS平臺上,盡可能對用戶無感,減輕科技人員負擔。
民生銀行制品倉庫的應用
支持全開發語言依賴
全行級制品管理
適配行內系統
接下來建設計劃
一、支持全開發語言依賴
1.1 統一私服
由于開發語言種類多,各項目組根據情況搭建自己的私服。這樣不便于依賴的管理和安全掃描。而且許多公網的依賴源,各個私服自己代理,這樣會造成很多不易排查的問題。
以maven為例,部分項目組在自己私服上傳了jar包而沒有上傳pom文件,私服默認根據gav創建了一個沒有依賴的pom文件。這樣各項目組在本地自己構建的時候沒問題,如果在pset集中構建,有可能先構建的是錯誤的pom文件的項目,后續也有這個依賴的項目由于拉不到傳遞依賴就有可能會構建失敗。
制品倉庫對公網的主流倉庫進行了代理,并且將公網倉庫作為優先的依賴源,這樣可以避免因為公網依賴導致的構建問題。
并且我們提供了一套用于上傳的公共倉庫,解決了公共依賴上傳重復,維護混亂的問題。
1.2 權限管理
各種私服大多數是對單個用戶進行授權,權限關系不好維護。
因為制品倉庫在身份認證和準入管理方面有user,group和permission三種資源,我們在開發環境能夠更加方便的從pset同步權限。我們編寫代碼并做成每日定時任務,從pset同步用戶和權限。pset每個模塊都有只讀,編輯和管理員三種權限,在制品倉庫中也根據模塊創建三個group分配同步pset三種權限中的用戶;然后為每個模塊創建permission將對應的group和需要操作的倉庫進行關聯,這樣就可以將pset對應模塊對應權限的用戶與制品倉庫的訪問權限綁定上,無需每個用戶單獨配置權限。用戶與模塊,模塊與倉庫的關系非常清晰,易于管理。生產環境從cmdb也采用相同的方式進行權限同步和維護,同時也實現了各個模塊之間權限的隔離。
1.3 倉庫管理
制品倉庫分local倉庫,remote倉庫和virtual倉庫。由于local倉庫的可以上傳的特性,我們將其作為行內公共包和項目組私有包的上傳倉庫。對于項目組之前自己搭的私庫中的文件,也可以使用插件將文件同步到自己的私庫中,所以用戶可以很方便的切換到制品倉庫。
remote倉庫可以代理其他遠端的倉庫,我們用來代理之前行內的公共倉庫和公網的一些公共倉庫。如果用戶發現自己依賴的公網包在現代理的公網倉庫中沒有的情況下,可以跟我們反饋,我們根據情況申請代理,代理對應的公網倉庫。
virtual倉庫里面可以維護local,remote和virtual三種類型的倉庫。以maven倉庫為例,其實公共倉庫,包括之前行內的公共倉庫和代理公網的公共倉庫有將近三十個倉庫,我們將其整合成三個虛擬倉庫作為公共倉庫供用戶使用,后續我們調整倉庫或者新增倉庫,對于用戶都是不受影響的,這就解決了用戶老是修改依賴倉庫配置的問題。為用戶創建的倉庫有release和snapshot兩個虛擬倉庫,release和snapshot兩個local倉庫,并在release虛擬倉庫中添加了release的local倉庫以及兩個公共的release虛擬倉庫,在snapshot虛擬倉庫中添加了snapshot的local倉庫和公共的snapshot虛擬倉庫。用戶在配置上傳和下載倉庫的時候只需要配置他們模塊的兩個虛擬倉庫就可以滿足上傳需求,能夠同時下載到自己項目的包和公共倉庫的包。
1.4 高可用
開發環境采用的是雙節點高可用,如果其中一個節點異常,流量可以自動分配到另外一個節點,提供服務。
生產主從高可用F5架構,正常馬坡集群向外提供服務,在馬坡集群異常的情況,F5可以將流量切換到鵬博士集群繼續提供服務。由于開發環境投產文件是向馬坡和鵬博士兩個集群雙推的,來確雙數據中心一致。
二、全行級制品管理
2.1 投產文件按照標準目錄格式進行存放管理
標準目錄結構如下:
-模塊倉庫
-版本名稱
-服務單元名稱(如果包含中文轉成拼音小寫)
-文件分類
-文件名稱
文件分類分為5種類型,作用分別如下:
artifact 存儲鏡像、tar、jar、war等二進制文件
config 存儲配置文件
sql 存儲sql文件
yaml 存儲yaml等部署文件
other 存儲其他類型的文件
2.2 為存儲的文件添加元數據
制品倉庫支持對存儲的文件添加元數據,現在已經把jira號作為元數據添加到投產文件上面,后續還要打測試相關的質量數據,來做質量門禁。
2.3 開源軟件黑名單
在開發、測試、安全掃描、生產運營等過程中,一旦發現某個開源軟件及相關版本有安全、嚴重性能等問題,即可申請將其加入黑名單。
加入黑名單的申請,由安全條線審核,是否加入黑名單。由安全條線根據CVE等安全漏洞網站發布的漏洞信息,定期(如半年/一年)對開源軟件倉庫里的開源軟件進行安全檢查, 一旦發現問題,立即加入黑名單。
一旦加入黑名單,立即從開源軟件倉庫移除,并通知所有使用的項目組,按期整改。
三、適配行內系統
3.1 與pset對接
pset(軟件工程支撐平臺),負責軟件需求到軟件交付的全生命周期管理。制品倉庫通過與pset集成,來實現對上層用戶透明,用戶只需要少量配置,即可從DTR、SVN、FTP切換到制品倉庫,通過與pset協定,使用不同成熟度的倉庫,并按照規范存放制品。
3.2 與itoms對接
itoms(IT運維管理系統),負責數據中心所有變更流程。制品分發到生產環境必須與流程相關聯。通過與itoms工單系統對接,實現了工單審批通過,同步傳輸制品到生產環境。
3.3 與eva對接
eva(伊娃自動化運維平臺),負責數據中心所有調度、發布任務。在制品存放路徑標準化的基礎上,與eva實現了容器應用一鍵發布,運維人員只需選擇發布的版本號,即可關聯出所有投產制品和發布流程。
四、接下來建設計劃
4.1 帶寬擴容
計劃對帶寬進行擴容,以增加制品倉庫的傳輸速度和響應時間。
4.2 支持總行以外的機構部門
目前主要是總行的項目使用制品倉庫存儲構建介質和流轉生產介質,后續總行以外的信用卡中心和分行也將使用總行的制品倉庫進行投產。
4.3 版本升級
(1) peer-to-peer:
在k8s集群的機器上面安裝插件,插件會收集鏡像的下載信息,當集群中的部分機器因為意外故障重啟之后需要重新下載鏡像的時候,優先從集群中的其他有該鏡像的機器進行下載,從而有效減輕,當數據中心級災難時,幾千上萬個容器節點同時從制品倉庫下載鏡像爆發式的壓力。
(2) edge:
edge相當于是只有下載功能的Artifactory,由于edge成本低和不能修改的特性,可以讓研發中心使用Artifactory,讓總行、信用卡、分行等機構使用edge,edge承擔一個分流的角色,通過研發中心Artifactory分發制品給各個數據中心edge,然后各個數據中心從本地的edge消費。
文章來源于民生運維人 ,作者沈啟黃、王鵬
免責聲明:市場有風險,選擇需謹慎!此文僅供參考,不作買賣依據。
關鍵詞:
發布于