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

Модуль включен по умолчанию в наборах модулей: 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 deploy/deckhouse -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 deploy/deckhouse -c deckhouse -- deckhouse-controller module disable dashboard
    

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

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

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

Параметры

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

  • accessLevelстрока

    Уровень доступа в dashboard, если отключен модуль user-authn и не включена внешняя аутентификация (externalAuthentication). Возможные значения описаны в user-authz.

    По умолчанию используется уровень User.

    В случае использования модуля user-authn или другой внешней аутентификации (externalAuthentication) права доступа необходимо настраивать с помощью модуля user-authz.

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

    Допустимые значения: User, PrivilegedUser, Editor, Admin, ClusterEditor, ClusterAdmin, SuperAdmin

  • authобъект

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

    • auth.allowScaleбулевый

      Активация возможности скейлить Deployment и StatefulSet из веб-интерфейса.

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

    • auth.externalAuthenticationобъект

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

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

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

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

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

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

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

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

        • Значение по умолчанию: false.

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

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

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

  • highAvailabilityбулевый

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

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

    Пример:

    highAvailability: true
    
  • httpsобъект

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

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

    Примеры:

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

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

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

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

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

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

    • https.modeстрока

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

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

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

  • ingressClassстрока

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

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

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

  • nodeSelectorобъект

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

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

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

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

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

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

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

По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication (см. ниже). Если эти варианты отключены, модуль включит basic auth со сгенерированным паролем.

Посмотреть сгенерированный пароль можно командой:

kubectl -n d8-system exec deploy/deckhouse -- deckhouse-controller module values dashboard -o json | jq '.dashboard.internal.auth.password'

Чтобы сгенерировать новый пароль, нужно удалить Secret:

kubectl -n d8-dashboard delete secret/basic-auth

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