Установка PREM#
Цель выполнения#
Целью данной инструкции «Установка PREM» является описание последовательных шагов по развертыванию компонента PREM. Выполнение инструкции обеспечивает корректную установку и настройку сервисов «Calculator» и «Adapter», включая сборку и публикацию контейнерных образов, а также развертывание компонентов с помощью Helm-чарта.
Последовательность действий#
Для того, чтобы установить PREM, необходимо выполнить следующие шаги:
Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив
Шаг 2. Добавьте kubeconfig, бинарные и конфигурационные файлы в свой проект
Шаг 3. Подготовка Docker-образов
Шаг 4. Развертывание сервиса c помощью Helm чарта
Шаг 5. Настройка конфигурации prem-metrics-config
Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив#
Цель выполнения#
Получить все необходимые компоненты установки PREM: бинарные файлы, конфигурации и SBOM-данные - в локальной среде для последующего использования при развертывании.
Последовательность действий#
Скачайте дистрибутив с компонентом PREM и извлеките содержимое zip файла в любую папку вашей ОС.
Перед установкой убедитесь, что состав дистрибутива компонента PREM корректен и представлен в полном объеме.
Компонент PREM предоставляет 2 архива (бинарные файлы и конфигурации), а также дополнительные файлы:
prem-bin-{version}-{build}-distrib#
Элемент дистрибутива |
Описание |
|---|---|
./package/bh/prem-calculator |
Бинарные файлы приложения «Calculator» |
./package/docker/prem-calculator/Dockerfile |
Dockerfile для сборки приложения «Calculator» |
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, бинарные и конфигурационные файлы в свой проект так, чтобы иерархия файлов соответствовала следующей схеме:
∟ PREM
∟ bin/ # папка prem-bin-{version}-{build}-distrib
∟ conf/ # папка prem-cfg-{version}-{build}-distrib или prem-infra-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
Обновите конфигурационные файл 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-metrics-config#
Цель выполнения#
Данная инструкция предназначена для настройки конфигурации prem-metrics-config.
Последовательность действий#
Изучите конфигурацию и описание полей
prem-metrics-config.Конфигурационный файлprem-metrics-configиспользуется для настройки предсказательной модели в системе PREM. Он представляет собойConfigMap, содержащий YAML-конфигурацию метрик и параметров их прогнозирования.
kind: ConfigMap
apiVersion: v1
metadata:
name: prem-metrics-config
namespace: $NAMESPACE
data:
metrics-config.yaml: |
metrics:
- name: "prem_metric_aft_1"
uid: "prem_metric_aft_1"
data: # неизменяемая
retention: 30d # timeout
initHistoryInterval: 7d # lookbackWindow - timeout
prometheus: # oneOf
query: 'vector(15)'
frequency: 30s # freq
model: # optional, неизменяемая - это пользователь не указывает в 1 версии
ensemble:
smoothing:
trend: 0.0 # beta - параметр ансамбля
seasonal: 0.15 # gammas - параметр сглаживания
error: 0.1 # delta - параметр за сглаживание ошибки
members:
- model: holt-winters
smoothing:
level: 0.0 # alpha - параметр конкретный модели в ансамбле
- model: holt-winters
smoothing:
level: 0.5
- model: holt-winters
smoothing:
level: 1.0
forecast: # изменяемая
calculationLoopInterval: 30s # or recalculationInterval
horizon: 3 # 5 минут фикс., 45 минут удаляемые
confidence: 0.95
Описание полей
Общие параметры метрики#
Поле |
Описание |
|---|---|
|
Имя предсказанной метрики. |
|
PromQL-запрос, по которому извлекаются исходные данные из хранилища метрик |
|
Частота пересчета прогноза. Указывает, как часто PREM будет обновлять модель и генерировать новые предсказания (например, |
|
Временной интервал, используемый для загрузки исторических данных при старте PREM. Например, |
|
PromQL-запрос, по которому извлекаются исходные данные из Prometheus |
|
Частота сбора метрик. Определяет шаг между точками временного ряда |
Параметры модели model#
Поле |
Описание |
|---|---|
|
Параметр сглаживания тренда (beta) |
|
Параметр сезонного сглаживания (gammas) |
|
Параметр сглаживания ошибки (delta) |
|
Тип модели внутри ансамбля (например, holt-winters) |
|
Параметр уровня сглаживания для конкретной модели (alpha) |
Параметры прогноза (forecast)#
Поле |
Описание |
|---|---|
|
Частота пересчета прогноза. Указывает, как часто PREM будет обновлять модель и генерировать новые предсказания. Должно быть больше или равно data.prometheus.frequency |
|
Количество шагов вперед, на которые делается прогноз. |
|
Уровень доверия прогноза. Значение должно быть строго между 0 и 1 (например, 0.95 для 95% доверительного интервала) |
Примечание: ограничения - calculationLoopInterval >= data.prometheus.frequency; 0 < confidence < 1.
Создайте ConfigMap
Создайте YAML-файл, например prem-config.yaml, и начните с базовой структуры ConfigMap.
kind: ConfigMap
apiVersion: v1
metadata:
name: prem-metrics-config
namespace: <ваш_namespace>
data:
metrics-config.yaml: |
metrics:
Определите метрику для прогнозирования
Добавьте в список metrics новую метрику. Каждая метрика - это отдельный элемент списка.
Укажите имя и uid предсказываемой метрики
data:
metrics-config.yaml: |
metrics:
- name: "cpu_usage"
uid: "cpu_metric_01"
Настройте источник данных (Prometheus)
Укажите запрос и частоту сбора данных.
data:
metrics-config.yaml: |
metrics:
- name: "cpu_usage"
uid: "cpu_metric_01"
data:
retention: 30d
initHistoryInterval: 14d
prometheus:
query: 'rate(container_cpu_usage_seconds_total{}[1m])'
frequency: 60s
Настройте прогноз (forecast)
Задайте интервал пересчета, горизонт прогноза и доверительный интервал.
data:
metrics-config.yaml: |
metrics:
- name: "cpu_usage"
uid: "cpu_metric_01"
data:
retention: 30d
initHistoryInterval: 14d
prometheus:
query: 'rate(container_cpu_usage_seconds_total{}[1m])'
frequency: 60s
forecast:
calculationLoopInterval: 5m
horizon: 50
confidence: 0.95
Примечание: Блок model можно оставить пустым или убрать, если используются значения по умолчанию, либо скопировать структуру ensemble из примера, если требуется кастомизация (хотя в первой версии она неизменяема).
Настройка модели (Опционально)
Если необходимо явно указать параметры ансамбля (несмотря на то, что они неизменяемы в текущей версии, структура поддерживается для совместимости), добавьте блок model:
model:
ensemble:
smoothing:
trend: 0.0
seasonal: 0.15
error: 0.1
members:
- model: holt-winters
smoothing:
level: 0.0
- model: holt-winters
smoothing:
level: 0.5
Проверьте итоговую конфигурацию
Пример полной конфигурации:
kind: ConfigMap
apiVersion: v1
metadata:
name: prem-metrics-config
namespace: default
data:
metrics-config.yaml: |
metrics:
- name: "cpu_usage"
uid: "cpu_metric_01"
data:
retention: 30d
initHistoryInterval: 14d
prometheus:
query: 'rate(container_cpu_usage_seconds_total{}[1m])'
frequency: 60s
model:
ensemble:
smoothing:
trend: 0.0
seasonal: 0.15
error: 0.1
members:
- model: holt-winters
smoothing:
level: 0.0
- model: holt-winters
smoothing:
level: 0.5
forecast:
calculationLoopInterval: 5m
horizon: 50
confidence: 0.95
Примените конфигурацию
Выполните команду:
bash kubectl apply -f metrics-config.yaml
Проверка результата#
Убедитесь, что:
ConfigMap
prem-metrics-configуспешно применен.
Проверка результата#
Корректным результатом проверки установки PREM является соответствие успешным проверкам в шагах:
Сборка и установка бинарных файлов.
Развертывание сервисов c помощью Helm чарта.