蓝绿部署是一种广泛使用的软件发布管理策略。它涉及两个相同的硬件环境——一个处于活动状态并为用户提供服务,而另一个则保持待机状态。这种方法有助于顺利管理软件更新并降低系统停机的风险。
新代码最初发布到暂存环境,并在其中进行严格测试。一旦团队批准了更新的代码,就会调整路由器配置以将应用程序流量切换到现在的生产环境。如果出现任何问题,他们会恢复到以前的生产环境以继续使用原始软件版本。
蓝绿部署的一些值得注意的好处包括:
Kubernetes 作为开发、测试和生产部署的环境越来越受欢迎。尽管它简化了应用程序部署,但 Kubernetes 并未提供开箱即用的原生蓝绿部署功能。相反,它提供了一个支持滚动更新的 Deployment 对象,在某种程度上,它可以在不停机的情况下用最新版本替换应用程序的 pod。
滚动部署有一定的局限性。它们会使回滚具有挑战性,并且可能需要 Kubernetes 健康检查来衡量部署中 pod 的状态。此外,与纯蓝绿模式相比,滚动部署可能需要更长的时间,后者会立即切换到新版本。
要使用 Kubernetes 有效地实施蓝绿部署,请考虑以下工具:
Argo Rollouts是一组开源的 Kubernetes 控制器和自定义资源定义 (CRD),它添加了高级部署功能,例如蓝绿和金丝雀部署、实验和其他渐进式交付功能。它可选择与 Kubernetes 入口控制器和服务网格集成,以在更新期间管理流量。它甚至可以查询和解释来自其他系统的指标以验证关键绩效指标 (KPI) 并自动升级或回滚版本。
Flagger是一种渐进式交付工具,可自动执行在 Kubernetes 上运行的应用程序的发布过程。它通过在评估指标和执行一致性测试的同时逐步将流量转移到更新版本来降低将新软件版本引入生产的风险。 Flagger 支持金丝雀发布、A/B 测试、蓝绿部署等多种部署策略,并与各种 Kubernetes Ingress Controller、Service Mesh 和监控系统集成。
GitLab CI/CD是一个功能丰富的 DevOps 平台,可简化大型软件开发项目。除了代码存储库和问题跟踪功能外,GitLab 还提供 CI/CD 自动化,支持手动触发部署和计划部署到 Kubernetes 生产系统,包括渐进式部署策略,如蓝绿部署。
CircleCI是一个 CI/CD 平台,可帮助工程团队构建、测试和部署软件,同时通过其仪表板 UI 实时跟踪代码更改。 CircleCI 支持部署到 Kubernetes 集群,并与其他服务集成以实现功能标志、蓝绿和金丝雀部署等部署策略。
本文介绍了蓝绿部署模式、它的各种优势以及在 Kubernetes 环境中实现该技术的选项。通过考虑 Argo Rollouts、Flagger、GitLab CI/CD 或 CircleCI 等工具,您可以实现更顺畅的软件发布,最大限度地减少停机时间,并改善 Kubernetes 环境中开发人员和最终用户的整体体验。在探索这些工具时,请考虑您的软件开发管道的独特要求,以确定最符合您团队需求的解决方案。