鍋圈利用 Zadig 治理環境平滑推進容器化進程
背景介紹
鍋圈食匯是火鍋燒烤食材超市品牌,是火鍋燒烤食材社區零售模式。鍋圈食匯以火鍋、燒烤食材為主,涵蓋休閑零食、生鮮、凈菜、飲食、小吃等商品的便利店連鎖系統;以互聯網+食材的 B2B、B2C 運行模式,線下門店與線上商城并行。
鍋圈食匯為廣大中小型餐飲企業提供 B 端食材供應,又服務了“宅、急、忙、懶、老”消費者。我們的系統既有 C 端也有 B 端,在快速發展的過程中,諸多環境的管理也成為研發的一大挑戰。
從 2021 年末開始,鍋圈開始從傳統部署方式向容器化轉型,在調研的過程中選中了 Zadig 作為容器化推廣過程中的環境治理工具。
痛點分析
在遷移容器前,我們面對諸多運維痛點:
- 環境管理復雜度高:因為迭代發展需要,存在 dev、test、uat、intg、pet、pre、prod 等諸多環境,發布過程管理費時費力
- 運維規范化難以推進:在快速發展過程中存在混部和配置不規范的問題,容易導致業務風險
- 運維成本高:多環境占用較多機器資源,造成成本上的壓力
而采用容器化模式,多環境應用可以混合部署,更小的計算開銷也就意味著更低的總體成本,資源可以更加高效的利用。同時可以落地標準化的流程和環境配置,來支持團隊日益增長的持續部署與測試需求。容器化還可以屏蔽底層的平臺,實現多云環境下的跨平臺支撐。
技術方案思考
那么如何在不影響現有開發周期的情況下進行容器化改造?
針對這個問題,我們運維團隊聯合架構團隊,商討了一系列的解決方案,一期容器化工程在盡量保持原有架構的情況下讓應用平滑遷移至容器環境。保留原有注冊中心和網關不變,使用 Podip 進行注冊并將 Pod 和原服務器的網絡打通,這樣可以逐步遷移應用的同時,已上容器的應用和未上容器的應用也可以保持原有架構正常通信。
關于工具的選型
在調研了多種環境治理工具后,最終選擇了 Zadig。
Zadig 對于我們來說有如下優勢:
- 界面友好,推廣給研發測試使用時可以簡單上手,且可以捕獲容器控制臺日志,研發測試人員能在Zadig 控制臺上方便快捷的查看日志。
- 能快速集成 LDAP,Jenkins,華為云 OBS 等系統,減少了遷移過程中的改造成本。
- 集群化部署,穩定性有保障,支持并發構建,可大幅度提高構建效率。
實踐 Zadig 的路徑
第一步:我們先將 Dev 開發環境切換至容器,應用發布方式將原有的發布包改為發布鏡像。
第二步:由于原來使用的是 Jenkins,為了實現快速集成和遷移,我們采用了 Zadig + Jenkins 的方案 ,快速實現從傳統發布方式到容器化發布方式的轉變。
第三步:利用 Zadig 集成打通原有 Git 倉庫,OBS,鏡像倉庫,LDAP 和 Jenkins,只需配置工作流即可快速實現應用部署到 K8s 集群內。其中集成 Git 倉庫可以快速拉取代碼、發布腳本進行發布;集成華為云 OBS 存儲儲存編譯生成的程序包制品;使用 LDAP 集成實現用戶管理;和 Jenkins 集成快速覆蓋原有發布流水線,減少構建的調試時間。
最后,分項目組逐個推廣:當前的策略是保障業務穩定前提下將應用逐個遷移至容器環境,遷移前也會做好相關配置準備,確保不影響原有程序開發測試周期、現有環境的穩定性,同時不對當前架構做大修大改,快速將應用遷移至容器環境,享受容器化帶來的優勢。
截至目前利用 Zadig 已完成了 5 個項目組容器化改造,2 條業務線用上 Zadig,其他項目陸續接入中。