【问题标题】:AWS Deploy ECS with Updated ImageAWS 使用更新的映像部署 ECS
【发布时间】:2019-01-25 00:44:42
【问题描述】:

似乎必须为每次服务更新提供新的完整任务定义。即使大多数时候新部署只包含对底层 docker 镜像之一的更新

虽然这是可以理解的核心架构选择。这很麻烦。由于任务定义的完整 JSON 规范相当复杂,是否有一个命令行选项可以让这更容易?

现在,开发人员需要提供复杂的脚本和部署编排,以在他们的 CI/CD 流程中完成这项相对常规的任务

我看到HereHere 的尝试。这些解决方案似乎不适用于所有情况(例如,对于 Fargate 启动)

我知道,如果更新后的图像使用重复使用相同的标签,这个问题会变得更容易,但是在重视可再现性和可听性的开发文化中,这根本不是一个合理的选择

除了利用 AWS API 和 JSON 操作库之外,没有其他选择吗?

编辑看来这个项目做得相当不错https://github.com/fabfuel/ecs-deploy

【问题讨论】:

    标签: amazon-web-services continuous-deployment amazon-ecs


    【解决方案1】:

    我找到了一些方法

    1. 正如我在评论中提到的,根据 Github 链接使用 ecs-deploy 脚本

    2. 通过 awscli 上的 --generate-cli-skeleton 选项创建任务定义。 填写除 execution-rule-arntask-role-arnimage

    3. 以外的所有详细信息

    这些不能填写,因为它们会在每次提交或您要部署到的每个环境中发生变化

    将此骨架提交到 git,因此它是 CI 工作区的一部分

    然后使用 JSON 遍历/解析库或实用程序(例如 https://jqplay.org/)在构建时在 CI 上替换 roleArn 和图像名称

    【讨论】:

      【解决方案2】:

      使用https://github.com/fabfuel/ecs-deploy

      如果您只想更新现有任务的标签:

      ecs deploy <CLUSTER NAME> <SERVICE NAME> --region <REGION NAME> --tag <NEW TAG>
      

      例如 ecs deploy default web-service --region us-east-1 --tag v2.0

      在您的 ci/cd 中,您使用 git hash: 使用git rev-parse HEAD,将返回一个像这样的哈希:d63c16cd4d0c9a30524c682fe4e7d417faae98c9

      docker build -t image-name:$(git rev-parse HEAD) .
      docker push image-name:$(git rev-parse HEAD)
      

      并在任务上使用相同的标签:

      ecs deploy default web-service --region us-east-1 --tag $(git rev-parse HEAD)
      

      【讨论】:

        猜你喜欢
        • 2019-09-10
        • 2020-12-30
        • 2021-12-11
        • 2020-06-05
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 2019-05-25
        • 1970-01-01
        相关资源
        最近更新 更多