使用 ECS CodeDeploy Blue/Green 做金丝雀部署时, 如何进行自定义节点检查

0

【以下的问题经过翻译处理】 我已经通过CodePipeline和CodeDeploy实现了自动CI/CD的ECS Fargate集群运行。基础架构由terraform管理,运行良好。我的部署策略是蓝/绿,我选择了 CodeDeployDefault.ECSCanary10percent5Minutes 部署配置(如此处所述:https://docs.aws.amazon.com/AmazonECS/latest/userguide/deployment-type-bluegreen.html)。蓝色和绿色任务集之间的渐进流量转移运行良好,但是我没有找到任何影响金丝雀检查的方法(例如,如果有错误则中止部署),也没有在部署过程中引入自定义金丝雀检查的方式。

此外,我发现关于金丝雀如何确定部署的健康状况的信息非常少。我希望在部署过程中进行一系列检查,并在出现任何问题时中止部署。

我的问题是:

  • 默认情况下,金丝雀发布如何被认为是健康/不健康的(假设:alb目标组健康检查?)
  • 对于金丝雀发布,观察部署健康状况并执行自动回滚的最佳做法是什么?当前是否可能实现?

通过google一番,似乎可以通过向部署组添加CloudWatch Alarms和AlarmConfiguration来实现(如此处所述:https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups-configure-advanced-options.html)。这是实现此功能的惯用方式吗?如果是,如何确保CloudWatch警报检查仅针对当前正在部署的服务版本?

profile picture
专家
已提问 3 个月前8 查看次数
1 回答
0

【以下的回答经过翻译处理】 另一个选项是在应用程序的AppSpec文件中添加"AfterAllowTraffic"生命周期钩子。此钩子将在流量开始流向您的金丝雀任务时调用。您可以在Lambda函数中使用任何自定义逻辑。为了完成生命周期钩子,您的Lambda函数(或其代理)必须调用CodeDeploy的PutLifecycleEventHookExecutionStatus API动作,成功或失败均可。

您可以在此处找到有关此内容的教程(https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment-with-hooks.html),并在此处找到生命周期钩子参考(https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html )-appspec-hooks-ecs).

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则