Задача
Для обеспечения безопасности нужно, чтобы запросы от сервисов, работащих в AWS EKS приходили с фиксированных адресов.
Дефолтный вариант доступа в интернет - это через Internet Gateway, а он не обспечивает стабильность IP-адреса для исходящих запросов.
Ноды моего k8s-кластера размещены в трех AZ.
Как это должно быть сделано
Это делается с помощью NAT Gateways.
Порядок действий
- Сделать каждой AZ по приватной сети. В дополнение к имеющимся дефолтным публичным сетям. Приватной сеть становится, кгда лишается записи дефолтного маршрута (0.0.0.0/0) через Internet Gateway в Routing Table
- Чтобы сделать сети приватными - идем в VPC → Routing Tables и создаем три таблицы (по одной на каждую подсеть). В каждой из таблиц - есть только один маршрут - local. Жмем Edit Subnet Associations и ставим галочку на соотвествующей только что созданной подсети. В итоге - у нас есть три новых подсети и таблицы маршрутизации для них, в которых есть только маршрут local - то есть они приватные.
- Теперь нужно создать три NAT Gateway типа Public. При создании - указываем для них ПУБЛИЧНЫЕ сети (не те, которые были созданы на первом этапе), а также им нужны - Elastic IP (поле Elastic IP allocation ID)
- Теперь нужно добавить в созданные Routing Tables маршрут для Destination 0.0.0.0/0, указывающий на соотвествующий NAT Gateway.
Discussion