使用 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
EXPERTE
gefragt vor 5 Monaten28 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen