999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向邊緣云的輕量DevOps平臺設計與實現

2023-06-22 11:50:11彭勇賴蘭劍王琦郭煊烽
現代信息科技 2023年5期

彭勇 賴蘭劍 王琦 郭煊烽

摘? 要:針對某些行業邊緣云環境存在的局限性與對新型開發技術和敏捷開發的迫切需求之間的矛盾,文章設計實現了一個軟件全生命周期DevOps平臺,并在某大型軟件研發項目中得到成功應用。該平臺將DevOps流程進行自動化流水線式集成,利用交叉編譯技術,使其能夠支撐Windows和Linux軟件開發;再通過Agent在物理機、虛擬機以及容器等多環境中實現軟件的自動部署和運維,實現從架構、開發平臺、運行環境的全方位支持。最后,通過案例驗證了平臺各模塊功能的可用性。

關鍵詞:DevOps;邊緣云;Docker;交叉編譯

中圖分類號:TP311.5? 文獻標識碼:A? 文章編號:2096-4706(2023)05-0085-05

Design and Implementation of Lightweight DevOps Platform for Edge Cloud

PENG Yong1,2, LAI Lanjian2, WANG Qi1,2, GUO Xuanfeng1,2

(1.Science and Technology on Communication Information Security Control Laboratory, Jiaxing? 314033, China;

2.The 36th Research Institute of CETC, Jiaxing? 314033, China)

Abstract: In view of the contradictions between the limitations of edge cloud environments in some industries and the urgent need for new development techniques and agile development, this paper designs and implements a full-lifecycle DevOps platform, and has been successfully applied in a software development of a large-scale project. The platform integrates the DevOps process in an automated pipeline, and uses cross compilation technology to enable it to support both Windows and Linux software development. And the automatic deployment and operation and maintenance of software are realized in multiple environments such as physical machines, virtual machines and containers through Agent, so as to realize all-round support from architecture, development platform and operating environment. Finally, the availability of the functions of each module of the platform is verified through a case.

Keywords: DevOps; edge cloud; Docker; cross compilation

0? 引? 言

許多應用軟件的開發并不具備大型云平臺的條件,也不能使用公有云環境,要求DevOps平臺能夠在開發場地快速部署,且平臺本身占用的服務器資源必須盡量少[1-3];而待開發應用軟件所采用的架構既可能是傳統的單體應用軟件,也可能是基于云原生的微服務架構,或者是兩種架構的混合體[4,5]。在云計算技術已成熟且大量應用的今天,還有許多此類開發場景,而且在某些行業內,需求還比較普遍,如工業互聯網軟件開發、軍用軟件開發等[6]。這些行業軟件對安全性、保密性要求高,不具備接入公用云的條件,但對采用新型軟件開發技術和敏捷開發的需求很迫切,希望能夠快速建立針對行業軟件需求的輕量化邊緣云環境,并采用DevOps平臺支撐應用軟件的全生命周期[7,8]。

本文設計的DevOps平臺是一套“小快靈”的開發環境,自帶一套容器云平臺,且平臺本身最低僅需一臺服務器就能運行部署。該平臺能夠全方位協助小型開發團隊快速上云,通過采用交叉編譯技術,既能支持Linux軟件開發,也能支撐傳統的Windows軟件開發。平臺提供的Agent“小探針”軟件,能夠同時部署運行在物理機、虛機、容器三種環境內,全方位支撐各種應用軟件的自動化部署和運維監控。該DevOps平臺進行了自動化的流水線式集成,簡化了開發人員的操作,減少了學習成本。

1? DevOps框架設計

1.1? DevOps框架

本文搭建的DevOps平臺是一個在邊緣云環境下能夠提供從軟件開發到運維監控的全生命周期管理的輕量級、高效率、可擴展性平臺。

本平臺在保證功能全面的前提下,以輕量級開源代碼管理工具Gitea為基礎,用支持全面容器化的Drone自動化CI工具[9]作支撐,將所有基礎環境、公共服務軟件均以Docker鏡像的形式運行,充分壓縮平臺本身占用的資源空間,將機器資源空間留給用戶;為避免使用Kubernetes、Rancher等重量級工具,本平臺提供了小巧的運維監控軟件Agent,協助完成多種環境下的軟件自動化部署和運維監控工作。

