每个 Spinnaker 部署策略的含义是什么?
What does each Spinnaker deployment strategy mean?
我想知道每种策略的含义以及它们在幕后如何运作(即 Highlander、Red/Black、Rolling Push)。官方网站上有这些信息会非常有用。
谢谢
据我了解:
- Highlander:当新的 Auto Scaling 组 (ASG) 正常运行时,所有旧的 ASG 会自动销毁。
- Red/Black:启动新的ASG,进行一些手动(或比Highlander更复杂)的验证步骤,完成这些步骤后,才手动删除旧的ASG。 Netflix 博客 post 此处:http://techblog.netflix.com/2013/08/deploying-netflix-api.html
- 滚动推送:“旧实例被优雅地删除并被一次一两个新实例替换,直到 ASG 中的所有实例都被替换。” Netflix 博客 post 此处:http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html
在我的公司,我们只定期使用 Highlander 和 Red/Black。
那里有可以帮助您解决问题的有用信息,我会尽力在下面进行总结。
部署类型和策略介绍
"There are a variety of techniques to deploy new applications to
production, so choosing the right strategy is an important decision,
weighing the options in terms of the impact of change on the system,
and on the endusers."
- Recreate:(也称为 Highlander)
Version A
终止,然后 version B
推出。
- Ramped(也称为 Rolling-Update 或 Incremental):
Version B
正在慢慢推出并取代 version A
.
- Blue/Green(也称为 Red/Black):
Version B
与 version A
,则流量切换为version B
.
- Canary:
Version B
已发布给一部分用户,然后进行全面推出。
- A/B测试:
Version B
在特定条件下发布给部分用户。
- Shadow:
Version B
与 version A
一起接收 real-world 流量并且不影响响应。
部署类型和策略摘要Table
Spinnaker 部署策略
Spinnaker 将 cloud-native 部署策略视为第一个 class 构造,处理底层编排,例如验证健康检查、禁用旧服务器组和启用新服务器组。
Spinnaker 支持的部署策略(正在积极开发中):
- 汉兰达
- Red/Black (a.k.a.Blue/Green)
- 滚动Red/Black
- 金丝雀
如下图所示:
Highlander: 这个部署策略恰如其分地以电影 Highlander 的名字命名,因为那句名言“只能有一个”。通过这种策略,单个集群前面有一个负载均衡器。 Highlander 在部署完成后销毁之前的集群。这是最简单的策略,当回滚速度不重要或需要降低基础架构成本时,它很有效。
Red/Black: 此部署策略也称为 Blue/Green。 Red/Black 策略使用负载均衡器和两个目标集群/服务器组(称为 red/black 或 blue/green)。负载平衡器将流量路由到活动(已启用)集群/服务器组。然后,一个新的部署替换了禁用集群/服务器组中的服务器(w/K8s provider -> Replica Sets & Pods)。当新启用的集群/服务器组准备就绪时,负载均衡器将流量路由到该集群,之前的集群将被禁用。当前禁用的集群/服务器组(以前启用的集群/服务器组)由 spinnaker 保留,以防下一个 X 部署需要回滚(这是一个可配置参数)。
滚动 Red/Black: 速度较慢 red/black,可能的验证点更多。过程和red/black一样,只是流量切换的方式不同。上图说明了这种差异。蓝色是启用的集群。蓝色实例逐渐被绿色集群中的新实例替换,直到所有启用的实例都是 运行 最新版本。推出可能以 20% 的增量发生,因此它可以是 80/20、60/40、40/60、20/80 或 100%。在推出完成之前,两个 blue/green 集群都会收到流量。
Canary: 部署是一个过程,其中更改被部分部署,然后在继续之前根据基线指标进行测试。此过程通过将您的爆炸半径限制在 user-base 的一小部分来降低更改完全推出后会导致问题的风险。基线指标是在配置金丝雀时设置的。指标可能是错误计数或延迟。 Higher-than-baseline 错误计数或延迟峰值会杀死金丝雀,从而停止管道。
我想知道每种策略的含义以及它们在幕后如何运作(即 Highlander、Red/Black、Rolling Push)。官方网站上有这些信息会非常有用。
谢谢
据我了解:
- Highlander:当新的 Auto Scaling 组 (ASG) 正常运行时,所有旧的 ASG 会自动销毁。
- Red/Black:启动新的ASG,进行一些手动(或比Highlander更复杂)的验证步骤,完成这些步骤后,才手动删除旧的ASG。 Netflix 博客 post 此处:http://techblog.netflix.com/2013/08/deploying-netflix-api.html
- 滚动推送:“旧实例被优雅地删除并被一次一两个新实例替换,直到 ASG 中的所有实例都被替换。” Netflix 博客 post 此处:http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html
在我的公司,我们只定期使用 Highlander 和 Red/Black。
那里有可以帮助您解决问题的有用信息,我会尽力在下面进行总结。
部署类型和策略介绍
"There are a variety of techniques to deploy new applications to production, so choosing the right strategy is an important decision, weighing the options in terms of the impact of change on the system, and on the endusers."
- Recreate:(也称为 Highlander)
Version A
终止,然后version B
推出。
- Ramped(也称为 Rolling-Update 或 Incremental):
Version B
正在慢慢推出并取代version A
.
- Blue/Green(也称为 Red/Black):
Version B
与version A
,则流量切换为version B
.
- Canary:
Version B
已发布给一部分用户,然后进行全面推出。
- A/B测试:
Version B
在特定条件下发布给部分用户。
- Shadow:
Version B
与version A
一起接收 real-world 流量并且不影响响应。
部署类型和策略摘要Table
Spinnaker 部署策略
Spinnaker 将 cloud-native 部署策略视为第一个 class 构造,处理底层编排,例如验证健康检查、禁用旧服务器组和启用新服务器组。
Spinnaker 支持的部署策略(正在积极开发中):
- 汉兰达
- Red/Black (a.k.a.Blue/Green)
- 滚动Red/Black
- 金丝雀
如下图所示:
Highlander: 这个部署策略恰如其分地以电影 Highlander 的名字命名,因为那句名言“只能有一个”。通过这种策略,单个集群前面有一个负载均衡器。 Highlander 在部署完成后销毁之前的集群。这是最简单的策略,当回滚速度不重要或需要降低基础架构成本时,它很有效。
Red/Black: 此部署策略也称为 Blue/Green。 Red/Black 策略使用负载均衡器和两个目标集群/服务器组(称为 red/black 或 blue/green)。负载平衡器将流量路由到活动(已启用)集群/服务器组。然后,一个新的部署替换了禁用集群/服务器组中的服务器(w/K8s provider -> Replica Sets & Pods)。当新启用的集群/服务器组准备就绪时,负载均衡器将流量路由到该集群,之前的集群将被禁用。当前禁用的集群/服务器组(以前启用的集群/服务器组)由 spinnaker 保留,以防下一个 X 部署需要回滚(这是一个可配置参数)。
滚动 Red/Black: 速度较慢 red/black,可能的验证点更多。过程和red/black一样,只是流量切换的方式不同。上图说明了这种差异。蓝色是启用的集群。蓝色实例逐渐被绿色集群中的新实例替换,直到所有启用的实例都是 运行 最新版本。推出可能以 20% 的增量发生,因此它可以是 80/20、60/40、40/60、20/80 或 100%。在推出完成之前,两个 blue/green 集群都会收到流量。
Canary: 部署是一个过程,其中更改被部分部署,然后在继续之前根据基线指标进行测试。此过程通过将您的爆炸半径限制在 user-base 的一小部分来降低更改完全推出后会导致问题的风险。基线指标是在配置金丝雀时设置的。指标可能是错误计数或延迟。 Higher-than-baseline 错误计数或延迟峰值会杀死金丝雀,从而停止管道。