В модуле реализовано 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Пример:

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

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

      Пример:

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

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

    • settings.https
      объект

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

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

      Примеры:

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

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

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

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

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

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

          Secret должен быть в формате TLS.

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

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

    • settings.nodeSelector
      объект

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

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

      Пример:

      nodeSelector:
        disktype: ssd
      
    • settings.smokeMini
      объект

      Configuration of authentication for smoke-mini.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Пример:

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

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

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

        Примеры:

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

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

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

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

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

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

            Secret должен быть в формате TLS.

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

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

      • settings.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])?)*$

      • settings.smokeMini.storageClass

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

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

        Внимание. При переносе Upmeter с локальным хранилищем на другие узлы, поды зависнут в состоянии Pending. В этом случае будет необходимо сохранить базу данных Upmeter, удалить старые PVC и перезапустить под вручную. Под локальным хранилищем подразумевается StorageClass, связанный не с сетевым хранилищем, а с локальным томом на узле (например, StorageClass, создаваемый модулем local-path-provisioner).

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

        Примеры:

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

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

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

    • settings.statusPageAuthDisabled
      булевый

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

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

    • settings.storageClass

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

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

      Примеры:

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

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

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

      Пример:

      tolerations:
      - key: key1
        operator: Equal
        value: value1
        effect: NoSchedule
      
      • settings.tolerations.effect
        строка
      • settings.tolerations.key
        строка
      • settings.tolerations.operator
        строка
      • settings.tolerations.tolerationSeconds
        целочисленный
      • settings.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 больше не поддерживаются.