【发布时间】:2019-11-15 10:59:06
【问题描述】:
作为大型迁移项目的一部分,我目前正在掌握 AWS 平台。我们有许多使用 ECS/Fargate 部署的容器化微服务 (Docker)。我正在尝试了解将同一容器映像部署到多个环境的最佳方式,同时仍然能够保留特定于环境的配置。
例如,我有一个开发和生产环境,但是每个环境自然都有自己的一组配置值。到目前为止,我已经使用 AWS Parameter Store 集中了我的配置,它很好地处理了这种情况,因为应用程序只是在启动时从相关参数路径中拉下它的配置,但是我需要一些方法来让我的容器上下文感知 - 也就是说,能够告诉他们他们是在推动开发还是生产环境的方式。我的偏好是在 ECS 启动新任务时将环境变量注入容器,但是这样做的唯一方法是在配置容器的任务定义中,这意味着有两个单独的任务定义,一个用于开发,另一个用于开发对于生产,只是为了能够在启动时将单个参数传递给容器。
我希望我已经足够详细地解释了我要解决的问题。当我在网上努力寻找任何东西时,有没有人可以分享这方面的任何信息?仅仅为了这个目的而必须复制任务定义似乎有点矫枉过正。很高兴得知我只是在使用 ECS“错误”,因为这是我第一次使用它。
一旦新容器被推送到 ECR,我们的部署管道就会运行以下命令:
aws ecs update-service --cluster development --service my-service --force-new-deployment
我看到您可以在使用 aws ecs run-task cli 命令时覆盖选项,但这似乎绕过了我不想做的任何服务定义,因为我将失去对此很重要的自动缩放功能项目。
提前致谢
【问题讨论】:
-
您是否将基础架构作为代码进行管理,即您是否使用 Cloudformation、Terraform 等。
-
我正在使用 Cloudformation - 计划是在有原因的情况下尽可能多地使用 IaC。到目前为止,我已经有了一个模板,它将创建 ECS 服务定义(不是任务定义)并适当地设置 API 网关。
标签: amazon-web-services docker amazon-ecs