gitlab - 在 GitLab 中触发 CodeDeploy?
问题描述
我正在 AWS 上开发 CI/CD 管道。对于给定的信息,我必须使用 GitLab 作为存储库,并使用蓝/绿部署作为 ECS Fargate 的部署方法。我想使用 CodeDeploy(在 Cloudformation 的模板中预设)并通过每次提交推送到 GitLab 来触发它。我无法在我所在的地区使用 CodePipeline,因此使用 CodePipeline 对我不起作用。
我已经阅读了很多与 ECS fargate 和 B/G 部署相关的文档和网页。但似乎没有多少信息可以提供帮助。有没有人有相关经验?
解决方案
如果您的目标是零停机时间,那么 ECS 已经默认打包,但不是我所说的蓝/绿部署,而是滚动升级。您将能够控制健康实例的百分比,确保不停机,ECS 会从旧任务中排出连接并使用新版本配置新任务。
您的应用程序必须能够处理版本中的这种“二元性”,例如数据层、UX 等。
如果蓝/绿是一项基本要求,则必须将 CodeDeploy 和 ALB 与 ECS 结合使用。在不深入实施细节的情况下,这里是它的亮点:
- 您有两组:
Task Definitions
和Target Groups
(绑定到一个 ALB) Code Deploy
部署与绿色目标组绑定的新任务定义。保持蓝色不变。- 通过为新目标组配置测试侦听器来测试您的绿色部署。
- 测试完成后,将所有/增量流量从蓝色切换到绿色(ALB 规则/加权目标)
- 在下一次更新中重复相同的过程,除了您将从绿色变为红色。
我所描述的部分内容由 CodeDeploy 处理,但希望这能让您了解解决方案架构,从而了解如何实现自动化。ECS B/G .
推荐阅读
- ruby - 由于某种原因,我的实例在 Ruby 中没有保存
- javascript - 如何在 Vue 中从 JSON 构建动态 HTML 控件?
- c - 将文字传递给 C 中的指针
- docker - 将 docker link 命令转换为 docker-compose.yml
- python - python中的回文范围
- javascript - 为什么不向用户显示?不和谐.js
- html - 在中心显示文本,但在屏幕尺寸缩小时左对齐
- google-sheets - 在谷歌表格中如何找到 30 天内最高股价的日期
- excel - Excel 365 - 搜索表对每一行返回 true
- c - GNU GCC 编译器 - 了解结构中的对齐属性