【问题标题】:Terraform: Deploying a Docker Compose app on EKS/ECSTerraform:在 EKS/ECS 上部署 Docker Compose 应用程序
【发布时间】:2020-07-22 03:12:11
【问题描述】:

TL;DR

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

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


目前的解决方案

1。 AWSecs-cli

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

但是,我不认为它可以与 Terraform 工作流程集成(这可能不是大惊小怪)。我可以肯定的是,ecs-cli CloudFormation 不支持,根据this issue,目前仍处于打开状态。所以我认为它也不能轻易添加到 Terraform 中。

2。艰难的 EKS 方式

  • 获取您的 docker-compose.yml 文件,将其转换为 kubectl YAML。
  • (准备每次升级包时都这样做)。
  • 使用 Terraform 的 + EKS API 进行部署(最少 example)。

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

3。使用 Helm 图表

  • 为应用程序编写 Helm 图表。
  • 运行 Terraform 以启动集群。
  • 仍然使用 helm provider 运行 Terraform 以在集群上使用 Helm 安装应用程序。

4。 [不好] k8s Kompose

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

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

  • 使用 Packer 构建自定义 EC2 AMI。
  • 使用 Terraform,设置 DB、Redis 和所有权限/网络/等。
  • 使用自定义 AMI 启动 EC2 实例。
  • AMI 包含(定制的)应用程序代码,尤其是docker-compose.yml。还有 Docker 映像。
  • AMI 启动 Docker Compose systemctl 服务。

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

旁注

  • 我提到我需要完整的 IaC。我的意思是:
    1. master 上的书面配置(仅此而已)告诉您部署了什么。
    2. 部署将完成,我的团队无需运行任何其他命令。它基本上适用于 CI/CD 或单次推送。
    3. 在 IaC 中轻松配置监控和警报。
  • 我希望将某些服务替换为 AWS 组件(即 RDS 的 PostgreSQL 服务和 ElastiCache 的 Redis 服务)。
  • 应用程序恰好Apache Superset。不过我也想知道什么是解决这个 Docker Compose 问题的最佳通用方法。

【问题讨论】:

    标签: docker-compose kubernetes-helm terraform-provider-aws amazon-eks apache-superset


    【解决方案1】:

    1。拭目以待

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

    2。使用 Helm 图表

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

    另请参阅:Getting started with Helm

    3。 Docker Swarm + CloudFormation + Terraform

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

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

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

    【讨论】:

    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2017-09-30
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多