首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >terraform是否支持蓝色绿色部署并从盒子中滚回原处?

terraform是否支持蓝色绿色部署并从盒子中滚回原处?
EN

DevOps用户
提问于 2018-01-22 14:39:58
回答 2查看 3.4K关注 0票数 7

我已经尝试了一段时间了。关于如何处理蓝色绿色部署的任何建议/提示。我看到terraform是如何通过aws上的自动缩放组来启用它的。但是我想在新的Asg上进行一些Cucumber验收测试,然后再将流量传送到它。如果我需要做回滚的话,是否有办法在地面上保留旧的asg一段时间。能用地形来完成吗..。提前谢谢。

EN

回答 2

DevOps用户

发布于 2018-01-22 19:47:57

这完全取决于您如何部署代码。

(首先,IMHO,我不认为Terraform是适合这次行动的锤子。Terraform的责任是为您的应用程序构建必要的基础结构,而不是用来部署它的工具。但是,一如既往,“正确/最好的一个”将取决于许多因素,而且,取决于情况/规模,它可能是“足够好”的解决方案)

总括而言,我的建议是:

  1. 在“未使用”环境中部署应用程序
  2. 试试看
  3. 更改域名以指向它

假设您已经配置了2个AutoScaling组。一个叫asg-blue,另一个叫asg-green。当前版本驻留在asg-blue上,在terraform中有一个指向它的aws_route53_record。您需要遵循以下步骤,每个步骤在下一个步骤之前都有一个terraform apply

  • asg-green 上部署新版本的应用程序
    • 也就是说,更新部署应用程序版本所需的所有内容。它可能是您在Launch Configuration上指出的AMI,也可能是您专门使用Terraform的任何其他方式。

  • 测试一切是否都按预期运行,
    • 在这里,您可以使用为每个ASG/ELB提供的域名,或者已经在terraform上配置的域名。

  • 将域名更新为asg-greenaws_route53_record上的ASG/ELB
  • 减少asg-blue上所需的机器数量,以避免使用太多的资源
    • 根据您的情况,可以为0台计算机进行配置。

这样您就可以进行B/G部署,但是对于每个部署,您至少需要在terraform中进行两次手动干预(部署新版本和更新域名)。

但是,使用此策略时,您应该非常小心,不要在当前使用的ASG上部署。

当然,如果您的terraform/aws是好的,那么您可以根据需要删除和创建它们,而不是重用as。

希望这有助于对整个过程有一个“大图”。但我建议您研究并开始使用更专注于部署的工具,比如AWS CodeDeploy。

票数 8
EN

DevOps用户

发布于 2018-03-08 14:06:54

我有一个类似的问题,这个答案很有帮助。它概述了如何在Terraform中进行蓝绿色部署的模式。

但话虽如此,就我所知,并没有明确的最佳解决办法。我认为您的用例最常见的方法是有一个专用的“暂存”环境,它使用与生产环境非常接近的设置(共享相同的Terraform模块,但使用较小的自动缩放组)。您可以在最后的测试中使用它,甚至可以通过它路由一部分生产流量。

如果在准备过程中没有错误,那么您可以简化在生产中使用它,并希望您以前发现了最重要的错误。

票数 2
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/3142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档