Kubernetes & OpenVPN: входящая маршрутизация из более широкой сети
Мы пытаемся настроить сервер удаленного доступа OpenVPN в кластере Kubernetes, чтобы заменить службу, ранее размещенную на локальном брандмауэре.
Наша более широкая сеть частично основана на GCP/GCE, с динамической маршрутизацией BGP к нашим локальным сайтам через IPsec.
В настоящее время на существующем сервере OpenVPN локально IP-адреса, выделенные подключенным клиентам, маршрутизируются из остальной части сети, поэтому мы можем передавать входящие и исходящие сообщения без NAT.
Мы бы хотели перенести сервис на Kubernetes Engine, поскольку именно на него переносятся все другие наши рабочие нагрузки Linux, и мы предпочитаем рабочий процесс в стиле DevOps с управлением доступностью и восстановлением.
Итак, скажем, у нашего контейнера OpenVPN есть клиенты, подключенные в диапазоне 10.30.50.0/24, с IP-адресом Pod, динамически распределяемым в 10.50.30.0/20, как бы мы сказали GCP направить этот диапазон 10.30.50.0/24 к службе OpenVPN в Pod? И возможно ли это вообще?
Одна мысль заключалась в том, чтобы вызвать GCE API при запуске Pod, чтобы добавить статический маршрут, направленный к Pod IP, но я не уверен, будет ли трафик проходить через кластер и достигнет OpenVPN в Pod.
1 ответ
В GCP невозможно создать маршрут для маршрутизации подсети 10.30.50.0/24 из вторичного диапазона IP-адресов 10.30.0.0/20 для использования OpenVPN. Таким образом, есть 2 возможных решения для достижения того, что вы хотите:
1. Вы можете создать экземпляр виртуальной машины в GCP для настройки вашего туннеля OpenVPN. Затем вы можете добавить статический маршрут в GCP с помощью nexthop этого экземпляра виртуальной машины. Кластер GKE в той же сети VPC, что и экземпляр OpenVPN, будет использовать его в качестве следующего шага, поэтому весь трафик с узлов будет использовать туннель OpenVPN. Если вы не хотите перенаправлять весь трафик со всех узлов кластера через экземпляр VPN, вы можете указать тег и прикрепить его во время создания кластера или пула узлов.
- Вы можете создать виртуальное хранилище виртуальных машин в качестве предыдущего примера, и вместо настройки маршрута по умолчанию с экземпляром Open VPN следующего перехода вам потребуется настроить iptables в узлах кластера GKE. Например, для настройки iptable, чтобы весь трафик к IP-адресу назначения и исходному IP-адресу 10.30.50.0/24 использовал следующий переход "IP-адрес экземпляра OpenVPN".
Помните, что в обоих решениях вы должны включить Alias IP в каждом кластере GKE, чтобы разрешить связь между вашим локальным модулем и модулями.