【问题标题】:ECS Service restart after deploy new version of docker image部署新版docker镜像后ECS服务重启
【发布时间】:2019-02-16 20:56:32
【问题描述】:

各位, 我有带有服务和实例的 ec2 集群。任务基于 ecr 中分配的最新版本的 docker 文件。现在,我正在寻找最简单的方法来在部署最新图像时使用自动“刷新”服务完成我的管道。我找不到 aws 的任何功能来解决这个问题,但我发现了这个:https://github.com/fdfk/ecsServiceRestart 但不幸的是它不起作用(无法与我的服务通信)。但是这个案例给了我很大的启发,因为根据作者的方法,这个解决方案在更新之前做了一个重复的服务,所以它提供了像 HA 这样的东西而没有任何停机时间。伙计们,有没有可能在不停机的情况下完成这些步骤?

  1. 部署新版本的映像,
  2. 服务检测图像的新版本,
  3. 使用新版本实现自动刷新

【问题讨论】:

  • 您可以使用 CodeDeploy 和 CloudFormation 实现这一目标。这取决于您的管道是如何设计的。您可能会对 AWS 博客上的这篇文章感兴趣:“部署阶段使用 CloudFormation 创建一个新的任务定义修订版,该修订版指向新构建的 Docker 容器映像,并更新 ECS 服务以使用新的任务定义修订版。” aws.amazon.com/blogs/compute/…

标签: amazon-web-services docker amazon-ec2 amazon-ecs


【解决方案1】:

我终于找到了实现目标的最佳方法。所以这很容易——我刚刚使用了我在管道中采用的 ecs-deploy https://github.com/fabfuel/ecs-deploy。我设置了更长的超时时间,没有警告标志,这个脚本为我做了所有需要的事情。在我的示例中,我有一个包含 3 个实例和 1 个服务的集群,其中包含两个正在运行的任务(负载均衡器后面的两个相同节点)。当我在 ECR 中更新我的 docker 映像时,ecs-deploy 会运行自动更新第一个实例,并且根据蓝绿部署,它也会使用负载均衡器链接一个一个地更新下一个实例。所以通过这种方式我在接受合并请求后实现了完全自动化的部署(当然我跳过了这个描述中的几个步骤)。我希望这对某人有所帮助。干杯!

【讨论】:

  • 请为您的解决方案提供任何博客文章/步骤?
猜你喜欢
  • 2015-10-07
  • 2020-08-19
  • 2020-11-22
  • 2016-05-30
  • 1970-01-01
  • 2019-09-10
  • 2020-08-11
  • 2016-04-22
  • 1970-01-01
相关资源
最近更新 更多