Подключение вашей установки Amazon ECS к внешнему VPC

В своих предыдущих руководствах я довольно много говорил о развертывании веб-приложений и Elastic Container Service (ECS). Теперь давайте рассмотрим особый случай, когда вам может потребоваться подключиться к настройке ECS из другого VPC, чем тот, который вы настроили внутри.

Примечание. Следующее руководство может применяться к обоим VPC в одной учетной записи AWS или в разных учетных записях AWS.

Пример. Предположим, у вашей компании есть гибридная учетная запись AWS (локально и облако AWS вместе) с виртуальным частным облаком (VPC). настроить - как часть его защищенной внутренней сети, и вы создаете веб-приложение для внутреннего использования. Теперь у вас есть веб-приложение, созданное и размещенное внутри вашей учетной записи VPC для разработчиков / разработчиков с использованием ECS, и вы радостно потираете руки, готовясь протестировать свою настройку. Вы копируете и вставляете DNS-имя вашего Application Load Balancer (ALB) и тщательно нажимаете эту клавишу Enter. Внезапно вы понимаете, что не можете подключиться к нему. Вы вспомнили, что ваша внутренняя сеть не подключена к вашему VPC, и вы не можете подключиться к ALB через Интернет, потому что это может подвергнуть внутреннюю инфраструктуру вашей компании внешнему миру. Что вы делаете?

Решение использует частную ссылку AWS для создания на вашем VPC сервиса конечных точек, к которому может подключаться VPC компании. Ваша конечная служба внутренне подключается к балансировщику сетевой нагрузки (NLB), который затем подключается к вашей инфраструктуре ECS. Но проблема в том, что если вы используете ALB как часть настройки ECS, подключение NLB к вашему ALB - непростой процесс. Это связано с тем, что NLB принимает только статические IP-адреса в качестве целей, но IP-адреса вашего ALB могут продолжать изменяться, поскольку ECS динамически регистрирует и отменяет регистрацию целей. Итак, нам нужен механизм для сбора этих динамически выделяемых IP-адресов вашего ALB и добавления их в целевую группу, связанную с вашим NLB.

Вы можете подумать, почему мы не можем напрямую подключить службу конечной точки к вашему ALB. Это связано с тем, что ваша конечная служба VPC находится на сетевом уровне модели OSI, а ALB - на уровне приложений. Чтобы восполнить этот пробел, вам нужно будет использовать балансировщик сетевой нагрузки, который, как следует из названия, находится на сетевом уровне.

ЧТО ВКЛЮЧАЕТ НАСТРОЙКУ?

В состав установки входят:

  1. Ваша настройка ECS с ALB
  2. НББ и целевая группа для него
  3. Служба конечной точки VPC
  4. Конечная точка на внешнем VPC

СОЗДАНИЕ НАСТРОЙКИ

1. Создание балансировщика сетевой нагрузки

Для этого перейдите в консоль EC2 из раскрывающегося меню «Службы» в правом верхнем углу консоли AWS. Выберите «Балансировщики нагрузки» на левой боковой панели и нажмите «Создать балансировщик нагрузки». В разделе «Балансировщик сетевой нагрузки» нажмите «Создать». Дайте вашему NLB имя, выберите тип «Internal Facing» и добавьте прослушиватель на порт 80 с протоколом TCP. Убедитесь, что вы выбрали VPC, в котором установлена ​​ваша ECS, и выберите все перечисленные зоны доступности. Щелкните «Далее» и «Далее» еще раз. Выберите создание новой целевой группы с подходящим именем и выберите тип цели «IP». Порт 80 и снова протокол TCP. Нажмите «Далее»; сейчас нет необходимости регистрировать какие-либо цели, поэтому снова нажмите «Далее». И, наконец, нажмите «Создать».

2-Создание службы конечной точки VPC

В раскрывающемся списке «Служба» нажмите «VPC». В консоли VPC выберите «Endpoint Services» на левой панели и нажмите «Create Endpoint Service». Выберите только что созданный NLB. Оставьте флажок «Требуется подтверждение» и нажмите «Создать службу». Скопируйте название сервиса. В разделе «Участники в белом списке» для службы конечной точки добавьте участника в следующем формате:

arn:aws:iam::<account-id>:user/root

Замените заполнитель «‹account-id›» идентификатором учетной записи AWS для учетной записи, которой принадлежит внешний VPC.

3-Создайте конечную точку VPC на внешнем VPC

(Если внешний VPC находится в отдельной учетной записи, войдите в эту учетную запись) В консоли VPC выберите «Конечные точки» на левой панели и нажмите «Создать конечную точку». Для категории услуги выберите «Найти услугу по имени», вставьте имя услуги и нажмите «Подтвердить». Выберите внешний VPC, из которого вы хотите подключиться к VPC, и выберите все доступные подсети. Обратите внимание на автоматически сгенерированную группу безопасности, она нам понадобится позже. Щелкните «Создать конечную точку».

Убедитесь, что в группе безопасности есть правило, разрешающее доступ по протоколу HTTP из любого источника.

4-Подключите NLB к ECS ALB

Чтобы подключить NLB к ALB в вашей настройке ECS, как упоминалось ранее, нам нужен механизм для сбора IP-адресов, выделенных вашему ALB, и добавления их в целевую группу NLB.

Для этого вам нужно будет использовать AWS Lambda. Этот сервис позволяет создавать бессерверные функции в облаке AWS. Эти функции могут быть написаны на разных языках, таких как Python2, Python3, Ruby и т. Д. Функция запускается один раз при каждом ее вызове. Крутая вещь в Lambda заключается в том, что вы можете добавлять различные триггеры для вызова функции, например, запрос шлюза API, уведомление SNS или триггер Amazon Alexa.

Поскольку этот шаг довольно длинный, я направлю вас к отличному пошаговому руководству от AWS здесь. Как только вы закончите создание функции Lambda, вы можете вернуться сюда :)

ПРОВЕРКА НАСТРОЙКИ

Чтобы проверить, работает ли вся установка, особенно соединение с конечной точкой, вы можете развернуть экземпляр EC2 во внешнем VPC и скрутить DNS-имя вашей конечной точки.

Вот и все! Теперь у вас должна быть возможность подключить внешний VPC к настройке ECS с помощью DNS конечной точки. Я также оставлю ссылку на некоторые советы по устранению неполадок от AWS здесь.

Надеюсь, это краткое руководство вам поможет! Спасибо за чтение.