【发布时间】:2019-12-15 15:49:36
【问题描述】:
如果我为 ECS 创建新的任务定义,有没有办法删除服务的所有现有任务定义并添加新定义,还是必须创建全新的服务?
我遇到的问题是,我陷入了一个漫长的开发循环,我更新了一个容器,创建了一个新的任务定义修订版,发现自己必须为此创建一个全新的服务、负载均衡器、目标组等新的任务定义。有没有办法,也许可以告诉现有服务使用任务定义的最新版本,而不必执行上述所有操作?
【问题讨论】:
标签: amazon-ecs
如果我为 ECS 创建新的任务定义,有没有办法删除服务的所有现有任务定义并添加新定义,还是必须创建全新的服务?
我遇到的问题是,我陷入了一个漫长的开发循环,我更新了一个容器,创建了一个新的任务定义修订版,发现自己必须为此创建一个全新的服务、负载均衡器、目标组等新的任务定义。有没有办法,也许可以告诉现有服务使用任务定义的最新版本,而不必执行上述所有操作?
【问题讨论】:
标签: amazon-ecs
是的,在您上传的 docker 镜像上使用“最新”标签。
然后确保您的任务定义对其容器映像使用“最新”标签。
在更新 docker 镜像之后,您需要简单地“循环”服务。在 AWS 控制台中,您可以更新服务并简单地选中向导中的“强制新部署”复选框,而无需更改任何其他内容。 AWS 将停止现有任务并启动将使用当前版本的 docker 映像的新任务。对于非网络任务,这通常很快。 Web 任务需要更长的时间才能“耗尽”。在任何情况下,您都不需要以这种方式创建新的任务定义或更新服务,除非重新部署。
还可以通过所有 CLI 和 API 工具进行强制新部署。
【讨论】:
创建任务定义的新版本后,打开服务并单击编辑,然后从下拉框中选择新版本,然后选中强制部署并单击更新按钮。请注意,新任务将处于挂起状态,因为资源不足;如果是这种情况,则选择当前正在运行的任务并停止它。
【讨论】: