9.3. 部署策略
9.3.1. 什么是部署策略?
部署策略是更改或升级应用程序的方法。其目的是在无需停机的前提下进行修改,从而使用户几乎不会注意到这些变化。
最常见的 策略是使用蓝绿部署。新版本(蓝色版本)上线进行测试和评估,同时用户仍然使用稳定版本(绿色版本)。准备就绪后,用户切换到蓝色版本。如果出现问题,您可以切回到绿色版本。
常见的替代策略是使用同时活跃的 A/B 版本,有些用户使用一个版本,而一些用户使用另一个版本。这可用于试验用户界面变化和其他功能,以获取用户反馈。它还可用来在影响有限用户的生产环境中验证正确的操作。
Canary 部署会测试新版本,但在检测到问题时,迅速回退到上一版本。这可以通过以上两个策略实现。
基于路由的部署策略不会缩放服务中的 pod 数量。为了保持所需的性能特性,部署配置可能需要扩展。
选择部署策略时需要考虑一些事项。
- 长时间运行的连接需要被安全处理。
- 数据库转换会很棘手,需要与应用程序一起执行并回滚。
- 如果应用是微服务混合且传统组件停机时间,则可能需要完成转换。
- 您需要基础架构来做到这一点。
- 如果您的测试环境没有被隔离,则可能会破坏到新版本和旧版本。
由于最终用户通常通过由路由器控制的路由访问应用程序,因此部署策略侧重于部署配置的功能或路由功能。
注重部署配置的策略会影响所有使用该应用程序的路由。侧重于路由功能的策略则会影响到单个的路由。
许多部署策略通过部署配置支持,一些额外的策略则通过路由器功能支持。本节将讨论基于部署配置的策略。
- Rolling 策略和 Canary 部署
- Recreate 策略
- Custom 策略
- 使用路由 进行蓝绿部署
- 使用路由进行/B Deployment 和 Canary 部署
- 一个 Service,多个部署配置
如果在部署配置上没有指定任何策略,则 Rolling 策略是使用的默认策略。
部署策略使用 就绪度检查 来确定新 pod 是否准备就绪。如果就绪度检查失败,部署配置将重试运行 Pod,直到超时为止。默认超时为 10m
,其值在 dc.spec.strategy.*params
的 TimeoutSeconds
中设置。