首页 > 解决方案 > 在 GitLab 中触发 CodeDeploy?

问题描述

我正在 AWS 上开发 CI/CD 管道。对于给定的信息,我必须使用 GitLab 作为存储库,并使用蓝/绿部署作为 ECS Fargate 的部署方法。我想使用 CodeDeploy(在 Cloudformation 的模板中预设)并通过每次提交推送到 GitLab 来触发它。我无法在我所在的地区使用 CodePipeline,因此使用 CodePipeline 对我不起作用。

我已经阅读了很多与 ECS fargate 和 B/G 部署相关的文档和网页。但似乎没有多少信息可以提供帮助。有没有人有相关经验?

标签: gitlabgitlab-ciaws-code-deployblue-green-deployment

解决方案


如果您的目标是零停机时间,那么 ECS 已经默认打包,但不是我所说的蓝/绿部署,而是滚动升级。您将能够控制健康实例的百分比,确保不停机,ECS 会从旧任务中排出连接并使用新版本配置新任务。

您的应用程序必须能够处理版本中的这种“二元性”,例如数据层、UX 等。

如果蓝/绿是一项基本要求,则必须将 CodeDeploy 和 ALB 与 ECS 结合使用。在不深入实施细节的情况下,这里是它的亮点:

  • 您有两组:Task DefinitionsTarget Groups(绑定到一个 ALB)
  • Code Deploy部署与绿色目标组绑定的新任务定义。保持蓝色不变。
  • 通过为新目标组配置测试侦听器来测试您的绿色部署。
  • 测试完成后,将所有/增量流量从蓝色切换到绿色(ALB 规则/加权目标
  • 在下一次更新中重复相同的过程,除了您将从绿色变为红色。

我所描述的部分内容由 CodeDeploy 处理,但希望这能让您了解解决方案架构,从而了解如何实现自动化。ECS B/G .


推荐阅读