Эти возможности доступны только в Enterprise Edition. Их функциональность может существенно измениться. В настоящий момент не рекомендуется для самостоятельного использования.

Модуль по умолчанию выключен. Для включения добавьте в ConfigMap deckhouse:

data:
  openvpnEnabled: "true"

Параметры

  • inlet — способы подключения из внешнего мира.
    • Поддерживаются следующие inlet’ы
      • ExternalIP — когда имеются узлы с публичными IP. Используется в комбинации с параметром externalIP.
      • LoadBalancer — для всех облачных провайдеров и их схем размещения, в которых поддерживается заказ LoadBalancer’ов.
      • Direct — для нестандартных случаев. В namespace d8-openvpn необходимо создать сервис с именем openvpn-external, который отправляет трафик в под с лейблом app: openvpn на порт с именем ovpn-tcp (или просто 1194). Из этого сервиса парсится externalIP, ip балансера или host балансера. Если ничего этого нет, то необходимо указать параметр externalHost.
  • loadBalancer — секция опциональных настроек для inlet’а LoadBalancer:
    • annotations — аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.
      • Внимание! модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа load balancer’а применяются только при создании сервиса, то для обновления подобных параметров вам необходимо будет выключить и включить модуль.
    • sourceRanges — список CIDR, которым разрешен доступ на балансировщик.
      • Формат — массив строк.
      • Облачный провайдер может не поддерживать данную опцию и игнорировать её.
  • externalIP — IP одного из узлов кластера, который будет использоваться для подключения клиентов OpenVPN.
    • Требуется только при использовании inlet ExternalIP.
  • externalPort — порт, который вывешивается наружу на externalIP или балансере.
    • По умолчанию — 5416.
  • tunnelNetwork — подсеть используемая для туннеля.
    • По умолчанию — 172.25.175.0/255.255.255.0.
  • pushToClientRoutes — список роутов, которые отправляются клиентам при подключении.
    • По умолчанию — генерируется автоматически из локальной сети кластера, сервисной подсети и подсети подов.
  • pushToClientDNS — адрес dns-сервера, который отправляется клиентам при подключении.
    • По умолчанию — IP сервиса kube-system/kube-dns.
  • pushToClientSearchDomains — список доменов поиска, которые отправляются клиентам при подключении.
    • По умолчанию — global.discovery.clusterDomain.
  • storageClass — имя storageClass’а, который использовать.
    • Если не указано — используется StorageClass существующей PVC, а если PVC пока нет — используется или global.storageClass, или global.discovery.defaultStorageClass, а если и их нет — данные сохраняются в emptyDir.
    • ОСТОРОЖНО! При указании этой опции в значение, отличное от текущего (из cуществующей PVC), диск будет перезаказан, а все данные удалены.
    • Если указать false — будет форсироваться использование emptyDir’а.
  • auth — опции, связанные с аутентификацией или авторизацией в приложении:
    • externalAuthentication - параметры для подключения внешней аутентификации (используется механизм Nginx Ingress external-auth, работающей на основе модуля Nginx auth_request (если включен модуль user-authn, параметры externalAuthentication настраиваются автоматически).
      • authURL - URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.
      • authSignInURL - URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP отличный от 200).
    • password — пароль для http-авторизации для пользователя admin (генерируется автоматически, но можно менять)
      • Используется если не включен параметр externalAuthentication.
    • allowedUserGroups — массив групп, пользователям которых позволен доступ в панель администрирования openvpn.
      • Используется если включен модуль user-authn или параметр externalAuthentication.
      • Внимание! При использовании совместно с модулем user-authn необходимо так же добавить разрешенные группы в соответствующее поле в настройках DexProvider.
    • whitelistSourceRanges — массив CIDR, которым разрешено проходить аутентификацию для доступа в openvpn.
  • externalHost — IP или домен по которому клиенты подключаются к OpenVPN серверу.
    • По умолчанию — используются данные из сервиса с именем openvpn-external.
  • ingressClass — класс ingress контроллера, который используется для админки openvpn.
    • По умолчанию — глобальное значение modules.ingressClass.
  • https — выбираем, какой типа сертификата использовать для админки openvpn.
    • При использовании этого параметра полностью переопределяются глобальные настройки global.modules.https.
    • mode — режим работы HTTPS:
      • Disabled — в данном режиме админка openvpn будет работать только по http;
      • CertManager — админка openvpn будет работать по https и заказывать сертификат с помощью clusterissuer заданном в параметре certManager.clusterIssuerName;
      • CustomCertificate — админка openvpn будет работать по https используя сертификат из namespace d8-system;
      • OnlyInURI — админка openvpn будет работать по http (подразумевая, что перед ними стоит внешний https балансер, который терминирует https) и все ссылки в user-authn будут генерироваться с https схемой.
    • certManager
      • clusterIssuerName — указываем, какой ClusterIssuer использовать для админки openvpn (в данный момент доступны letsencrypt, letsencrypt-staging, selfsigned, но вы можете определить свои).
        • По умолчанию letsencrypt.
    • customCertificate
      • secretName - указываем имя secret’а в namespace d8-system, который будет использоваться для админки openvpn (данный секрет должен быть в формате kubernetes.io/tls).
        • По умолчанию false.
  • nodeSelector — как в Kubernetes в spec.nodeSelector у pod’ов.
  • tolerations — как в Kubernetes в spec.tolerations у pod’ов.