新 ECS 任务定义的 CI/CD

Posted

技术标签:

【中文标题】新 ECS 任务定义的 CI/CD【英文标题】:CI/CD for new ECS task Definations 【发布时间】:2020-03-21 11:12:50 【问题描述】:

我有 Jenkins 管道,它构建 Spring Boot 应用程序的 Docker 映像并将该映像推送到 AWS ECR。我们创建了 ECS 集群,该集群从 ECR 存储库获取该映像并使用 ECS 任务和服务运行容器。

我们已经手动创建了 ECS 集群。但是现在我希望每当我的 CICD 将新图像推送到 ECR 存储库时,它应该获取新图像并创建新的任务定义并自动运行。有什么方法可以实现这一点?

【问题讨论】:

【参考方案1】:

但是现在我希望每当我的 CICD 将新图像推送到 ECR 时 存储库它应该采用新图像并创建新的任务定义 并自动运行。有什么方法可以做到这一点?

就这一步而言,使用code pipeline 会更容易,因为 Jenkins 中没有可以检测 ECR 图像变化的开箱即用功能。

已完成的管道会检测到您的图片的更改,即 存储在 Amazon ECR 映像存储库中,并使用 CodeDeploy 将流量路由和部署到 Amazon ECS 集群和负载均衡器。 CodeDeploy 使用侦听器将流量重新路由到 AppSpec 文件中指定的更新容器。管道也是 配置为使用您的 Amazon ECS 所在的 CodeCommit 源位置 存储任务定义。在本教程中,您将配置每个 这些 AWS 资源,然后使用以下阶段创建您的管道 包含每个资源的操作。

tutorials-ecs-ecr-codedeploy

build-a-continuous-delivery-pipeline-for-your-container-images-with-amazon-ecr-as-source

如果你在 Jenkins 中寻找这个东西,那么你必须在最后管理这些东西。

步骤如下

将图像推送到 ECR 在您的 jenkins 作业 using aws-cli 或 ecs-cli 中使用相同的图像名称重新使用图像名称和创建任务定义 Create service 带有新的任务定义i

您可以在这里查看详细信息

set-up-a-build-pipeline-with-jenkins-and-amazon-ecs

【讨论】:

谢谢你。【参考方案2】:

我们最终得出了相同的结论,因为没有与这种情况相匹配的精确工具。因此,我们从其他开源工具中开发了一个小“粘合”工具,并且最近也开源了:

https://github.com/GuccioGucci/yoke

请看一下,因为我们正在为 Jenkins 共享模板,因为它也是我们的管道编排器。

【讨论】:

以上是关于新 ECS 任务定义的 CI/CD的主要内容,如果未能解决你的问题,请参考以下文章

Terraform 定义的任务角色对于 ECS 计划任务无法正常工作

入口点的 ECS 计划任务容器覆盖不起作用

ECS任务定义App Mesh虚拟节点名称未通过控制台设置

自托管gitlab CI / CD推送注册表到ECS服务

使用 CloudFormation 在 ECS 服务上定义多个任务

如何从 ECS 服务中删除/移除任务