gpt4 book ai didi

amazon-web-services - 如何在不更新 docker 镜像的情况下触发 ECS 蓝/绿部署?

转载 作者:行者123 更新时间:2023-12-03 07:30:51 27 4
gpt4 key购买 nike

我正在尝试通过 CloudFormation 创建 ECS 蓝/绿部署设置。我发现这个文档提到 ECS 蓝/绿部署可以由 CloudFormation 处理,而无需显式创建 CodeDeploy 应用程序和部署组。

引用:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html

https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments-create-ecs-cfn.html

它提到,仅当需要重新创建以下资源之一时才会触发蓝/绿部署:

  • AWS::ECS::TaskDefinition
  • AWS::ECS::TaskSet

我的问题是,如果我的 docker 镜像没有更改(因为它始终具有“最新”版本),假设任务定义不会更改,那么我如何触发 CloudFormation ECS 蓝/绿部署?

最佳答案

目前,使用 CloudFormation 的 ECS 蓝/绿部署设置无法实现所需的行为,因为我们无法在不更新 docker 镜像标签的情况下触发任务定义更改。

另一种方法是使用显式 CodeDeploy 应用程序来处理 ECS 蓝/绿部署。

在 CodePipeline 构建阶段,它可以选择更新 docker 镜像标签并创建一个指定镜像 URI 的“imageDetail.json”。在部署阶段,CodeDeploy 将使用图像 URI 更新 taskdef.json,从而创建新的任务定义。这将依次使用更新后的任务定义更新 appspec.yaml。然后,这将使用更新的任务定义和 Docker 镜像触发 ECS 蓝/绿部署。

我已将相关示例 CloudFormation 模板放在 GitHub 上以供引用。除了 CodeDeploy 部署组的创建之外,大多数基础设施创建都可以使用 CloudFormation 进行简化。 CloudFormation尚不支持创建蓝/绿部署组,因此我们必须使用CLI创建它。

创建 ECS 集群、任务定义和服务,并在应用程序负载均衡器后面公开 ECS 集群

https://github.com/patrickpycheung/aws/blob/main/ECS/Create_ECS_Cluster.yaml

创建 CodeDeploy 应用程序

https://github.com/patrickpycheung/aws/blob/main/CodeDeploy/Create_CodeDeploy_Application.yaml

创建 CodeDeploy 部署组

https://github.com/patrickpycheung/aws/blob/main/CodeDeploy/Create_Sampe_Deployment_Group_CLI_Command.txt https://github.com/patrickpycheung/aws/blob/main/CodeDeploy/Create_Deployment_Group_CLI_Param.json

为 ECS 蓝/绿部署创建 3 阶段 CodePipeline

https://github.com/patrickpycheung/aws/blob/main/CodePipeline/Create_CodePipeline.yaml https://github.com/patrickpycheung/aws/blob/main/CodeBuild/Create_CodeBuild_Project.yaml

关于amazon-web-services - <AWS CloudFormation> 如何在不更新 docker 镜像的情况下触发 ECS 蓝/绿部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66979637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com