本平臺的部署、啟動均通過Docker容器高效實現。一般將平臺軟件預先部署在服務器中,結合容器的開機自啟功能在邊緣環境中可實現開機即用。即使需要邊緣現場部署,只需將容器鏡像上傳至機器中,能夠快速啟動本平臺。另外,該DevOps平臺對配置項管理、代碼提交及質量管理,到軟件編譯、構建和部署,再到運維管理進行集成,形成了閉環全流程的自動化流水線,降低開發人員的學習成本,提高軟件的交付效率。

由于本平臺實現了全面容器化,能夠根據功能需求進行靈活選擇,亦能使用自構建的容器鏡像進行功能自定義擴展;同時,通過交叉編譯技術能夠支持Windows和Linux軟件開發,Agent能夠支撐軟件在物理機、虛擬機、容器中運行,增加了開發的多樣性,能夠支撐多類開發人員之間的共同協作。

如圖1所示,根據上述DevOps平臺的特點,將其劃分為以下幾個主要部分:配置項管理、代碼質量監控、自動編譯與持續集成、自動化持續部署以及運維監控。平臺各模塊均需用戶通過DevOps門戶的統一身份認證,該門戶是整個平臺的統一入口。

配置項管理主要包含了對微服務進行劃分、建立代碼倉庫、注冊用戶等,使得服務、倉庫、用戶三者關聯匹配。代碼管理及質量監控主要包括代碼上傳至代碼倉庫、版本標簽、版本回退以及代碼倉庫中的代碼質量檢測。自動編譯與持續集成主要包含了倉庫中代碼的自動編譯、交叉編譯、多服務之間的集成以及服務接口自動化測試。自動化持續部署主要是包含了服務的部署鏡像制作以批量自動部署。運維監控是對部署應用以及目標機器的狀態檢測。

1.2? 常用工具

下面是本文構建的DevOps平臺過程中用到的常見開源軟件工具,包括容器化工具Docker,持續集成工具Drone,代碼靜態掃描工具SonarQube,實現接口自動化測試的Postman和Newman。

1.2.1? Docker

通過將每個微服務的運行環境和開發環境進行容器化,通過對空間進行隔離,能夠杜絕因環境問題對開發進程產生影響,同時也便于實現集中式管理和遷移。Docker是基于Go語言開發的輕量級開源容器平臺,通過容器引擎將應用和環境打包,能夠發布到主流Linux機器上[10]。其構建鏡像的重要手段是將操作流程全部寫入DockerFile中,再基于該文件執行Docker Build等相關命令創建鏡像,包括對編譯環境和服務運行容器鏡像的構建。

1.2.2? Drone

Drone是一款全面支持容器化的自動化持續集成工具。通過使用YAML文件(.drone.yml)的形式進行流程配置,能夠監聽Git事件以自動觸發構建流程,使得構建流程配置方便且容易理解。每個構建步驟都是執行在一個臨時的Docker容器中,可使得不同的構建任務并行執行,不會相互影響,提高了構建效率。

1.2.3? SonarQube

SonarQube是一款開源的代碼質量檢測工具,通過掃描器對指定目錄下的代碼進行掃描,將相關信息傳遞給分析服務端,再通過Web端將分析結果展示。SonarQube通過多維度分析代碼質量,提供直觀可視化的質量報告,并且提供相關接口供二次開發使用。

1.2.4? Postman與Newman

Postman是一款常見的接口測試軟件,能夠測試絕大多數Http協議的接口。可利用JavaScript編寫測試腳本,并通過Json/csv外部數據文件編寫測試用例,配合請求集合實現多用例一鍵執行測試。Newman是配合其使用的命令行操作的運行器,通過命令行運行Postman導出的測試文件,可實現接口測試的持續集成。

2? DevOps平臺實現

2.1? 配置管理

