繁体   English   中英

如何启动具有公共 DNS 的 ECS Fargate 容器?

[英]How can you launch ECS Fargate containers having a public DNS?

我构建了一个 AWS CodePipeline 来构建容器并将其部署到 Fargate 托管的 EC2 实例中。 参考AWS CodePipeline

其中一项服务是 Web 服务器,我正尝试通过公共分配的 IP 地址从公众访问它; 然而,这并不是很有用,因为每个部署的容器都会收到一个新的 IP 地址。

我知道可以设置弹性 IP 地址或将域指向容器服务,但我认为有一种更简单的方法。

EC2 实例可以通过提供公共 DNS 的选项启动...

是否可以使用静态公共 DNS 记录启动容器服务? 如果是这样,如何?

虽然它不是免费的,但通常如果你想要一个 ECS 服务(fargate 或 EC2)的公共 DNS 名称,你会在它前面放置一个负载均衡器(如果你愿意,它也可以执行 SSL 终止)。

因此,当您设置服务时,AWS 可以轻松创建负载均衡器或将您的服务添加到现有目标组。 我认为事后您无法更改它,因此您可能需要重新创建服务。

最后,当您在 ECS 服务前面有负载均衡器时,您只需要在 Route53 中设置 CNAME 或 A ALIAS(如果您使用的是 Route53)以将 DNS 名称定向到该负载均衡器。

AWS 在 2016 年的 AWS Compute 博客上有一个演练,快速描述了如何设置 ECS 服务并使用应用程序负载均衡器公开它。

还有另一条路径——使用 ECS 服务发现和 AWS CloudMap,您可以使用 API 网关。 您的负载平衡选项更加有限,但 API 网关按使用量而非小时数计费,因此它可以潜在地节省低容量服务的成本。 您还可以在多个 ECS 服务前使用单个 API 网关,无论如何有些人会想要这样做。 这种方法不太常用,但可能是某些用途的正确途径。

您可以使用ECS 服务发现在私有 DNS 命名空间中注册您的容器 - 不幸的是,这在公共 DNS 中是不可能的。

但是,您可以做的是拥有一个脚本

  • 重新部署后获取容器的公共 IP 和
  • 使用该 IP 更新您的公共 Route 53 记录集。

在本文中,我们将描述如何通过使用通用 lambda 函数来做到这一点。

当我第一次设置 ECS Fargate 服务时,设置向导似乎自动 (?) 为我创建了一个负载均衡器。 我能够通过 Amazon ECS -> Clusters -> {my cluster} -> {my service} -> Target Group Name(在“详细信息”选项卡中的“负载平衡”下)-> {my目标组} -> 负载均衡器 -> DNS 名称

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM