У меня есть сервер OpenVPN, работающий с некоторыми частными IP-адресами, и я хотел бы, чтобы мои службы Docker Swarm получили доступ к этим адресам.
В идеале, не было бы клиента OpenVPN "внутри" контейнеров, поскольку ожидается, что образы будут развернуты в среде, где VPN не понадобится.
Что я пробовал до сих пор
Я успешно подключил контейнер к VPN с образом dperson/openvpn-client .
Я успешно запустил другой контейнер, используя этот контейнер в качестве своей сети, используя --net=container:my-vpn-client
.
Теперь я пытаюсь настроить службу Docker, которая будет иметь доступ к моим частным IP-адресам, и я нашел следующее:
- Я не могу запустить клиент openVPN в сервисе, так как ему нельзя дать
cap-add: NET_ADMIN
. Есть открытые проблемы с Докером, обсуждающим этот вопрос, но они все еще открыты. - Я подумал, что я мог бы запустить клиентский контейнер openVPN "рядом" с кластером роя, но я не могу использовать
network_mode: "container:my-vpn-client"
как он не поддерживается и имеет смысл, так как я не мог заставить произвольный контейнер, который будет присутствовать на каждом узле роя, не являясь самой службой. - Я попытался создать подключаемую сеть (мост / оверлей) и просто вставил в нее свой клиентский контейнер OpenVPN и ожидал, что другие члены этой сети волшебным образом пройдут через этот канал ... и я был разочарован.
Итак, я здесь, любая идея?
PS Если это может помочь, это в основном для настройки некоторых автоматических тестов, которые будут запускать сервисы на машине с одним докером в режиме роя, как в swarm init> стек развертывания> запускать тесты> отпуск роя. Так что, если есть "взлом" для этого ... мне может быть интересно;)