Кластер AWS Fargate не может получить доступ к Интернету при наличии NAT и интернет-шлюзов

#amazon-web-services #amazon-ecs #aws-fargate #amazon-ecr

#amazon-web-services #amazon-ecs #aws-fargate #amazon-ecr

Вопрос:

Я пытаюсь развернуть контейнеры в кластере частной сети Fargate на AWS. У меня есть интернет-шлюз на моем единственном VPC:

Интернет-шлюз

И у меня есть шлюз NAT для этой конкретной подсети в том же VPC, где находится мой кластер / службы:

Шлюз NAT

Маршрутизация также подходит для этой подсети:

Маршрут подсети

И группа безопасности для службы не блокирует никаких входящих подключений:

Группы безопасности

Входящие группы безопасности

Но мои контейнеры даже не начинаются с печально известного исключения: CannotPullContainerError: ответ об ошибке от daemon:Get https://registry-name /: net/http: запрос отменен во время ожидания подключения (Клиент.Превышено время ожидания заголовков)Почему? Спасибо.

Ответ №1:

У вас нет подсети, настроенной для использования NAT-шлюза. В настоящее время ваша таблица маршрутизации отправляет трафик непосредственно в IGW, что делает подсеть общедоступной, а не частной подсетью, что означает, что для чего-либо в этой подсети должен быть назначен общедоступный IP-адрес. Шлюзы NAT, существующие в той же подсети, что и другие ресурсы, волшебным образом не предоставляют этим ресурсам доступ в Интернет, вам необходимо соответствующим образом настроить таблицы маршрутизации.

Ваша сеть должна быть настроена следующим образом:

Общедоступные подсети:

  • IGW прилагается
  • Шлюз NAT
  • Любые другие общедоступные ресурсы, которые должны быть доступны из Интернета, например общедоступный балансировщик нагрузки.

Частные подсети:

  • Маршрут к шлюзу NAT в общедоступной подсети. Нет маршрута к IGW.

Комментарии:

1. Спасибо, не могли бы вы уточнить, что мне нужно сделать? Я немного озадачен, так как думал, что у меня есть только частные подсети.

2. Вам необходимо создать 2 набора подсетей в вашем VPC, общедоступных и частных. Общедоступные подсети — это те, которые имеют прямой доступ к Интернету через интернет-шлюз. Это все, что у вас есть на данный момент. Для использования интернет-шлюза ресурсу требуется присвоенный ему общедоступный IP-адрес, после чего он может получить доступ к Интернету напрямую, через IGW, используя свой общедоступный IP-адрес. Затем создайте несколько частных подсетей. Частная подсеть — это подсеть, к которой НЕ подключен IGW. Частная подсеть использует маршрут к шлюзу NAT для обеспечения исходящего доступа в Интернет к ресурсам внутри нее.

3. Я понимаю. Тогда наличие igw и отсутствие общедоступного IP-адреса для службы в этой подсети обречены на отключение?

4. @HasanCanSaral да, точно. В этом сценарии этот ресурс имеет доступ только к ресурсам в VPC и никогда не сможет получить доступ к чему-либо за пределами VPC.