Модуль не включен по умолчанию в каком-либо наборе модулей.
Чтобы настроить модуль, используйте custom resource ModuleConfig
с именем openvpn
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/openvpn
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: openvpn
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- массив строк
Массив групп, пользователям которых позволен доступ в панель администратора OpenVPN.
Используется, если включен модуль user-authn или параметр externalAuthentication.
Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
- объект
Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress external-auth, работающий на основе модуля Nginx auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
- булевый
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
- объект
Тип сертификата, используемого для панели администратора OpenVPN.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https
.- строка
Имя Secret’а в пространстве имен
d8-system
, который будет использоваться для панели администратора OpenVPN (данный Secret должен быть в формате kubernetes.io/tls).По умолчанию:
"false"
- строка
Режим работы HTTPS:
CertManager
— панель администратора OpenVPN будет работать по HTTPS, самостоятельно заказывая сертификат с помощью ClusterIssuer, заданного в параметреcertManager.clusterIssuerName
;CustomCertificate
— панель администратора OpenVPN будет работать по HTTPS, используя сертификат из пространства именd8-system
;Disabled
— панель администратора OpenVPN будет работать только по HTTP;OnlyInURI
— панель администратора OpenVPN будет работать по HTTP (подразумевая, что перед ней стоит внешний HTTPS-балансировщик, который терминирует HTTPS) и все ссылки в user-authn будут генерироваться с HTTPS-схемой. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.
Допустимые значения:
Disabled
,CertManager
,CustomCertificate
,OnlyInURI
- строка
Способы подключения из внешнего мира.
Поддерживаются следующие inlet’ы:
ExternalIP
— когда имеются узлы с публичными IP-адресами. Используется в комбинации с параметромexternalIP
;LoadBalancer
— для всех облачных провайдеров и их схем размещения, в которых поддерживается заказ LoadBalancer’ов;HostPort
— порт сервера OpenVPN будет доступен на узле, на котором находится под. За выбор порта отвечает параметрhostPort
;Direct
— для нестандартных случаев. В пространстве именd8-openvpn
необходимо создать сервис с именемopenvpn-external
, который отправляет трафик в под с лейбломapp: openvpn
на порт с именемovpn-tcp
(или просто 1194). Из этого сервиса парситсяexternalIP
, IP-адрес балансировщика или его host. Если ничего этого нет, необходимо указать параметрexternalHost
.
Допустимые значения:
ExternalIP
,LoadBalancer
,HostPort
,Direct
- объект
Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.
Внимание! Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров вам необходимо будет выключить и включить модуль.
- объект
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика. - булевый
Включить логирование пользовательской активности через VPN в JSON-формате.
Все соединения внутри
tun
-интерфейсов будут собраны черезlibpcap
и записаны в лог в виде{"event_type": "purge", "ip_src": "172.25.175.10", "ip_dst": "10.222.0.10", "port_src": 32172, "port_dst": 53, "ip_proto": "udp", "packets": 1, "bytes": 53}
.По умолчанию:
false
- массив объектов
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.
Аутентификация
По умолчанию используется модуль user-authn. Также можно настроить аутентификацию с помощью параметра externalAuthentication. Если эти варианты отключены, модуль включит basic auth со сгенерированным паролем.
Посмотреть сгенерированный пароль можно командой:
kubectl -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module values openvpn -o json | jq '.openvpn.internal.auth.password'
Чтобы сгенерировать новый пароль, нужно удалить Secret:
kubectl -n d8-openvpn delete secret/basic-auth
Внимание! Параметр
auth.password
больше не поддерживается.