Контекст:
- Мы работаем над интеграцией с одним из наших клиентов
- Чтобы получить доступ к их системам, нам нужно установить VPN-соединение
- По соображениям безопасности нам необходимо привязать это VPN-подключение к статическому IP-адресу на нашей стороне (в основном, проверка безопасности уровня 4 осуществляется маршрутизатором Juniper; мы используем OpenSwan для подключения к нему).
- Для этого мы должны подключить с этого IP ;то есть нам нужно установить сокет-соединение, где исходный IP-адрес соответствует этому статическому IP-адресу с точки зрения маршрутизатора (и, конечно, ему необходимо успешно перенаправить обратно на наш модуль)
- На стороне клиента оченьограниченные ресурсы в оперативном режиме, так что этот обруч безопасности является единственным способом подключения к их системам
Пока наша текущая система работает (AWS) в Kubernetes, то есть:
- Сделано из переходных модулей, переходных узлов, со смещением IP-адресов
- Может назначать ExternalIP для службы (которая, в свою очередь, может направлять его в модуль);однако это по умолчанию не дает никаких гарантий относительно исходного IP-адреса трафика, инициируемого этим модулем
. По этой причине мы устанавливаем внешний ящик и назначаем ему Elastic IP в качестве привязки дляVPN, обнажая конечные точки и вызывая наши сервисы Kubernetes.Это приводит к единственной точке отказа - если этот блок не работает, то же самое происходит и с нашей интеграцией.
Вопрос: каким образом это можно сделать HA в мире Kubernetes, учитывая ограничения в первом списке выше?