Аутентификация

По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication.

Если ни один из этих способов не включен, модуль dashboard будет отключен.

Параметры auth.password и accessLevel больше не поддерживаются.

Настройки

У модуля нет обязательных настроек.

Модуль включен по умолчанию в наборах модулей: Default, Managed. Модуль выключен по умолчанию в наборе модулей Minimal.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль dashboard, установите spec.enabled в true или false в ModuleConfig/dashboard (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: dashboard
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable dashboard
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: dashboard
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable dashboard
    

Чтобы настроить модуль, используйте ресурс ModuleConfig с именем dashboard (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/dashboard для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: dashboard
spec:
  version: 3
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 3

  • settings
    объект
    • settings.auth
      объект

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

      • settings.auth.allowedUserGroups
        массив строк

        Массив групп пользователей, которые могут иметь доступ к dashboard.

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

        Внимание. Если модуль используется вместе с user-authn, не забудьте добавить эти группы в соответствующее поле конфигурации DexProvider.

      • settings.auth.externalAuthentication
        объект

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

        Внешняя аутентификация включается автоматически, если включен модуль user-authn.

        Внимание. Из соображений безопасности этот режим работает только при условии, что параметр https.mode (глобальный или в модуле) не установлен в значение Disabled.

        • settings.auth.externalAuthentication.authSignInURL
          строка

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

        • settings.auth.externalAuthentication.authURL
          строка

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

        • settings.auth.externalAuthentication.useBearerTokens
          булевый

          Токены авторизации. Dashboard должен взаимодействовать с Kubernetes API от имени пользователя. Для этого сервис аутентификации обязан возвращать HTTP-заголовок Authorization в своих ответах, содержащий bearer-token. Этот токен будет использоваться dashboard для выполнения запросов к API-серверу Kubernetes.

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

      • settings.auth.whitelistSourceRanges
        массив строк

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

        Пример:

        whitelistSourceRanges:
        - 1.1.1.1/32
        
    • settings.highAvailability
      булевый

      Ручное управление режимом отказоустойчивости.

      По умолчанию режим отказоустойчивости определяется автоматически. Подробнее.

      Пример:

      highAvailability: true
      
    • settings.https
      объект

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

      Этот параметр переопределяет глобальные настройки global.modules.https.

      Примеры:

      https:
        mode: CustomCertificate
        customCertificate:
          secretName: foobar
      
      https:
        mode: CertManager
        certManager:
          clusterIssuerName: letsencrypt
      
      • settings.https.certManager
        объект
        • settings.https.certManager.clusterIssuerName
          строка

          Тип используемого ClusterIssuer. Доступны letsencrypt, letsencrypt-staging, selfsigned, но вы можете определить свои значения.

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

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

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

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

      • settings.https.mode
        строка

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

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

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

    • settings.ingressClass
      строка

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

      Опциональный параметр, по умолчанию используется глобальное значение modules.ingressClass.

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

    • settings.nodeSelector
      объект

      Аналогично параметру Kubernetes spec.nodeSelector у подов.

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

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

      Аналогично параметру Kubernetes spec.tolerations у подов.

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

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