首页 > 解决方案 > Terraform:在 EKS/ECS 上部署 Docker Compose 应用程序

问题描述

TL;博士

我使用在 Docker Compose 上运行的开源服务器应用程序。它有一些服务,包括 PostgreSQL DB 和 Redis。

如何使用 Terraform 在完整的 IaC 中将此应用程序最好地部署到 AWS?


到目前为止的解决方案

1.AWSecs-cli

ecs-cli现在支持docker compose在 Amazon ECS 中发送配置。

但是,我不认为它可以与 Terraform 工作流程集成(这可能不是大惊小怪)。我确定的是ecs-cliCloudFormation不支持,根据这个问题,此时仍然打开。所以我认为它也不能轻易添加到 Terraform 中。

2.硬EKS方式

但这还不是完全的 IaC。每次 docker-compose 在源存储库中发生更改时,您都必须重新翻译您的配置。听起来工作量很大。

3. 使用 Helm 图表

4. [不好] k8s Kompose

我读过Kompose可以自动将 Docker Compose 配置转换为 k8s 配置,但它们似乎没有移植到 AWS 上,更不用说 Terraform。

5. [Not OK] 肮脏的AMI解决方案

那会有点伤害:构建时间长、监控困难、无法扩展。

旁注

标签: docker-composekubernetes-helmterraform-provider-awsamazon-eksapache-superset

解决方案


1. 观望

谁知道呢,ecs-cli-v2可能会更好地与 CloudFormation 和/或 Terraform 集成。

2. 使用 Helm 图表

如问题中所述。可能是最好的解决方案,尽管需要(很少)努力对 Helm 进行参数化。

另请参阅:Helm 入门

3. Docker Swarm + CloudFormation + Terraform

Docker Swarm 现在接受来自docker-compose.yml文件的输入。可以在此处找到并配置模板。配置完成后,它可以集成到 Terraform 基础架构中。

这个(3 岁的)教程解释了如何在 AWS 上使用 Docker Swarm 模式。

要启动容器,如有必要(未完全调查,欢迎提供反馈),您可以使用 Terraform 的local-exec. 通过这种方式,您可以通过 SSH 连接到主节点并运行docker stack deploy其他类似的命令,同时仍以 IaC 样式记录所有内容。


推荐阅读