Доступно только в Enterprise Edition. Функциональность может существенно измениться. В настоящий момент не рекомендуется для самостоятельного использования.

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

data:
  openvpnEnabled: "true"

Параметры

  • authобъект

    Опции, связанные с аутентификацией или авторизацией в приложении.

    • allowedUserGroupsмассив строк

      Массив групп, пользователям которых позволен доступ в панель администратора openvpn.

      Используется если включен модуль user-authn или параметр externalAuthentication.

      Внимание! При использовании совместно с модулем user-authn необходимо так же добавить разрешенные группы в соответствующее поле в настройках DexProvider.

    • externalAuthenticationобъект

      Параметры для подключения внешней аутентификации (используется механизм Nginx Ingress external-auth, работающий на основе модуля Nginx auth_request).

      Если включен модуль user-authn, параметры externalAuthentication настраиваются автоматически.

      • authSignInURLстрока

        URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP отличный от 200).

      • authURLстрока

        URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.

    • passwordстрока

      Пароль для HTTP-авторизации для пользователя admin (генерируется автоматически, но можно менять).

      Используется если не включен параметр externalAuthentication.

    • whitelistSourceRangesмассив строк

      Массив CIDR, которым разрешено проходить аутентификацию для доступа в openvpn.

  • externalHostстрока

    IP или домен по которому клиенты подключаются к OpenVPN серверу.

    По умолчанию — используются данные из сервиса с именем openvpn-external.

  • externalIPстрока

    IP одного из узлов кластера, который будет использоваться для подключения клиентов OpenVPN.

    Требуется только при использовании inlet ExternalIP.

  • externalPortцелочисленный

    Порт, который вывешивается наружу на externalIP или балансировщике.

    По умолчанию: 5416

  • hostPortцелочисленный

    Порт для подключения к openvpn-серверу, который будет доступен на узле, на котором запущен Pod openvpn.

    Параметр доступен при выборе inlet HostPort.

    По умолчанию: 5416

  • httpsобъект

    Тип сертификата, используемого для панели администратора openvpn.

    При использовании этого параметра полностью переопределяются глобальные настройки global.modules.https.

    • certManagerобъект
      • clusterIssuerNameстрока

        ClusterIssuer, используемый для панели администратора openvpn

        Доступны letsencrypt, letsencrypt-staging, selfsigned, но вы можете определить свои.

        По умолчанию: "letsencrypt"

    • customCertificateобъект
      • secretNameстрока

        Указываем имя Secret’а в пространстве имен d8-system, который будет использоваться для панели администратора openvpn (данный Secret должен быть в формате kubernetes.io/tls).

        По умолчанию: "false"

    • modeстрока

      Режим работы HTTPS:

      • CertManager — панель администратора openvpn будет работать по HTTPS, самостоятельно заказывая сертификат с помощью ClusterIssuer, заданного в параметре certManager.clusterIssuerName;
      • CustomCertificate — панель администратора openvpn будет работать по HTTPS используя сертификат из пространства имен d8-system;
      • Disabled — в данном режиме панель администратора openvpn будет работать только по HTTP;
      • OnlyInURI — панель администратора openvpn будет работать по HTTP (подразумевая, что перед ней стоит внешний HTTPS-балансировщик, который терминирует HTTPS) и все ссылки в user-authn будут генерироваться с HTTPS-схемой.

      Допустимые значения: Disabled, CertManager, CustomCertificate, OnlyInURI

  • ingressClassстрока

    Класс Ingress-контроллера, который используется для панели администратора openvpn.

    По умолчанию — глобальное значение modules.ingressClass.

  • inletстрока

    Способы подключения из внешнего мира.

    Поддерживаются следующие inlet’ы:

    • ExternalIP — когда имеются узлы с публичными IP. Используется в комбинации с параметром externalIP.
    • LoadBalancer — для всех облачных провайдеров и их схем размещения, в которых поддерживается заказ LoadBalancer’ов.
    • HostPort — порт сервера openvpn будет доступен на узле, на котором находится Pod. За выбор порта отвечает параметр hostPort.
    • Direct — для нестандартных случаев. В пространстве имен d8-openvpn необходимо создать сервис с именем openvpn-external, который отправляет трафик в Pod с лейблом app: openvpn на порт с именем ovpn-tcp (или просто 1194). Из этого сервиса парсится externalIP, IP балансировщика или host балансировщика. Если ничего этого нет, то необходимо указать параметр externalHost.

    Допустимые значения: ExternalIP, LoadBalancer, HostPort, Direct

  • loadBalancerобъект

    Секция опциональных настроек для inlet’а LoadBalancer.

    • annotationsобъект

      Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.

      Внимание! модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа load balancer’а применяются только при создании сервиса, то для обновления подобных параметров вам необходимо будет выключить и включить модуль.

    • sourceRangesмассив строк

      Список CIDR, которым разрешен доступ на балансировщик.

      Облачный провайдер может не поддерживать данную опцию и игнорировать её.

  • nodeSelectorобъект

    Структура, аналогичная spec.nodeSelector Kubernetes Pod.

    Если ничего не указано или указано false — будет использоваться автоматика.

  • pushToClientDNSстрока

    Адрес DNS-сервера, который отправляется клиентам при подключении.

    По умолчанию — IP сервиса kube-system/kube-dns.

  • pushToClientRoutesмассив строк

    Список роутов, которые отправляются клиентам при подключении.

    По умолчанию — генерируется автоматически из локальной сети кластера, сервисной подсети и подсети Pod’ов.

  • pushToClientSearchDomainsмассив строк

    Список доменов поиска, которые отправляются клиентам при подключении.

    По умолчанию используется значение из переменной global.discovery.clusterDomain.

  • storageClassстрока

    Параметр будет удален в следующих релизах, т.к. мы отказались от использования диска для хранения сертификатов.

  • tolerationsмассив объектов

    Структура, аналогичная spec.tolerations в Kubernetes Pod.

    Если ничего не указано или указано false — будет использоваться автоматика.

    • effectстрока
    • keyстрока
    • operatorстрока
    • tolerationSecondsцелочисленный
    • valueстрока
  • tunnelNetworkстрока

    Подсеть используемая для туннеля.

    По умолчанию: "172.25.175.0/255.255.255.0"