从事运维工作八年,有丰富的云上架构设计和运维经验:阿里云、AWS、百度云,小米云。有丰富的容器运维经验。目前正在寻找新的工作机会,如有意向请联系专用邮箱:mokocloud@163.com
# 背景介绍
锅圈食汇是火锅烧烤食材超市品牌,是火锅烧烤食材社区零售模式。锅圈食汇以火锅、烧烤食材为主,涵盖休闲零食、生鲜、净菜、饮食、小吃等商品的便利店连锁系统;以互联网+食材的 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,其他项目陆续接入中。
# 未来展望
目前锅圈还在将开发测试环境迁移至容器环境的阶段,已初见成效。
非常感谢 Zadig 小伙伴一路以来的支持,遇到问题及时解决。后续我们也会继续使用 Zadig 作为治理平台辅助其他环境的迁移,完成研发的容器化落地。