請首先閱讀:
- 一步步實施 DevOps (一)
- 一步步實施 DevOps (二)
- 一步步實施 DevOps (三)
- 一步步實施 DevOps (四)
自動化部署
本章節重點談自動化部署,每個人對自動化部署都有自己的了解,每個企業對自動化部署的需求也不同。
目前很多雲平台開始推出一些列 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 報告
版權聲明
轉載請與作者聯系,轉載時請務必标明文章原始出處和作者資訊及本聲明。