В модуле реализовано 14 алертов.

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

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

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

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

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

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

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

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

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

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

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

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

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

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: upmeter
spec:
  version: 2
  enabled: true
  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-адресу.

        Пример:

        whitelistSourceRanges:
        - 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-адресу.

        Пример:

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

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

    Пример:

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

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

  • https
    объект

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

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

    Примеры:

    https:
      mode: CustomCertificate
      customCertificate:
        secretName: foobar
    
    https:
      mode: CertManager
      certManager:
        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, будет использоваться автоматика.

    Пример:

    nodeSelector:
      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-адресу.

        Пример:

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

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

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

      Примеры:

      https:
        mode: CustomCertificate
        customCertificate:
          secretName: foobar
      
      https:
        mode: CertManager
        certManager:
          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

      Примеры:

      storageClass: false
      
      storageClass: 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’а.

    Примеры:

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

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

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

    Пример:

    tolerations:
    - key: key1
      operator: Equal
      value: value1
      effect: NoSchedule
    
    • 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 upmeter -o json | jq '.upmeter.internal.auth.webui.password'

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

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

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

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

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

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

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