小编Joh*_*nn8的帖子

Terraform:在 EKS/ECS 上部署 Docker Compose 应用程序

TL; 博士

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

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


迄今为止的解决方案

1.AWS ecs-cli

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

但是,我不认为它可以与 Terraform 工作流程集成(这可能不是什么大惊小怪)。我知道肯定是,ecs-cli不是在CloudFormation支持,按照这一问题在这个时候,仍然打开。所以我认为它也不能轻易添加到 Terraform。

2. 硬 EKS 方式

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

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

3. 使用 Helm 图表

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

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

9
推荐指数
1
解决办法
2957
查看次数

如何在mongodb聚合中检查子字段是否存在且不为空?

我遇到了一个很烦人的问题,我似乎无法为我的特定情况找到任何解决方案。在我的 mongo 聚合管道中,我想添加一个字段,并且根据另一个字段的子字段的存在,我想分配该其他字段的子字段的值,如果该其他字段的子字段不存在,则为 1。

这是我尝试过的:

pipelineStages.push(
{$addFields: 
    {field: 
        {$cond: [
             {$ne: ["$otherField.subField", null]}, 
                    "$otherField.subField", 1]
             }
        }
     }
 );
Run Code Online (Sandbox Code Playgroud)

但是,它仅适用于该字段存在的情况。另一方面,该新字段根本没有添加到管道中。任何想法我做错了什么?

mongoose mongodb aggregation-framework

8
推荐指数
1
解决办法
6038
查看次数