【发布时间】:2022-01-15 23:58:54
【问题描述】:
我已经阅读了有关此问题的其他问题,都提到了启用服务发现,但我的问题与如何为我当前的 Fargate 部署进行设置的问题略有不同。
我有四个通过 Gradle 构建的 Spring Boot api 容器,推送到 ECR,并部署在 ECS Fargate 中,Terraform IaC 设置了适当的资源。其中三个容器化 api 在其中设置了环境变量以引用第四个容器,从而在容器外部对那个服务进行外部 api 调用。为这些部署设置了 DNS 和 443 负载平衡器。
我在包含需要发现的 api 的集群中创建了一个新服务。我已启用服务发现并为 api 创建了一个本地 CloudMap A 记录,然后在其他容器中设置每个环境变量以使用该本地 A 记录 url,例如 ecsservicename.local。此外,我试图挖掘我在其他 api 中连接的服务并返回一个 IP,所以我确信这是有效的。
我的问题如下:
(1) 由于实际上只有一个服务应该被其他服务获取,因此在该 api 而不是其他 api 上设置服务发现是否正确,或者我应该在所有其他 api 上设置服务发现?
(2) 即使设置了 route53,这应该是 A 记录还是 SRV?关于何时在 aws 上使用 which 的文档让我感到困惑。
(3) 是否有更好或更简单的方法可用于我缺少的容器间通信?
【问题讨论】:
-
进展如何?仍然不清楚您的问题?
-
是的,这似乎有效。我只需要在那个 api 中设置服务发现,然后在另一个 api 的容器变量中引用该服务名称。也就是说,我最初使用 443 负载均衡器配置了它,它还安装了身份验证和证书,所以这有点棘手。不得不做一些更多的配置,这样我就不会被防火墙击中,但这是可行的。
-
很高兴听到。如果我的回答有帮助,那么将不胜感激。
-
试图投票,但它说我需要 15 点声望点,所以我想我的帐户需要更多点 :)
-
致 accept 你不需要声望。
标签: amazon-web-services docker terraform amazon-ecs aws-fargate