發布時間:2018-07-24作者:研華科技(中國)有限公司
研華WISE-PaaS工業物聯網云平臺在不斷地升級完善中,我們每周四為您播報其更新動態~
今天要為大家介紹的是WISE-PaaS平臺上新導入的DevOps持續交付服務。
實操過的小伙伴應該都清楚,軟件交付需要經過構建、測試、部署等很多復雜的過程,如果主要依賴人工去完成這個流程需要花費很多的時間,延誤產品的上線發布。
而研華DevOps集文化、實踐和工具于一身,以開發團隊和運維團隊的密切合作為核心,通過平時的工作實踐將交付過程打造成一條包含開發、構建、測試、發布、部署、運維等步驟的標準化流程,并用各種工具將其自動化,最終實現產品的快速高質量交付,并提供7*24小時不間斷的服務。
了解了什么是DevOps,我們就從技術架構上具體看看這個持續交付解決方案。
? Jenkins+Kubernetes實現應用自動化持續發布 ?
總體技術架構
解決方案最上層提供了CodePipeline服務,CodePipeline是一款具有持續集成/持續交付能力,并能兼容Jenkins的SaaS化產品。通過使用CodePipeline,可以使客戶方便的在云端實現從代碼到應用的持續集成和交付,方便客戶快速的對產品進行功能迭代和演進。
整個解決方案的核心是Jenkins,Jenkins提供了軟件開發的持續集成服務,它通過Master/Agent架構可以實現分布式構建,將不同的任務下發到多臺機器(Jenkins Node)執行,提高處理性能。
解決方案最下層通過Kubernetes來管理Jenkins的節點,當有構建任務時會自動創建一個Docker Container來完成構建任務,當任務結束后Container會自動銷毀,資源動態使用動態銷毀,避免資源浪費,并且無需擔心代碼或者構建物外泄。
傳統的 Jenkins Master/Agent方式可以幫助用戶實現分布式構建,提高處理性能,但是在使用時還是會存在很多缺點,比如:
?當Master節點發生故障時,便無法再進行任何構建任務;
?為了完成不同語言的編譯打包等任務,會創建很多Jenkins Node,但是這些Node的環境又很難復制,導致管理和維護都很困難;
?資源分配不均衡,有些Node使用率比較高,會出現Job排隊的情況,但有些使用率比較低的Node卻很多時候又處于空閑,導致資源的浪費;
為了解決以上種種問題,需要尋找一種更可靠更高效的方式來完成 CI/CD 流程,使用Kubernetes 搭建 Jenkins 集群的架構便解決了這些問題,如下圖所示。
在這種架構中,Jenkins Master 和 Jenkins Agent以Docker Container 形式運行在 Kubernetes 集群的 Node 上, 創建一個持久化的Volume用來存儲Jenkins服務的數據,當Master出現故障時,可以保證數據不會丟失。創建JenkinsAgent使用的Docker Image保存在Docker存儲服務中(比如Docker Hub),便于管理和復用。Jenkins Agent會根據需要拉取Docker Image動態創建和銷毀,不會一直占用資源。
? WISE-PaaS SRP持續交付流程 ?
1. 開發人員提交代碼到代碼倉庫,通過GitLab的WebHook會觸發Jenkins上面自動構建的Job;
2. 自動構建的Job執行后會將構建生成的產物存儲到Storage Service,比如Blob;
3. 編譯成功后會觸發Jenkins上面自動部署的Job,從Storage拉取編譯產物部署到準生產區;
4. 部署之后會自動執行SmokeTest,SmokeTest通過后,QA還會進行系統測試、性能測試、壓力測試等全面的測試;
5. 測試通過后觸發Jenkins上面自動部署的Job將編譯產物部署到生產區;
傳統模式下,如果要更新應用,基本上無可避免會存在宕機時間。而借助研華的DevOps持續交付服務,則可以實現不間斷服務的更新,這得力于平臺上設置的藍綠部署。
? 藍綠部署:實現不間斷服務的更新 ?
藍綠部署是軟件部署模式的一個術語,藍色是現在正在運行的當前版本,綠色則是更新的版本。
我們先部署綠色版本,然后對綠色版本執行冒煙測試。通過測試后,才將應用流量逐步切換到綠色版本,然后監控綠色版本,一旦異常,立刻回滾到藍色版本。整個過程高效迅速,可以保證0宕機升級,服務不間斷。
WISE-PaaS App能夠實現藍綠部署,主要是因為平臺支持App通過Scale實例個數來分擔流量,比如藍的版本有6個實例,目前用戶訪問的所有流量都集中在藍的版本上。需要升級時,我們先部署只有一個實例的綠的版本,測試通過后,我們會將其Scale到4個實例,并將用戶使用的Route Map到綠的版本上,并且將藍的版本Scale為2個實例,這個時候,綠的版本正式被用戶所用,并且分擔了67%的流量,然后再繼續將綠的版本Scale到6個實例,并且將藍的版本Stop,最終所有流量成功導入到綠的版本,并且升級過程中不會出現宕機的時刻。
在快速發展的云時代,軟件產品層出不窮,為了搶奪先機,第一時間將產品上市,快速發布和保證質量成為產品取勝至關重要的因素。遵循DevOps的交付理念,可以幫助開發人員第一時間發現軟件中的缺陷,保證產品快速和高質量上線,并提供不間斷的服務,提高客戶的滿意度和產品的市場競爭力。所以DevOps已經成為軟件驅動型企業在云時代取得成功的關鍵。
Copyright ? 2015 ilinki.net Inc. All rights reserved. 智匯工業版權所有
電話:010-62314658 郵箱:service@ilinki.net
主辦單位:智匯萬聯(北京)信息技術有限公司