将更新的容器部署到现有的CDK堆栈中。

0

【以下的问题经过翻译处理】 我部署了一个使用ecs_patterns.ApplicationLoadBalancedFargateService的Fargate服务,现在我想滚动部署一个已经推送到该服务的ECR repo的新容器。我有一个流水线来为该服务生成新的容器,但是当我运行cdk synth并在部署之后时,CDK在生成CloudFormation变更集时无法检测到更改,因为容器标签没有改变(最新版)。我更新了构建,使其将唯一的容器标签推送到SecretsManager,并在部署过程中解析它,但是这也不起作用,因为在变更集创建时没有引用到标签(只有在部署时才能获取标签)。最好的方法是让CDK动态传递标签来部署新版本的容器,还是应该使用CodeDeploy?

profile picture
专家
已提问 4 年前56 查看次数
1 回答
0

【以下的回答经过翻译处理】 我会找到一种方法,在您的 CDK 应用程序中引用与您的图像构建/标记/推送阶段中使用的相同的图像标记。例如,如果您有一个 Docker 阶段,使用环境变量 CODEBUILD_RESOLVED_SOURCE_VERSION 作为标记推送图像,像这样:docker build -t $IMAGE_REPO_NAME:$CODEBUILD_RESOLVED_SOURCE_VERSION .docker push $IMAGE_REPO_NAME:$CODEBUILD_RESOLVED_SOURCE_VERSION然后,您可以在 CDK 应用程序中引用该标记:const tag = process.env.CODEBUILD_RESOLVED_SOURCE_VERSION;const image = ecs.ContainerImage.fromEcrRepository(ecrRepo, tag);new ApplicationLoadBalancedFargateService(this, 'Service', { taskImageOptions: { image: image, ... }, ...});

profile picture
专家
已回答 4 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则