我正在部署具有两个容器的ECS Fargate任务:1个反向代理nginx和1个python服务器。对于每一个我都有一个ECR存储库,并且我有一个CI / CD CodePipeline用
CodeCommit -> CodeBuild -> CodeDeploy
此流程适用于简单的代码更改。但是,如果我想添加另一个容器怎么办?我当然可以进行更新buildspec.yml
以添加容器的构建,但是我还需要1)更新我的任务定义,以及2)将此任务定义分配给我的服务。
问题:
1)如果在CodeBuild阶段使用CLI创建新的任务定义并将其与我的服务相关联,这不会触发部署吗?然后我的CodeDeploy将尝试再次进行部署,因此我最终将部署两次?
2)这种方法最终会创建一个新的任务定义,并在每次部署时更新服务。这不好吗?我应该有一些逻辑来取消最新的任务修订,并从CodeCommit版本中区分JSON并仅在有区别时才进行更新吗?
谢谢!
CodePipeline的ECS作业工作者复制任务定义并更新“ imagedefinitions.json”文件中指定的容器的Image和ImageTag,然后使用此新TaskDef更新ECS服务。作业工作者无法在任务定义中添加新容器。
如果在CodeBuild阶段使用CLI创建新的任务定义并将其与我的服务相关联,这不会触发部署吗?然后我的CodeDeploy将尝试再次进行部署,因此我最终将部署两次?
我不这么认为。是否有CloudWatch事件规则以这种方式触发CodeDeploy?
这种方法最终会创建一个新的任务定义,并在每次部署时都更新服务。这不好吗?我应该有一些逻辑来取消最新的任务修订,并从CodeCommit版本中区分JSON并仅在有区别时才进行更新吗?
每次部署时,ECS Deploy Job工作者都会创建一个新的任务定义修订,因此,如果这是正式行为,那么我也不会认为这很糟糕。
我会问为什么在部署期间需要在运行时向任务定义中添加新容器。通常,您的任务定义应减少修改的频率,并且仅应定期修改其中的image:tag - ECS Deploy操作可帮助您实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句