是否有办法确定Fargate容器的公共IP在它变得健康之前?



我有一个运行在公共子网上的AWS Fargate容器。每次启动它都会自动分配一个新的公共IP。是否有办法在IP变得健康之前确定它将是什么?

原因:我只有一个容器,不需要负载均衡器,所以我想将DNS记录直接映射到容器的IP地址,而不是负载均衡器,以避免LB费用。一切都很好,但是我还想在容器启动时用[certbot][https://certbot.eff.org/]生成一个SSL证书。为了做到这一点,DNS记录必须指向新容器的IP。不过,我不确定这是否可能。

不幸的是,这不是直接可能的。

将域记录与容器关联的正常方式(而不是将域指向负载平衡器,然后通过它进行路由)是使用ECS服务发现。目前有以下限制:

为服务发现服务创建的DNS记录总是注册到任务的私有IP地址,而不是公共IP地址,即使使用了公共命名空间。

所以你不能让它创建一个指向服务中的容器的DNS记录。

一种选择是让其他东西监视ECS服务并自动更新容器的DNS记录,但这可能会涉及到一定程度的延迟,这意味着在DNS记录更新到指向新容器之前,您可能会在部署期间或任务退出期间经历短暂的中断。

一个例子是使用Lambda函数并连接起来响应任务启动事件,该事件将更新Route53记录以指向该容器的公共IP地址。

如果你使用AWS CDK,那么ECS服务扩展模块有AssignPublicIpExtension扩展,它将自动创建和部署一个Lambda函数,该函数将监视这些任务启动和退出事件,并按预期更新Route53。

相关内容

  • 没有找到相关文章

最新更新