JFrog助力民生銀行打造企業級單一可信源

在開發方面,由於我行開發語言種類較多,不同的語言需要不同的私服,不便於管理維護和安全掃描;在投產方面,SVN+FTP傳遞製品的方式已經無法滿足上雲的應用,在多種產品的選型中,我們選取了JFROG-Artifactory作為民生銀行統一製品倉庫,來管理、儲存、分發全行級的製品。經過一年多的適配,製品倉庫已經與我行DEVOPS平臺(pset+eva)、工單流程平臺、容器平臺、CMDB等關鍵系統絲滑對接。我們建設的初衷是,規範民生銀行製品投產流程,提高製品質量,加速製品投產效率。我們從SVN+FTP切換到製品倉庫的理念是,把更多的工作做到DEVOPS平臺上,儘可能對使用者無感,減輕科技人員負擔。

民生銀行製品倉庫的應用

支援全開發語言依賴

全行級製品管理

適配行內系統

接下來建設計劃

JFrog助力民生銀行打造企業級單一可信源

一、支援全開發語言依賴

1。1 統一私服

由於開發語言種類多,各專案組根據情況搭建自己的私服。這樣不便於依賴的管理和安全掃描。而且許多公網的依賴源,各個私服自己代理,這樣會造成很多不易排查的問題。

以maven為例,部分專案組在自己私服上傳了jar包而沒有上傳pom檔案,私服預設根據gav建立了一個沒有依賴的pom檔案。這樣各專案組在本地自己構建的時候沒問題,如果在pset集中構建,有可能先構建的是錯誤的pom檔案的專案,後續也有這個依賴的專案由於拉不到傳遞依賴就有可能會構建失敗。

製品倉庫對公網的主流倉庫進行了代理,並且將公網倉庫作為優先的依賴源,這樣可以避免因為公網依賴導致的構建問題。

並且我們提供了一套用於上傳的公共倉庫,解決了公共依賴上傳重複,維護混亂的問題。

JFrog助力民生銀行打造企業級單一可信源

1。2 許可權管理

各種私服大多數是對單個使用者進行授權,許可權關係不好維護。

因為製品倉庫在身份認證和准入管理方面有user,group和permission三種資源,我們在開發環境能夠更加方便的從pset同步許可權。我們編寫程式碼並做成每日定時任務,從pset同步使用者和許可權。pset每個模組都有隻讀,編輯和管理員三種許可權,在製品倉庫中也根據模組建立三個group分配同步pset三種許可權中的使用者;然後為每個模組建立permission將對應的group和需要操作的倉庫進行關聯,這樣就可以將pset對應模組對應許可權的使用者與製品倉庫的訪問許可權繫結上,無需每個使用者單獨配置許可權。使用者與模組,模組與倉庫的關係非常清晰,易於管理。生產環境從cmdb也採用相同的方式進行許可權同步和維護,同時也實現了各個模組之間許可權的隔離。

JFrog助力民生銀行打造企業級單一可信源

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虛擬倉庫。使用者在配置上傳和下載倉庫的時候只需要配置他們模組的兩個虛擬倉庫就可以滿足上傳需求,能夠同時下載到自己專案的包和公共倉庫的包。

JFrog助力民生銀行打造企業級單一可信源

1。4 高可用

開發環境採用的是雙節點高可用,如果其中一個節點異常,流量可以自動分配到另外一個節點,提供服務。

生產主從高可用F5架構,正常馬坡叢集向外提供服務,在馬坡叢集異常的情況,F5可以將流量切換到鵬博士叢集繼續提供服務。由於開發環境投產檔案是向馬坡和鵬博士兩個叢集雙推的,來確雙資料中心一致。

JFrog助力民生銀行打造企業級單一可信源

二、全行級製品管理

2。1 投產檔案按照標準目錄格式進行存放管理

標準目錄結構如下:

-模組倉庫

-版本名稱

-服務單元名稱(如果包含中文轉成拼音小寫)-檔案分類

-檔名稱

檔案分類分為5種類型,作用分別如下:

artifact 儲存映象、tar、jar、war等二進位制檔案

config 儲存配置檔案

sql 儲存sql檔案

yaml 儲存yaml等部署檔案

other 儲存其他型別的檔案

2。2 為儲存的檔案新增元資料

製品倉庫支援對儲存的檔案新增元資料,現在已經把jira號作為元資料新增到投產檔案上面,後續還要打測試相關的質量資料,來做質量門禁。

JFrog助力民生銀行打造企業級單一可信源

2。3 開源軟體黑名單

在開發、測試、安全掃描、生產運營等過程中,一旦發現某個開源軟體及相關版本有安全、嚴重效能等問題,即可申請將其加入黑名單。

加入黑名單的申請,由安全條線稽核,是否加入黑名單。由安全條線根據CVE等安全漏洞網站釋出的漏洞資訊,定期(如半年/一年)對開源軟體倉庫裡的開源軟體進行安全檢查, 一旦發現問題,立即加入黑名單。

一旦加入黑名單,立即從開源軟體倉庫移除,並通知所有使用的專案組,按期整改。

JFrog助力民生銀行打造企業級單一可信源

三、適配行內系統

3。1 與pset對接

pset(軟體工程支撐平臺),負責軟體需求到軟體交付的全生命週期管理。製品倉庫透過與pset整合,來實現對上層使用者透明,使用者只需要少量配置,即可從DTR、SVN、FTP切換到製品倉庫,透過與pset協定,使用不同成熟度的倉庫,並按照規範存放製品。

3。2 與itoms對接

itoms(IT運維管理系統),負責資料中心所有變更流程。製品分發到生產環境必須與流程相關聯。透過與itoms工單系統對接,實現了工單審批透過,同步傳輸製品到生產環境。

3。3 與eva對接

eva(伊娃自動化運維平臺),負責資料中心所有排程、釋出任務。在製品存放路徑標準化的基礎上,與eva實現了容器應用一鍵釋出,運維人員只需選擇釋出的版本號,即可關聯出所有投產製品和釋出流程。

四、接下來建設計劃

4。1 頻寬擴容

計劃對頻寬進行擴容,以增加製品倉庫的傳輸速度和響應時間。

4。2 支援總行以外的機構部門

目前主要是總行的專案使用製品倉庫儲存構建介質和流轉生產介質,後續總行以外的信用卡中心和分行也將使用總行的製品倉庫進行投產。

JFrog助力民生銀行打造企業級單一可信源

4。3 版本升級

(1) peer-to-peer:

在k8s叢集的機器上面安裝外掛,外掛會收集映象的下載資訊,當叢集中的部分機器因為意外故障重啟之後需要重新下載映象的時候,優先從叢集中的其他有該映象的機器進行下載,從而有效減輕,當資料中心級災難時,幾千上萬個容器節點同時從製品倉庫下載映象爆發式的壓力。

(2) edge:

edge相當於是隻有下載功能的Artifactory,由於edge成本低和不能修改的特性,可以讓研發中心使用Artifactory,讓總行、信用卡、分行等機構使用edge,edge承擔一個分流的角色,透過研發中心Artifactory分發製品給各個資料中心edge,然後各個資料中心從本地的edge消費。

JFrog助力民生銀行打造企業級單一可信源

文章來源於民生運維人 ,作者沈啟黃、王鵬