配置項管理是保證項目按時保質完成的重要手段,同時考慮平臺資源的局限性,本平臺不再使用額外軟件進行配置項管理,仍使用Gitea支撐項目配置管理工作。為做到權限分配合理、責任細化到人,本文根據軟件服務業務劃分規劃出三類代碼倉庫和四類人員。三類代碼倉庫分別是:開發庫、集成測試庫、發布庫;四類人員分別是:項目配置管理員(Configuration Management,CM)、計算機軟件配置項(Computer Software Configuration Item,CSCI)負責人、CSCI測試人員、計算機軟件單元(Compute Software Unit, CSU)負責人。

開發庫中存放的是軟件服務開發的代碼,規定其命名規則是項目-分系統-dev-CSU名稱,集成測試庫和發布庫命名規則也是類似。一般地,一個開發庫中只存放單個CSU的代碼,開發庫的管理權限分配給CSU負責人,由其進行代碼上傳、自測、發版等操作;集成測試庫中的代碼由一個或多個開發庫按照CSCI劃分規則集成而來,由CSCI測試人員進行功能測試,CSCI負責人確認無誤后進行發版;發布庫則是準備發布的版本,由項目CM打上版本標簽,準備部署,如圖2所示。

2.2? 代碼質量監控

為防止軟件開發過程中版本錯亂、源代碼意外丟失,須將其上傳至遠程倉庫進行版本管理。本平臺支持Git的工作流程和基本操作,能夠通過Git客戶端和Visual Studio、VS Code等多種主流開發環境將代碼上傳至開發庫,輸入提交的版本信息給予說明,做好版本管理。為保證代碼質量、提高開發人員素質,同時也便于代碼維護,需要對提交到開發庫的代碼進行靜態掃描,并對代碼掃描的結果進行判斷,構建代碼質量門禁,如圖3所示。

本平臺通過Docker鏡像文件來部署SonarQube的服務端,在Drone中使用的掃描器是drone-sonar-plugin。在代碼庫的根目錄中根據不同的語言寫好配置文件,同時在.drone.yml中填寫SonarQube服務端的地址以及用戶密鑰等信息,即可在啟動編譯的時候觸發代碼掃描,SonarQube會根據由多個指標構成的質量閾對掃描結果進行判斷。

2.3? 自動編譯與持續集成

當開發庫的代碼通過質量檢測后,就需要通過編譯來將代碼轉換成二進制語言,本平臺通過Drone來實現自動觸發編譯流程,通過配置YAML文件來定義構建流程。可同步監聽Git事件,設置根據不同的Git事件來觸發自動編譯流程。

在實現自動編譯的過程中,編譯環境是至關重要的一部分。因此,本平臺配置了C++、Java、JavaScript等多種語言的Docker鏡像作為基礎編譯鏡像,以支持多人、多開發庫的自動編譯任務的并行執行,杜絕了代碼編譯環境之間的相互影響,提高了編譯效率。另外,針對某些行業內不能接入公有云環境的問題,本平臺在Linux環境下搭建了Maven、npm等依賴庫,通過編寫Shell腳本實現了依賴包的批量上傳,CSU負責人只需以編譯環境的Docker鏡像為基礎,拉取必需的依賴包,即可解決編譯過程中缺少依賴的問題。

在軟件開發過程中難免會有Windows程序的場景需求,為了在一臺服務器上實現一體化的編譯環境支持,本平臺采用MXE交叉編譯在Linux系統生成Windows二進制文件,實現了在Linux系統上編譯Windows程序的功能,同時也能夠編譯純Linux程序,滿足各類開發人員對編譯環境的多樣需求。

在完成編譯后,CSU負責人將其推送至配置好的目標集成測試庫,根據業務需要與其他應用代碼通過.drone.yml腳本進行集成。CSCI測試人員對應用提供的接口進行測試,針對接口測試,本平臺結合Postman和Newman實現了接口自動化測試,如圖4所示。利用Postman填寫好請求內容、測試腳本等信息,導出測試文件和包含測試數據的csv/Json文件一并上傳至集成測試庫,再利用Newman通過Linux命令行進行測試,在.drone.yml中添加Newman流程,可根據Git事件自動觸發,CSCI測試人員只需在csv/Json文件中填寫測試用例即可。

2.4? 自動化持續部署

