Установка PREM#
Цель выполнения#
Целью данной инструкции «Установка PREM» является описание последовательных шагов по развертыванию компонента PREM. Выполнение инструкции обеспечивает корректную установку и настройку сервисов «Calculator» и «Adapter», включая сборку и публикацию контейнерных образов, а также развертывание компонентов с помощью Helm-чарта.
Последовательность действий#
Для того, чтобы установить PREM, необходимо выполнить следующие шаги:
Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив
Шаг 2. Добавьте kubeconfig, бинарные и конфигурационные файлы в свой проект
Шаг 3. Подготовка Docker-образов
Шаг 4. Развертывание сервиса c помощью Helm чарта
Шаг 5. Настройка конфигурации prem-adapter-config
Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив#
Цель выполнения#
Получить все необходимые компоненты установки PREM: бинарные файлы, конфигурации и SBOM-данные - в локальной среде для последующего использования при развертывании.
Последовательность действий#
Скачайте дистрибутив с компонентом PREM и извлеките содержимое zip файла в любую папку вашей ОС.
Перед установкой убедитесь, что состав дистрибутива компонента 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-кластеру и предоставить ему необходимые бинарные и конфигурационные файлы, организовав корректную структуру проекта для последующих этапов установки.
Последовательность действий#
Добавьте вручную kubeconfig, бинарные и конфигурационные файлы в свой проект так, чтобы иерархия файлов соответствовала следующей схеме:
∟ AUSC
∟ bin/ # папка ausc-bin-{version}-{build}-distrib
∟ conf/ # папка ausc-cfg-{version}-{build}-distrib
∟ kubeconfig # файл `kubeconfig` предоставляется администратором Kubernetes-кластера
Бинарные и конфигурационные файлы, а также kubeconfig должны находиться в корне каталога PREM.
Проверка результата#
Убедитесь, что:
Файл
kubeconfigразмещен в корне директорииPREM
Шаг 3. Подготовка Docker-образов#
Цель выполнения#
Цель выполнения шага - подготовить бинарные файлы приложения, собрать их в контейнерный образ (image) и интегрировать его в конфигурации установки, чтобы обеспечить корректную работу системы.
Последовательность действий#
Используйте инструменты сборки, чтобы создать исполняемые файлы или артефакты.
Соберите 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
Обновите конфигурационные файл values.yaml (conf/helm/prem/values.yaml), указав новый образ:
registry: <ваш registry>
registry_path: <ваш путь>
Проверка результата#
Если все выполнено верно, система будет использовать актуальный образ с собранными бинарными файлами, и конфигурации установки будут работать без ошибок.
Шаг 4. Развертывание сервисов c помощью Helm чарта#
Цель выполнения#
Цель выполнения шага - развернуть сервисы с использованием Helm-чарта, используя подготовленный Docker-образ с бинарными файлами, чтобы обеспечить корректную работу системы в кластере Kubernetes.
Последовательность действий#
Убедитесь, что Helm-чарт существует и содержит конфигурации для развертывания сервисов.
Выполните команду для установки чарта в кластер Kubernetes:
helm install <ваш релиз> ./path/to/chart --kubeconfig ./<ваш kubeconfig>.yaml --namespace <название вашего namespace>
Проверка результата#
Если все выполнено верно:
Helm-релиз будет отображаться в списке (helm list).
Все поды будут работать без ошибок.
PREM успешно взаимодействует с ресурсами в наблюдаемых namespace-ах.
Шаг 5. Настройка конфигурации prem-adapter-config#
Цель выполнения#
Данная инструкция предназначена для настройки конфигурации prem-adapter-config
Последовательность действий#
Изучите конфигурацию и описание полей 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
Описание полей
Общие параметры метрики#
Поле |
Описание |
|---|---|
|
Имя предсказанной метрики. |
|
PromQL-запрос, по которому извлекаются исходные данные из хранилища метрик. |
|
Частота пересчета прогноза. Указывает, как часто PREM будет обновлять модель и генерировать новые предсказания (например, |
|
Временной интервал, используемый для загрузки исторических данных при старте PREM. Например, |
Параметры модели Prophet#
Поле |
Описание |
|---|---|
|
Частота сбора метрик в хранилище ( |
|
количество периодов, на которое необходимо получить предсказание. Например, при |
|
Время хранения данных в prem-calculator. Все метрики старше now-timeout будут удалены из модели. Timeout ограничивает время хранения метрик для избежания перегрузки модели. |
|
Пользовательские сезонности. Prophet может учитывать периодические колебания в данных. Сезонности задаются в долях от суток. Ключ может быть любым, значение - количество периодов в одних сутках. |
Создайте ConfigMap
Создайте YAML-файл, например prem-config.yaml, и начните с базовой структуры ConfigMap.
kind: ConfigMap
apiVersion: v1
metadata:
name: prem-adapter-config
data:
metrics-config.yaml: |
metrics:
Определите метрику для прогнозирования
Добавьте в список metrics новую метрику. Каждая метрика - это отдельный элемент списка.
Укажите имя предсказываемой метрики (
name)
Задайте уникальное имя, под которым результат прогноза будет доступен в системе.
data:
metrics-config.yaml: |
metrics:
- name: "cpu1"
Напишите query запрос
Укажите запрос, который извлекает исходные данные из Prometheus или другого хранилища.
data:
metrics-config.yaml: |
metrics:
- name: "cpu1"
query: "integration_cpu_load{}"
Настройте частоту пересчета (
recalculationInterval)
Определите, как часто PREM будет перестраивать модель и генерировать новый прогноз.
data:
metrics-config.yaml: |
metrics:
- name: "cpu1"
query: "integration_cpu_load{}"
recalculationInterval: "30s"
Установите окно истории (
lookbackWindow)
Задайте объем исторических данных, загружаемых при старте PREM-адаптера.
data:
metrics-config.yaml: |
metrics:
- name: "cpu1"
query: "integration_cpu_load{}"
recalculationInterval: "30s"
lookbackWindow: "2h"
Примечание:
При запуске PREM загрузит данные за последние 2 часа.
Должно быть достаточно для захвата сезонных паттернов (например, часовых или дневных).
Настройте параметры модели 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
Проверьте итоговую конфигурацию
Пример полной конфигурации:
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
Примените конфигурацию
Выполните команду:
bash kubectl apply -f prem-config.yaml
Проверка результата#
Убедитесь, что:
ConfigMap
prem-adapter-configуспешно применен.
Проверка результата#
Корректным результатом проверки установки PREM является соответствие успешным проверкам в шагах:
Сборка и установка бинарных файлов.
Развертывание сервисов c помощью Helm чарта.