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

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

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

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

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

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

    1kubectl -ti -n d8-system exec deploy/deckhouse -c deckhouse -- deckhouse-controller module enable upmeter
    

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

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

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

    1kubectl -ti -n d8-system exec deploy/deckhouse -c deckhouse -- deckhouse-controller module disable upmeter
    

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

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

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

Параметры

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

  • auth
    объект

    Обязательный параметр

    Доступ к веб-интерфейсу.

    • auth.status
      объект

      Обязательный параметр

      Настройки доступа к веб-интерфейсу.

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

        Группы доступа к просмотру интерфейса приложения.

        • Используется, если включен модуль user-authn или параметр externalAuthentication.
        • Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
      • auth.status.externalAuthentication
        объект

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

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

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

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

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

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

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

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

        Пример:

        1whitelistSourceRanges:
        2- 1.1.1.1/32
        
    • auth.webui
      объект

      Обязательный параметр

      Настройки доступа к веб-интерфейсу.

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

        Группы доступа к просмотру интерфейса приложения.

        • Используется, если включен модуль user-authn или параметр externalAuthentication.
        • Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
      • auth.webui.externalAuthentication
        объект

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

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

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

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

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

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

      • auth.webui.password
        строка

        Password for http authorization of the admin user. It is generated automatically, but you can change it.

        This parameter is used if the externalAuthentication is not enabled.

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

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

        Пример:

        1whitelistSourceRanges:
        2- 1.1.1.1/32
        
  • disabledProbes
    массив строк

    Массив строк из названий групп или определенных проб из группы. Названия можно подсмотреть в веб-интерфейсе.

    Пример:

    1disabledProbes:
    2  - "synthetic/api" # Отключить отдельную пробу.
    3  - "synthetic/"    # Отключить группу проб.
    4  - control-plane   # Или без /.
    

    По умолчанию: []

  • https
    объект

    Тип сертификата, используемого для веб-приложений webui и status.

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

    Примеры:

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

        ClusterIssuer, используемый для webui/status.

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

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

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

        Имя Secret’а в namespace d8-system, который будет использоваться для webui/status.

        Secret должен быть в формате kubernetes.io/tls.

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

    • https.mode
      строка

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

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

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

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

  • nodeSelector
    объект

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

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

    Пример:

    1nodeSelector:
    2  disktype: ssd
    
  • smokeMini
    объект

    Configuration of authentication for smoke-mini.

    • smokeMini.auth
      объект

      Обязательный параметр

      Настройки доступа к веб-интерфейсу.

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

        Группы доступа к просмотру интерфейса приложения.

        • Используется, если включен модуль user-authn или параметр externalAuthentication.
        • Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
      • smokeMini.auth.externalAuthentication
        объект

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

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

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

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

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

      • smokeMini.auth.password
        строка

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

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

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

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

        Пример:

        1whitelistSourceRanges:
        2- 1.1.1.1/32
        
    • smokeMini.https
      объект

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

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

      Примеры:

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

          ClusterIssuer, используемый для smoke-mini.

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

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

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

          Имя Secret’а в namespace d8-system, который будет использоваться для smoke-mini.

          Secret должен быть в формате kubernetes.io/tls.

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

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

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

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

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

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

    • smokeMini.ingressClass
      строка

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

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

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

    • smokeMini.storageClass

      StorageClass для использования при проверке работоспособности дисков.

      • Если не указано, используется StorageClass существующей PVC, а если PVC пока нет, используется или глобальный StorageClass, или global.discovery.defaultStorageClass, а если и их нет, данные сохраняются в emptyDir.
      • global.discovery.defaultStorageClass применяется только при включении модуля, смена StorageClass по умолчанию в кластере не приведет к перезаказу диска.
      • Если указать false, будет форсироваться использование emptyDir’а.

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

      Примеры:

      1storageClass: false
      
      1storageClass: default
      
  • smokeMiniDisabled
    булевый

    Выключение smokeMini. Также отключает группу “synthetic”.

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

  • statusPageAuthDisabled
    булевый

    Выключение авторизации для status-домена.

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

  • storageClass

    Имя storageClass’а, который будет использоваться.

    • Если не указано, используется StorageClass существующей PVC, а если PVC пока нет, используется или глобальный StorageClass, или global.discovery.defaultStorageClass, а если и их нет, данные сохраняются в emptyDir.
    • global.discovery.defaultStorageClass применяется только при включении модуля, смена StorageClass по умолчанию в кластере не приведет к перезаказу диска.
    • ОСТОРОЖНО! При указании этой опции в значение, отличное от текущего (из существующей PVC), диск будет перезаказан, а все данные удалены.
    • Если указать false, будет форсироваться использование emptyDir’а.

    Примеры:

    1storageClass: false
    
    1storageClass: default
    
  • tolerations
    массив объектов

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

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

    Пример:

    1tolerations:
    2- key: key1
    3  operator: Equal
    4  value: value1
    5  effect: NoSchedule
    
    • tolerations.effect
      строка
    • tolerations.key
      строка
    • tolerations.operator
      строка
    • tolerations.tolerationSeconds
      целочисленный
    • tolerations.value
      строка

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

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

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

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

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

1kubectl -n d8-upmeter delete secret/basic-auth-webui

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

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

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

1kubectl -n d8-upmeter delete secret/basic-auth-status

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