天天看點

一步步實施 DevOps (五)請首先閱讀:

請首先閱讀:

  1. 一步步實施 DevOps (一)
  2. 一步步實施 DevOps (二)
  3. 一步步實施 DevOps (三)
  4. 一步步實施 DevOps (四)

自動化部署

本章節重點談自動化部署,每個人對自動化部署都有自己的了解,每個企業對自動化部署的需求也不同。

目前很多雲平台開始推出一些列 DevOps 工具,體驗了一下,仍然處在初級階段,也不十分成熟。嚴格的說他們實作的 CD (持續部署)。

前面講過持續內建不是 DevOps,這裡我要說持續部署也不是 DevOps。CD是從CI中分離出來的,将部署單獨提煉出來。

自動化部署遠比 CD 要複雜,涉及包括:

  1. 網絡層:網絡裝置管理,負載均衡切換,路由表管理
  2. 系統層:基礎設施,作業系統,軟體運作環境,
  3. 軟體層:軟體部署,CD部分
  4. 緩存層:緩存的重新整理
  5. 搜尋層:重建全文索引
  6. 資料層:資料庫結構管理,資料庫資料管理
  7. 日志層:誰,什麼時間,做了什麼操作,結果怎樣
  8. 除此之外,管理上還需要提案和審批流程等等

是以 CD (持續部署)解決不了企業的生産環境自動化部署需求,CD緊緊是CI (持續內建)運作完成後,将建構物部署到指定的運作環境中。通常CD并不提供回撤功能,是以極少由企業使用 CD 部署生産環境。

Git -> 編譯 -> 測試 -> 打包 -> 建構物 -> 部署 -> 運作

CI/CD 的流水線作業隻能部署單一項目,對于大型網站就無能為例,例如很多大型網站:

  1. 建構過程非常複雜,不僅僅是一個項目打包, 而是需要多個子產品,處理複雜的配置過程。
  2. 一次部署多台伺服器,每個伺服器可能有多個執行個體,執行個體間互相依賴關系
  3. 需要遵守嚴格的部署和啟動順序
  4. 記錄部署日志,檔案的新增,覆寫,删除
  5. 部署時間點
  6. 更新不僅僅是代碼,還有資料庫,緩存……
  7. 需要改變負載均衡裝置節點,設定防火牆政策
  8. 需要有完備的回撤方案
  9. 除此之外好虛考慮增量部署和差異部署,例如部署100mb 以上的大檔案,甚至GB尺寸的檔案

很多 DevOps 方案注重 Docker,K8s解決方案。但實際情況 Docker 并不适用于所有場景,更多是實體伺服器,虛拟機,雲主機,刀片伺服器…

使用 Docker 的前提是,Docker必須部署在宿主主機上,在雲主機中部署 Docker 意義不大。

很多企業大量使用雲主機,對 Docker 并無強烈的需求。

運維需要怎樣的自動化部署工具:

  1. 項目管理:更新提案,工作流轉,工作審批
  2. 備份管理:任何生産環境部署前都需要備份,必須實作增量備份和差異備份。
  3. 環境管理:環境部署,基礎設施管理
  4. 階段管理:開發,測試,生産
  5. 倉庫管理:分支切換,分支保護(例如隻允許合并不允許送出)
  6. 配置管理:每個階段擁有自己的配置
  7. 檔案過濾:排除過濾,包含擷取,替換過濾(替換指定檔案中的内容,使用者不同階段的差異區分)
  8. 覆寫删除:覆寫指定檔案,删除指定檔案
  9. 内容優化:Grup, Webpack 優化,壓縮js, css,html5, 圖檔雪碧圖…..
  10. 自動建構:編譯,測試,測試報告,打包
  11. 部署管理:節點管理,增量部署,差異部署,md5sum 校驗檢查
  12. 部署腳本:部署前腳本(停止),部署後腳本(啟動)或者環境初始化,解決部署依賴
  13. 時間線:誰,什麼時間,做了部署,可以指定時間點随時回撤到指定版本。
  14. 部署日志:誰,什麼時間,做了什麼操作,産生什麼結果
  15. 部署報告:生産 Issue或Ticker 報告

版權聲明

轉載請與作者聯系,轉載時請務必标明文章原始出處和作者資訊及本聲明。