使用 AWS CLI 更新 ECS 服务,避免 CFN 漂移

问题描述 投票:0回答:1

目前,我使用resolve:ssm 通过CFN 部署了ECS 服务的第一个版本,以添加对容器映像标签和任务定义ARN 的动态引用。然后我在 Gitlab-ci 管道中使用 AWS cli 更新服务,这样我可以避免大多数漂移问题,但不是全部。完全避免漂移的最佳方法是什么?我可以更新 SSM 上的参数(在本例中为映像标签)并在 Gitlab 作业中调用“aws sam deploy”吗?

我使用动态引用是因为我想避免在 gitlab 的作业中更新 CFN 模板,然后提交它

谢谢:)

amazon-web-services gitlab-ci aws-cloudformation amazon-ecs
1个回答
0
投票

就我个人而言,我只是允许漂移发生。应用工作流程来防止应用 Cloudformation 更新导致服务更新时出现问题。

在云形成模板中,图像标签被定义为静态名称,就像环境名称一样,例如

dev
/
staging
/
production
。这永远不会改变。

通过 CICD 工作流程,构建新图像并使用唯一标签进行标记。该唯一标签用于更新服务。然后,在更新成功后,我们立即将 CFN 模板中使用的相同静态标签(例如

dev
/
staging
/
production
)添加到 ECR 中的新图像中。

这具有以下效果:

  • 由于模板使用静态标签值,CFN 永远不会认为它需要因为标签更改而更新服务
  • 通过确保 ECR 中 CFN 中使用的标签遵循应用于服务的当前映像,每当发生后续 CFN 更新并因任何其他原因导致服务更新时,它将使用已在使用的相同映像。

但是,技术上仍然存在偏差。

完全避免漂移的另一种选择是始终使用 CFN 来更新服务,并且从不在 CFN 之外更新服务。

© www.soinside.com 2019 - 2024. All rights reserved.