對于大規模集群部署,通常借助Kubernetes和Rancher實現自動化部署和運維監控,首先需要部署的是Rancher,通過Rancher來安裝K8S集群,再可以通過鏡像倉庫拉取鏡像并根據該鏡像在K8S集群中運行Pod,以Pod為最小單位運行,再配合Drone的流水線能夠實現大集群的自動化部署。

而考慮到邊緣環境受網絡帶寬等因素的影響,并且DevOps平臺也需要在非容器環境下獨立進行部署任務、兼容Windows和Linux等主要操作系統。因此,本平臺開發了Agent“小探針”軟件,通過此Agent能夠將服務部署鏡像、可執行文件以及相關配置文件通過內部網絡傳輸至目標機器,結合流水線實現自動化持續部署。

2.5? 運維監控

Agent部署在邊緣環境的主機中,支持Windows和Linux版本,并且能夠安裝在容器中。Agent作為運維監控軟件,不僅能夠支撐自動化部署,還能夠將部署主機的IP、內存、CPU等信息以及應用的節點、PID、狀態、版本號等狀態回傳至DevOps平臺中發布庫的監控頁面,如圖5所示。結合本平臺的交叉編譯功能,可以實現Windows和Linux應用的開發、編譯、部署和監控,從而既能應對B-S架構軟件開發,又能支撐C-S架構的軟件開發。

Agent選用跨平臺庫Gopsutil作為系統監控、信息收集的基礎包,將數據存儲在MySQL數據庫中。DevOps平臺提供監控頁面,通過Http接口收集Agent發來的監控數據,采用Vue2與ElementUI開發前端可視化,并將其集成至DevOps發布庫頁面中。

3? 平臺驗證

基于本DevOps平臺已開發了某軟件系統,該系統分為7個子系統,以整個軟件系統為一個項目,每個分系統為一個CSCI,每個CSCI中有一個或以上的開發庫、一個集成測試庫和發布庫,一個開發庫中存放一個微服務的代碼,如圖6所示。

本文將基于其中一個QT程序案例對DevOps平臺的各環節進行驗證。在開發庫中,開發人員將代碼更新到開發庫中,在程序編譯之前需要進行代碼掃描,對掃描結果進行質量判斷,通過質量門禁后,該程序通過qmake指令生成適當的Makefile,再使用make指令開始編譯,生成可執行文件,如圖7所示。

在集成測試庫中,通過集成腳本.drone.yml進行集成并使用Postman和Newman進行自動接口測試,通過測試將推送至發布庫。本實驗中通過在csv中填寫五次測試用例進行測試,如圖8所示。

在發布庫中,通過DockerFile構建新的Docker鏡像,通過部署腳本指定部署目標機器,同時將啟動Docker鏡像的docker-compose.yml文件上傳。Agent會通過docker-compose來自動啟動Docker容器,并將生命狀態回傳至開發庫中監控頁面,如圖9所示。

4? 結? 論

本文面向邊緣云環境設計了一套輕量級、高效率、開放性的DevOps平臺,該平臺具有極低的軟硬件部署環境要求,能夠協助小型開發團隊快速上云。能夠同時支撐B-S架構和C-S架構的軟件開發,且能實現Linux、Windows系統的交叉編譯;配合Agent能夠實現軟件在物理機、虛擬機及容器中的自動部署和運維監控,從而形成了能夠支撐單體應用軟件和微服務架構軟件的全生命周期管理平臺。同時,本平臺的所有技術框架和標準均采用主流開放性組件,可推廣與其他框架和平臺遷移使用。

參考文獻:

[1] 陳文馳.Docker下的持續集成系統的開發應用 [J].現代信息科技,2019,3(13):108-109+113.

[2] 張冬松,胡秀云,鄔長安,等.面向DevOps的政務大數據分析可視化系統 [J].計算機技術與發展,2020,30(8):1-7.

[3] BALALAIE A,HEYDARNOORI A,JAMSHIDI P. Microservices Architecture Enables DevOps:Migration to a Cloud-Native Architecture [J].IEEE Software,2016,33(3):42-52.

