Netkiller DevOps 手札
Mr. Neo Chan, 陳景峯(BG7NYT)
中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890
<netkiller@msn.com>
Copyright © 2010-2018 netkillercss
版權聲明html
轉載請與做者聯繫,轉載時請務必標明文章原始出處和做者信息及本聲明。html5
|
|
|
微信訂閱號 netkiller-ebook (微信掃描二維碼) |
QQ:13721218 請註明「讀者」 |
QQ羣:128659835 請註明「讀者」 |
|
請首先閱讀:git
- 一步步實施 DevOps (一)
- 一步步實施 DevOps (二)
- 一步步實施 DevOps (三)
- 一步步實施 DevOps (四)
- 一步步實施 DevOps (五)
- 一步步實施 DevOps (六)
自動化部署github
本章節重點談自動化部署,每一個人對自動化部署都有本身的理解,每一個企業對自動化部署的需求也不一樣。數據庫
目前不少雲平臺開始推出一些列 DevOps 工具,體驗了一下,仍然處在初級階段,也不十分紅熟。嚴格的說他們實現的 CD (持續部署)。緩存
前面講過持續集成不是 DevOps,這裏我要說持續部署也不是 DevOps。CD是從CI中分離出來的,將部署單獨提煉出來。服務器
自動化部署遠比 CD 要複雜,涉及包括:微信
- 網絡層:網絡設備管理,負載均衡切換,路由表管理
- 系統層:基礎設施,操做系統,軟件運行環境,
- 軟件層:軟件部署,CD部分
- 緩存層:緩存的刷新
- 搜索層:重建全文索引
- 數據層:數據庫結構管理,數據庫數據管理
- 日誌層:誰,什麼時間,作了什麼操做,結果怎樣
- 除此以外,管理上還須要提案和審批流程等等
因此 CD (持續部署)解決不了企業的生產環境自動化部署需求,CD牢牢是CI (持續集成)運行完成後,將構建物部署到指定的運行環境中。一般CD並不提供回撤功能,因此極少由企業使用 CD 部署生產環境。網絡
Git -> 編譯 -> 測試 -> 打包 -> 構建物 -> 部署 -> 運行
CI/CD 的流水線做業只能部署單一項目,對於大型網站就無能爲例,例如不少大型網站:
- 構建過程很是複雜,不單單是一個項目打包, 而是須要多個模塊,處理複雜的配置過程。
- 一次部署多臺服務器,每一個服務器可能有多個實例,實例間相互依賴關係
- 須要遵照嚴格的部署和啓動順序
- 記錄部署日誌,文件的新增,覆蓋,刪除
- 部署時間點
- 升級不單單是代碼,還有數據庫,緩存……
- 須要改變負載均衡設備節點,設置防火牆策略
- 須要有完備的回撤方案
- 除此以外好虛考慮增量部署和差別部署,例如部署100mb 以上的大文件,甚至GB尺寸的文件
不少 DevOps 方案注重 Docker,K8s解決方案。但實際狀況 Docker 並不適用於全部場景,更可能是物理服務器,虛擬機,雲主機,刀片服務器…
使用 Docker 的前提是,Docker必須部署在宿主主機上,在雲主機中部署 Docker 意義不大。
不少企業大量使用雲主機,對 Docker 並沒有強烈的需求。
運維須要怎樣的自動化部署工具:
- 項目管理:升級提案,工做流轉,工做審批
- 備份管理:任何生產環境部署前都須要備份,必須實現增量備份和差別備份。
- 環境管理:環境部署,基礎設施管理
- 階段管理:開發,測試,生產
- 倉庫管理:分支切換,分支保護(例如只容許合併不容許提交)
- 配置管理:每一個階段擁有本身的配置
- 文件過濾:排除過濾,包含獲取,替換過濾(替換指定文件中的內容,用戶不一樣階段的差別區分)
- 覆蓋刪除:覆蓋指定文件,刪除指定文件
- 內容優化:Grup, Webpack 優化,壓縮js, css,html5, 圖片雪碧圖…..
- 自動構建:編譯,測試,測試報告,打包
- 部署管理:節點管理,增量部署,差別部署,md5sum 校驗檢查
- 部署腳本:部署前腳本(中止),部署後腳本(啓動)或者環境初始化,解決部署依賴
- 時間線:誰,什麼時間,作了部署,能夠指定時間點隨時回撤到指定版本。
- 部署日誌:誰,什麼時間,作了什麼操做,產生什麼結果
- 部署報告:生產 Issue或Ticker 報告