小编And*_*nko的帖子

当新映像推送到 ECR 存储库时如何自动部署到 ECS Fargate

首先,这是特定于 CDK 的 - 我知道围绕这个主题有很多问题/答案,但没有一个是特定于 CDK 的。

鉴于最佳实践规定 Fargate 部署不应在 ECR 存储库中查找“最新”标签,那么在使用 ECR 作为源时如何设置 CDK 管道呢?

在多存储库应用程序中,每个服务都位于其自己的存储库中(这些存储库将有自己的 CDK CodeBuild 部署来设置构建并推送到 ECR),基础设施 CDK 管道如何知道新镜像被推送到ECR 存储库并能够将该新映像部署到 ECS Fargate 服务吗?

由于任务定义必须指定图像标签(否则它将查找可能不存在的“最新”),这似乎是不可能的。

作为一个具体的例子,假设我有以下 2 个存储库:

  • Cdk基础设施
    • 将为每个客户创建这些存储库之一,以为其应用程序创建完整的环境
  • 一些服务
    • 实际应用代码
    • 此存储库中只能存在一个并由多个 CdkInfra 项目重复使用
    • cdk定义 CodeBuild 项目的目录,因此当检测到推送到 master 时,将构建服务并将映像推送到 ECR

预期的工作流程如下:

  1. SomeService 存储库已更新,因此新映像已推送到 ECR
  2. CdkInfra 管道应检测到跟踪的 ECR 存储库具有新映像
  3. CdkInfra 管道更新 Fargate 任务定义以引用新图像的标签
  4. Fargate 服务拉取新映像并部署它

我知道目前 CodeDeploy 不支持 ECS 部署存在限制,因为 CFN 不支持 ECS 部署,但 CodePipelineActions 似乎能够设置一个 EcrSourceAction ,它可能能够实现此目的,但我一直无法得到这个工作至今。

这是否可能,或者我是否一直在等待 CFN 支持 ECS CodeDeploy 功能?

amazon-ecs amazon-ecr aws-fargate aws-cdk

5
推荐指数
1
解决办法
3886
查看次数

标签 统计

amazon-ecr ×1

amazon-ecs ×1

aws-cdk ×1

aws-fargate ×1