【发布时间】:2019-05-25 18:11:48
【问题描述】:
首先,我在 AWS 中创建了一个包含 Docker 映像的存储库。
然后我创建了一个任务定义和一个 ECS/EC2 集群。最后,我使用集群和任务定义创建了一个服务。工作正常。
如何在现有集群上重新部署更新的 Docker 映像?
仅使用新(或现有)任务“更新”服务是行不通的。即使使用“强制新部署”选项也无效。
【问题讨论】:
标签: amazon-web-services amazon-ecs
首先,我在 AWS 中创建了一个包含 Docker 映像的存储库。
然后我创建了一个任务定义和一个 ECS/EC2 集群。最后,我使用集群和任务定义创建了一个服务。工作正常。
如何在现有集群上重新部署更新的 Docker 映像?
仅使用新(或现有)任务“更新”服务是行不通的。即使使用“强制新部署”选项也无效。
【问题讨论】:
标签: amazon-web-services amazon-ecs
根据 AWS 文档,您不能真正做到这一点... 你可以在这里阅读 - https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html
仅通过“创建任务定义的新版本” 任务定义 -> -> 创建新修订版
它将在你的仓库中使用“最新”版本(当然最好用最新的标签)或自己添加标签。
顺便说一句-除非您已经准备好这样做,否则我会使用这些更新的自动化过程作为 ci/cd 和 json 的一部分。
【讨论】:
如果您未在容器定义中指定 ECR 图像的标签,它将始终获取最新的。因此,您有两种方法可以实现重新部署。
确保你的服务有足够的空间来部署一个新任务,例如,如果你想要的Number of tasks是1,那么你必须将Maximum percent设置为200,意味着你可以允许1 * 200 % = 在进行部署时同时运行 2 个任务,然后只需键入以下命令:
aws ecs update-service --cluster <cluster name> --service <service name> --force-new-deployment
或者在你将镜像更新到 ECR 之后,你可以手动杀死现有的任务并创建一个新的(通常创建过程应该由 ECS 自己完成,只要你的 Auto Scaling配置正确)。
【讨论】: