我已经尝试了一段时间了。关于如何处理蓝色绿色部署的任何建议/提示。我看到terraform是如何通过aws上的自动缩放组来启用它的。但是我想在新的Asg上进行一些Cucumber验收测试,然后再将流量传送到它。如果我需要做回滚的话,是否有办法在地面上保留旧的asg一段时间。能用地形来完成吗..。提前谢谢。
发布于 2018-01-22 19:47:57
这完全取决于您如何部署代码。
(首先,IMHO,我不认为Terraform是适合这次行动的锤子。Terraform的责任是为您的应用程序构建必要的基础结构,而不是用来部署它的工具。但是,一如既往,“正确/最好的一个”将取决于许多因素,而且,取决于情况/规模,它可能是“足够好”的解决方案)
总括而言,我的建议是:
假设您已经配置了2个AutoScaling组。一个叫asg-blue,另一个叫asg-green。当前版本驻留在asg-blue上,在terraform中有一个指向它的aws_route53_record。您需要遵循以下步骤,每个步骤在下一个步骤之前都有一个terraform apply:
asg-green 上部署新版本的应用程序Launch Configuration上指出的AMI,也可能是您专门使用Terraform的任何其他方式。asg-green,aws_route53_record上的ASG/ELBasg-blue上所需的机器数量,以避免使用太多的资源这样您就可以进行B/G部署,但是对于每个部署,您至少需要在terraform中进行两次手动干预(部署新版本和更新域名)。
但是,使用此策略时,您应该非常小心,不要在当前使用的ASG上部署。
当然,如果您的terraform/aws是好的,那么您可以根据需要删除和创建它们,而不是重用as。
希望这有助于对整个过程有一个“大图”。但我建议您研究并开始使用更专注于部署的工具,比如AWS CodeDeploy。
发布于 2018-03-08 14:06:54
我有一个类似的问题,这个答案很有帮助。它概述了如何在Terraform中进行蓝绿色部署的模式。
但话虽如此,就我所知,并没有明确的最佳解决办法。我认为您的用例最常见的方法是有一个专用的“暂存”环境,它使用与生产环境非常接近的设置(共享相同的Terraform模块,但使用较小的自动缩放组)。您可以在最后的测试中使用它,甚至可以通过它路由一部分生产流量。
如果在准备过程中没有错误,那么您可以简化在生产中使用它,并希望您以前发现了最重要的错误。
https://devops.stackexchange.com/questions/3142
复制相似问题