Установка PREM#

Цель выполнения#

Целью данной инструкции «Установка PREM» является описание последовательных шагов по развертыванию компонента PREM. Выполнение инструкции обеспечивает корректную установку и настройку сервисов «Calculator» и «Adapter», включая сборку и публикацию контейнерных образов, а также развертывание компонентов с помощью Helm-чарта.

Последовательность действий#

Для того, чтобы установить PREM, необходимо выполнить следующие шаги:

Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив

Шаг 2. Добавьте kubeconfig, бинарные и конфигурационные файлы в свой проект

Шаг 3. Подготовка Docker-образов

Шаг 4. Развертывание сервиса c помощью Helm чарта

Шаг 5. Настройка конфигурации prem-adapter-config

Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив#

Цель выполнения#

Получить все необходимые компоненты установки PREM: бинарные файлы, конфигурации и SBOM-данные - в локальной среде для последующего использования при развертывании.

Последовательность действий#

  1. Скачайте дистрибутив с компонентом PREM и извлеките содержимое zip файла в любую папку вашей ОС.

  2. Перед установкой убедитесь, что состав дистрибутива компонента PREM корректен и представлен в полном объеме.

Компонент PREM предоставляет 2 архива (бинарные файлы и конфигурации), а также дополнительные файлы:

prem-bin-{version}-{build}-distrib#

Элемент дистрибутива

Описание

./package/bh/prem-calculator

Бинарные файлы приложения «Calculator»

./package/bh/prem-adapter

Бинарные файлы приложения «Adapter»

./package/docker/prem-calculator/Dockerfile

Dockerfile для сборки приложения «Calculator»

./package/docker/prem-adapter/Dockerfile

Dockerfile для сборки приложения «Adapter»

prem-cfg-{version}-{build}-distrib#

Конфигурации для установки.

Элемент дистрибутива

Описание

