В модуле реализовано 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: 3
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

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

  • 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.ingressClass
      строка

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

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

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

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

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

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

        Настройка глобального параметра storageClass учитывается только при включении модуля. Изменение глобального параметра storageClass при включенном модуле не приведет к перезаказу диска.

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

        Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск будет перезаказан, и все данные удалятся.

        Внимание. При переносе 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, согласно настройке глобального параметра storageClass.

      Настройка глобального параметра storageClass учитывается только при включении модуля. Изменение глобального параметра storageClass при включенном модуле не приведет к перезаказу диска.

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

      Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск будет перезаказан, и все данные удалятся.

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

      Примеры:

      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 больше не поддерживаются.