本文來自網易雲社區html
做者:李培斌
前端
基於omad部署平臺實現一鍵部署的實踐已有不少成功的經驗,杭研QA的技術先鋒們也在ks圈裏有不少不一樣的文章去闡述關於這類需求的實現和思路,固然包括咱們金融事業部QA這邊以前也有利用Jenkins+Omad實現一鍵部署的場景應用,但本次我想體現的基於omad實現一鍵羣組部署、依賴部署功能,這個有別於以前的「一鍵部署」功能,一鍵羣組部署、依賴部署工具在咱們這邊已經上線一個月了,目前功能已比較穩定,所以本文主要圍繞該工具的實現進行簡要的闡述分享。
mysql
隨着業務的快速發展,業務應用隨之增多,每次項目和平常迭代須要部署的應用環境、靜態資源、cdn等將近20個,這僅僅是一套環境,對於不一樣階段不一樣環境的部署均會存在重複的狀況,好比項目測試環境的一套部署,持續集成環境的一套部署、在線確認環境的一套部署等,由此可知,一個項目的研發過程當中投入重複約60次的部署工做已經佔用QA不少的時間和精力投入,並且應用依賴的部署只能手工去OMAD平臺上一個一個去觸發,也下降不少效率,所以咱們就會造成一個簡單的需求,oamd可否支持一鍵根據我任意要部署的應用進行批量部署?可否支持應用之間依賴的順序部署?
redis
基於以上狀況的需求點以下:
sql
一、一鍵批量部署
json
二、依賴部署
api
爲平臺化的實現以上需求功能,同時結合Omad平臺現有的功能,須要作以下需求拓展:
數組
a、提供配置化的頁面,引入分組的概念,實現一鍵批量部署功能
緩存
b、權限體系維持與Omad一致(我的維度),避免水平和垂直權限紊亂問題
框架
c、應用環境健康狀態自動檢查,頁面實時檢查由工具平臺觸發的部署進度
d、產品、應用、環境、實例的關聯關係保持與Omad一致
工具使用如下Omad的api接口來獲取環境列表信息、一鍵部署、健康檢查、用戶信息獲取等:
一、/api/cli/ls:獲取我的全部的產品、應用、環境及實例的詳情信息
二、/api/cli/estatus:獲取某個環境狀態詳情
三、/api/cli/vcchange:修改倉庫、分支地址
四、/api/cli/deploy:一鍵部署
五、/api/cli/login:獲取我的token接口
因爲Omad平臺設計的產品體系是以產品爲維度劃分,應用、環境及實例均掛靠下不一樣的產品下,經過產品、應用及環境的組合形式來控制權限訪問,一鍵羣組部署和依賴部署工具做爲部署的頁面化入口,其設計理念和原有平臺的方式保持一致,工具平臺上也是根據產品、應用、環境、實例,層層掛靠遞進的模型設計,以下圖
對應的數據傳輸模型設計,以下圖
Omad的接口/api/cli/ls返回的是一個大的json數組串,所以數據流解析時直接將返回的數據進行JSONArray對象化,利用json數組對象去循環遍歷出JSONObject對象,以此類推層層遞進,直到將最後裏層的Instance給解析出來,然後根據數據傳輸模型組裝成前端須要的json串。
一、工具平臺經過api與omad交互,實現環境數據、部署、健康檢查等功能
二、工具平臺根據api返回的數據進行不一樣類型的處理和組裝,返回前端頁面處理展現
三、羣組數據落地至本地的mysql庫,爲持久化部署提供支持
四、因爲環境列表一個很是大的json數組串,每次調用須要處理耗時較久,且我的的環境列表信息變化週期較長,所以該數據作LocalStorage緩存處理,同時提供接口支持手動刷新
五、權限控制維持Omad體系,第一次使用需用戶錄入AccessKey和AccessSecret,用戶惟一的token標識信息緩存至redis,避免屢次交互
權限控制直接按照Omad原有權限體系來控制,按照我的權限維度作區分,實現從工具平臺頁面入口的我的產品、應用、環境權限與直接從Omad平臺入口保持一致,避免一鍵羣組部署和依賴部署的權限紊亂,引發權限滲透的狀況發生。在工具平臺這邊維護一個用戶表,記錄錄入的AccessKey和AccessSecret信息,以獲取用戶的惟一標識token信息,從而達到每一個用戶的權限隔離。
一、第一次訪問工具須要錄入OMAD-KEY,或錄入的OMAD-KEY信息不正確也須要從新錄入
二、選擇產品、選擇組,添加部署的應用環境信息,其中倉庫地址、分支、版本能夠爲空,爲空則表示維持現有的omad配置而不作修改。
三、組狀態下的應用環境部署狀態是可持續化的,離開頁面後從新進去組仍是會進行健康檢查,若無組化部署,離開後則再也不檢查應用環境的健康狀態。
四、部署失敗的應用須要「前往」OMAD平臺查看詳細的日誌,若OMAD在登陸狀況則直接跳轉至對應的應用環境,若未登陸則去OMAD登陸頁面。
五、應用部署過程當中,狀態會自動刷新。
一鍵部署工具已上線一個月時間,如今已接入30幾個用戶,創建近300個羣組,有效觸發一鍵部署次數達200屢次,功能逐漸趨於穩定,歡迎你們前來嚐鮮。
一、組數據的複製功能
二、我的權限隔離後引發的數據不能共用的問題
三、部署進度刷新功能存在侷限性,沒法徹底的實時同步
四、......
Oamd一鍵羣組部署、依賴部署工具是基於Omad平臺而開發的一個測試效率工具,理論上全部接入到omad上進行部署的應用,如有羣組部署和依賴部署的需求都可以使用本工具做爲部署入口,邀請你們一塊兒來嚐嚐鮮,同時也給出一些寶貴的意見。
網易雲新用戶大禮包:https://www.163yun.com/gift
本文來自網易雲社區,經做者李培斌受權發佈。
相關文章:
【推薦】 kubernetes 1.3管中窺豹- RS(Replica Sets):the next-generation Replication Controller