./package/conf/helm/application/prem/*

Конфигурации развертывавния компонента

prem-bin-{version}-{build}–cyclonedx-distrib.json#

В данном файле находится спецификация программного обеспечения SBOM (Software Bill Of Materials) — это список всех open source и других сторонних компонент, использующихся в кодовой базе программного продукта.

SBOM состоит из сторонних библиотек с открытым исходным кодом, программных пакетов и собственных артефактов, созданных командной. Дополнительно SBOM может содержать информацию по уязвимостям, подлинности, дочерним зависимостям и множество других контекстных данных.

С помощью SBOM вы можете просмотреть версии сборки, номера выпусков компонентов программного обеспечения и решить, продолжать их использование или нет. Это необходимо во избежание проблем с безопасностью в цепочках зависимостей. Поэтому, если в одной из библиотек обнаруживается проблема, вам необходимо знать, уязвимо ли приложение в целом.

CycloneDX — это стандарт SBOM от фонда OWASP, разработанный для контекстов безопасности приложений и анализа компонентов цепочки поставок, обеспечивающий инвентаризацию всех компонентов программного обеспечения как собственных, так и сторонних производителей.

Проверка результата#

Убедитесь, что:

  • Архивы prem-bin-{version}-{build}-distrib.zip и prem-cfg-{version}-{build}-distrib.zip успешно извлечены.

  • В директории ./package/ присутствуют подкаталоги bh, docker, conf.

Шаг 2. Добавьте kubeconfig, бинарные и конфигурационные файлы в свой проект#

Цель выполнения#

Обеспечить доступ PREM к Kubernetes-кластеру и предоставить ему необходимые бинарные и конфигурационные файлы, организовав корректную структуру проекта для последующих этапов установки.

Последовательность действий#

  1. Добавьте вручную kubeconfig, бинарные и конфигурационные файлы в свой проект так, чтобы иерархия файлов соответствовала следующей схеме:

∟ AUSC
    ∟ bin/ # папка ausc-bin-{version}-{build}-distrib
    ∟ conf/ # папка ausc-cfg-{version}-{build}-distrib
    ∟ kubeconfig # файл `kubeconfig` предоставляется администратором Kubernetes-кластера

Бинарные и конфигурационные файлы, а также kubeconfig должны находиться в корне каталога PREM.

Проверка результата#

Убедитесь, что:

  • Файл kubeconfig размещен в корне директории PREM

Шаг 3. Подготовка Docker-образов#

Цель выполнения#

Цель выполнения шага - подготовить бинарные файлы приложения, собрать их в контейнерный образ (image) и интегрировать его в конфигурации установки, чтобы обеспечить корректную работу системы.

Последовательность действий#

  1. Используйте инструменты сборки, чтобы создать исполняемые файлы или артефакты.

  2. Соберите Docker-образ, включающий бинарные файлы.

Чтобы собрать Docker-образ для prem-calculator введите следующую команду:

   docker build -t <ваш registry>/<ваш путь>/prem-calculator:latest -f package/docker/prem-calculator/Dockerfile . --build-arg=<базовый образ>

Далее отправьте Docker-образ для prem-calculator в registry, для этого введите следующую команду:

   docker push <ваш registry>/<ваш путь>/prem-calculator:latest

Чтобы собрать Docker-образ для prem-adapter введите следующую команду:

   docker build -t <ваш registry>/<ваш путь>/prem-adapter:latest -f package/docker/prem-adapter/Dockerfile . --build-arg=<базовый образ>

Далее отправьте Docker-образ для adapter в registry, для этого введите следующую команду:

   docker push <ваш registry>/<ваш путь>/prem-adapter:latest
  1. Обновите конфигурационные файл values.yaml (conf/helm/prem/values.yaml), указав новый образ:

registry: <ваш registry>
registry_path: <ваш путь>

Проверка результата#

Если все выполнено верно, система будет использовать актуальный образ с собранными бинарными файлами, и конфигурации установки будут работать без ошибок.

Шаг 4. Развертывание сервисов c помощью Helm чарта#

Цель выполнения#

Цель выполнения шага - развернуть сервисы с использованием Helm-чарта, используя подготовленный Docker-образ с бинарными файлами, чтобы обеспечить корректную работу системы в кластере Kubernetes.

Последовательность действий#

  1. Убедитесь, что Helm-чарт существует и содержит конфигурации для развертывания сервисов.

  2. Выполните команду для установки чарта в кластер Kubernetes:

   helm install <ваш релиз> ./path/to/chart --kubeconfig ./<ваш kubeconfig>.yaml --namespace <название вашего namespace>

Проверка результата#

Если все выполнено верно:

  • Helm-релиз будет отображаться в списке (helm list).

  • Все поды будут работать без ошибок.

  • PREM успешно взаимодействует с ресурсами в наблюдаемых namespace-ах.

Шаг 5. Настройка конфигурации prem-adapter-config#

Цель выполнения#

Данная инструкция предназначена для настройки конфигурации prem-adapter-config

Последовательность действий#

  1. Изучите конфигурацию и описание полей prem-adapter-config

Конфигурационный файл prem-adapter-config используется для настройки предсказательной модели в системе PREM. Он представляет собой ConfigMap, содержащий YAML-конфигурацию метрик и параметров их прогнозирования.

kind: ConfigMap
apiVersion: v1
metadata:
  name: prem-adapter-config
data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
        query: "integration_cpu_load{}"
        recalculationInterval: "30s"
        lookbackWindow: "2h"
        prophet:
          freq: "10s"
          periods: 200
          timeout: "2d"
          seasonality:
            hourly: 24
            ten_minutally: 144

Описание полей

Общие параметры метрики#

Поле

Описание

name

Имя предсказанной метрики.

query

PromQL-запрос, по которому извлекаются исходные данные из хранилища метрик.

recalculationInterval

Частота пересчета прогноза. Указывает, как часто PREM будет обновлять модель и генерировать новые предсказания (например, "30s", "1m").

lookbackWindow

Временной интервал, используемый для загрузки исторических данных при старте PREM. Например, "2h" означает, что при запуске будут загружены данные за последние 2 часа.

Параметры модели Prophet#

Поле

Описание

freq

Частота сбора метрик в хранилище (scrape_interval). Определяет шаг между соседними точками временного ряда (например, "10s", "1m").

periods

количество периодов, на которое необходимо получить предсказание. Например, при freq: "10s" и periods: 200 прогноз будет сделан на 200 * 10s = 33.3 минуты вперед.

timeout

Время хранения данных в prem-calculator. Все метрики старше now-timeout будут удалены из модели. Timeout ограничивает время хранения метрик для избежания перегрузки модели.

seasonality

Пользовательские сезонности. Prophet может учитывать периодические колебания в данных. Сезонности задаются в долях от суток. Ключ может быть любым, значение - количество периодов в одних сутках.

Примеры:
- hourly: 24 - часовая сезонность (24 раза в день)
- ten_minutely: 144 - каждые 10 минут (144 периода в сутках)
- minutely: 1440 - минутная сезонность

Prophet по умолчанию учитывает годовую, недельную, дневную и часовую сезонности.

  1. Создайте ConfigMap

Создайте YAML-файл, например prem-config.yaml, и начните с базовой структуры ConfigMap.

kind: ConfigMap
apiVersion: v1
metadata:
  name: prem-adapter-config
data:
  metrics-config.yaml: |
    metrics:
  1. Определите метрику для прогнозирования

Добавьте в список metrics новую метрику. Каждая метрика - это отдельный элемент списка.

  1. Укажите имя предсказываемой метрики (name)

Задайте уникальное имя, под которым результат прогноза будет доступен в системе.

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
  1. Напишите query запрос

Укажите запрос, который извлекает исходные данные из Prometheus или другого хранилища.

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
        query: "integration_cpu_load{}"
  1. Настройте частоту пересчета (recalculationInterval)

Определите, как часто PREM будет перестраивать модель и генерировать новый прогноз.

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
        query: "integration_cpu_load{}"
        recalculationInterval: "30s"
  1. Установите окно истории (lookbackWindow)

Задайте объем исторических данных, загружаемых при старте PREM-адаптера.

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
        query: "integration_cpu_load{}"
        recalculationInterval: "30s"
        lookbackWindow: "2h"

Примечание:

  • При запуске PREM загрузит данные за последние 2 часа.

  • Должно быть достаточно для захвата сезонных паттернов (например, часовых или дневных).

  1. Настройте параметры модели Prophet

В блоке prophet задаются параметры алгоритма прогнозирования.

8.1 Укажите частоту метрик (freq)

Это интервал между соседними точками во временном ряду (scrape_interval).

Примеры:

  • Если метрики собираются каждые 15 секунд -> freq: "15s"

  • Каждую минуту -> freq: "1m"

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
        query: "integration_cpu_load{}"
        recalculationInterval: "30s"
        lookbackWindow: "2h"
        prophet:
          freq: "10s"

8.2 Определите горизонт прогноза (periods)

Сколько шагов (freq) вперед нужно предсказать.

Расчет:

  • При freq: "15s" и periods: 120 → прогноз на 120 × 15 = 1800 секунд = 30 минут.

data:
  metrics-config.yaml: |
    metrics:
        prophet:
          freq: "10s"
          periods: 200

8.3 Задайте время хранения данных (timeout)

PREM будет удалять данные старше указанного времени.

Цель: предотвратить накопление слишком большого объема данных.

  • Обычно достаточно от 1 до 7 дней.

  • Слишком большое значение может привести к высокому потреблению памяти.

data:
  metrics-config.yaml: |
    metrics:
        prophet:
          freq: "10s"
          periods: 200
          timeout: "2d"

8.4 Настройте сезонности (seasonality)

Если в данных есть повторяющиеся паттерны - укажите их.

Как рассчитывается:

  • Число циклов в одних сутках.

    • hourly: 24 — каждый час (24 раза в день)

    • ten_minutely: 144 - каждые 10 минут (1440 / 10 = 144)

data:
  metrics-config.yaml: |
    metrics:
        prophet:
          freq: "10s"
          periods: 200
          timeout: "2d"
          seasonality:
            hourly: 24
            ten_minutally: 144
  1. Проверьте итоговую конфигурацию

Пример полной конфигурации:

kind: ConfigMap
apiVersion: v1
metadata:
  name: prem-adapter-config
data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu1"
        query: "integration_cpu_load{}"
        recalculationInterval: "30s"
        lookbackWindow: "2h"
        prophet:
          freq: "10s"
          periods: 200
          timeout: "2d"
          seasonality:
            hourly: 24
            ten_minutally: 144
  1. Примените конфигурацию

Выполните команду:

bash kubectl apply -f prem-config.yaml

Проверка результата#

Убедитесь, что:

  • ConfigMap prem-adapter-config успешно применен.

Проверка результата#

Корректным результатом проверки установки PREM является соответствие успешным проверкам в шагах:

  • Сборка и установка бинарных файлов.

  • Развертывание сервисов c помощью Helm чарта.