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

Модуль включен по умолчанию в наборах модулей: 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
    

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

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

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

Параметры

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

  • 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.allowedUserGroups
      массив строк

      An array of user groups that can access the dashboard.

      This parameter is used if the user-authn module is enabled or the externalAuthentication parameter is set.

      Caution! Note that you must add those groups to the appropriate field in the DexProvider config if this module is used together with the user-authn one.

    • 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.

      Пример:

      whitelistSourceRanges:
      - 1.1.1.1/32
      
  • 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 svc/deckhouse-leader -c deckhouse -- deckhouse-controller module values dashboard -o json | jq '.dashboard.internal.auth.password'

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

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

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