[4] 辛園園,鈕俊,謝志軍,等.微服務體系結構實現框架綜述 [J].計算機工程與應用,2018,54(19):10-17.

[5] 梁惠惠.對軟件開發模式變遷的研究 [J].現代信息科技,2019,3(22):1-4+8.

[6] 姚錫凡,景軒,張劍銘,等.走向新工業革命的智能制造 [J].計算機集成制造系統,2020,26(9):2299-2320.

[7] 榮國平,張賀,邵棟,等.軟件過程與管理方法綜述 [J].軟件學報,2019,30(1):62-79.

[8] 姜文,劉立康.應用軟件項目的迭代開發與測試 [J].計算機技術與發展,2019,29(4):7-12.

[9] MAHBOOB J,COFFMAN J. A Kubernetes CI/CD Pipeline with Asylo as a Trusted Execution Environment Abstraction Framework [C]//2021 IEEE 11th Annual Computing and Communication Workshop and Conference(CCWC).NV:IEEE,2021:529-535.

[10] 丁海斌,崔雋,陸凱.基于Docker的DevOps系統設計與實現 [J].指揮信息系統與技術,2017,8(3):87-92.

作者簡介:彭勇(1994—),男,漢族,安徽池州人,助理工程師,碩士,研究方向:云原生技術和平臺軟件相關;通訊作者:賴蘭劍(1972—),男,漢族,江西贛州人,研究員,碩士,研究方向:系統總體與軟件體系結構。

收稿日期:2022-09-29

主站蜘蛛池模板: 国产9191精品免费观看| 一级毛片无毒不卡直接观看| 国产系列在线| www.99在线观看| 91青青草视频在线观看的| 青青草一区| 国产亚洲欧美在线人成aaaa| 国产乱子精品一区二区在线观看| 99久久精彩视频| 欧美A级V片在线观看| 国产尤物视频网址导航| 亚洲女人在线| 亚洲一区国色天香| 99热这里都是国产精品| av无码一区二区三区在线| 美女一级毛片无遮挡内谢| 亚洲日本一本dvd高清| 欧美日韩激情| 国内精品91| 日韩精品专区免费无码aⅴ| 国产黄在线免费观看| 欧美啪啪精品| 欧美激情第一欧美在线| 国产欧美在线| 毛片免费在线视频| 国产h视频在线观看视频| 午夜毛片免费看| 欧美午夜久久| 伊人AV天堂| 人妻出轨无码中文一区二区| 欧美啪啪一区| 国产视频你懂得| 国产人免费人成免费视频| 国产69精品久久久久孕妇大杂乱 | 亚洲女人在线| 全部免费特黄特色大片视频| 久久精品视频亚洲| 欧美亚洲日韩不卡在线在线观看| 波多野结衣中文字幕一区二区 | 欧美成人亚洲综合精品欧美激情| 久草热视频在线| 真实国产乱子伦视频| 久久成人18免费| 99久久性生片| 亚洲欧美自拍一区| 国产毛片高清一级国语 | 亚洲啪啪网| 无码精品国产dvd在线观看9久| 伊人查蕉在线观看国产精品| 久久国产免费观看| 伊人色综合久久天天| 亚洲不卡影院| 伊人福利视频| 97色伦色在线综合视频| 国产69囗曝护士吞精在线视频| 亚洲天堂免费观看| 色老头综合网| 亚洲一级毛片| 亚洲国产无码有码| 国产噜噜在线视频观看| 韩国福利一区| 欧美激情伊人| 亚洲一区二区约美女探花| 狠狠亚洲婷婷综合色香| 国产美女无遮挡免费视频网站| 亚洲日韩第九十九页| 亚洲制服丝袜第一页| 成人亚洲天堂| 国产网站在线看| 国产尤物jk自慰制服喷水| 久久久国产精品无码专区| 无码AV日韩一二三区| 欧美在线导航| 亚洲精品成人7777在线观看| 五月天综合婷婷| 久久精品国产一区二区小说| 992Tv视频国产精品| 色综合天天娱乐综合网| 老熟妇喷水一区二区三区| 精品视频第一页| 亚洲午夜天堂| 久久久久人妻一区精品|