Назначение
Функциональность Биллинг и управление расходами предназначена для учёта, тарификации и анализа используемых ресурсов. Он собирает данные о потреблении ресурсов (CPU, память, хранилище) по всем управляемым кластерам и рабочим пространствам.
Основные возможности:
- просмотр стоимости инфраструктуры в динамике с использованием фильтров и различных срезов (Дашборд)
 - детализация расходов по рабочим пространствам, кластерам, неймспейсам, контроллерам и ресурсам, а также меткам
 - создание и настройка тарифов для расчёта стоимости
 - генерация мгновенных и регулярных отчётов
 - экспорт данных в формате CSV
 
Для полноценной работы функционала, необходимо:
Модели расчёта и агрегации
На текущий момент реализовано 2 модели расчёта:
- По реквестам — учитываются resource requests, указанные для пода
 - По реальному использованию — учитывается фактическое потребление ресурсов подами
 
Также доступны 2 агрегации:
- По среднему - метрики агрегируются по среднему значению за час
 - По среднему — метрики агрегируются по среднему значению за час
 - 95 процентиль — метрики агрегируются по 95 процентили за час
 
Минимальная временная единица, использующаяся в расчетах — 1 час.
Включение и отключение функциональности
Включение
По умолчанию функциональность Биллинг и управление расходами отключён. Для включения используйте команду:
kubectl patch mc commander --type merge --patch '{"spec":{"settings":{"featureFlags":{"billingEnabled":true}}}}'
После включения, в управляемых кластерах будет настроена отправка данных о потреблении ресурсов (CPU, память, хранилище) в централизованное хранилище в управляющем кластере Deckhouse Commander.
Раздел “Биллинг” станет доступен в верхней панели навигации на экране со списком рабочих пространств или по URL {АДРЕС_COMMANDER}/billing/
Если раздел биллинга не отображается, убедитесь в наличии доступа к разделу
Отключение
Для отключения функциональности используйте команду:
kubectl patch mc commander --type merge --patch '{"spec":{"settings":{"featureFlags":{"billingEnabled":false}}}}'
При необходимости, удалите вручную ресурсы, оставшиеся после отключения функциональности:
kubectl -n d8-commander delete pvc -l app=billing-reports
kubectl -n d8-commander delete pvc -l app=billing-prometheus
Управление доступом
Доступ к функциональности Биллинг и управление расходами настраивается в разделе «Пользователи и права» с возможностью разграничить права к внутренним разделам. В боковом меню отображаются только те разделы, для которых у текущего пользователя есть права доступа.
Имена ресурсов
Для контроля доступа используются следующие ресурсы:
billingdashboard- для доступа к разделу “Дашборд” и просмотру аналитикиbillingtariffs— для доступа к управлению тарифамиbillingreports— для доступа к управлению отчётами
Создание тарифной метки
Связь между тарифом и метриками осуществляется при помощи метки billing.commander.deckhouse.io/name для вычислительных ресурсов и storageclass для хранилища. Метка для каждого узла назначается в конфигурации группы узлов, а её значение используется как ключ при указании стоимости за ресурс в тарифе.
Пример:
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
  name: worker
spec:
  cloudInstances:
    classReference:
      kind: YandexInstanceClass
      name: worker
    # Максимальное количество инстансов в каждой зоне (используется при масштабировании).
    maxPerZone: 1
    # Минимальное количество инстансов в каждой зоне.
    minPerZone: 1
    # Список зон, в которых создаются инстансы.
    zones:
    - ru-central1-a
  disruptions:
    approvalMode: Automatic
  nodeTemplate:
    labels:
      node-role/worker: ""
      billing.commander.deckhouse.io/name: a1.large
  nodeType: CloudEphemeral
Навигация
Раздел «Дашборд»
Раздел предназначен для анализа расходов в реальном времени.
Основные элементы интерфейса:
- Фильтры и измерения — Рабочее пространство, Кластер, Неймспейсы, Контроллеры, Ресурсы
 - Период — выбор даты и диапазона анализа
 - Группировка — по дням, неделям или месяцам
 - Графики и таблицы — отображают затраты по выбранным параметрам
 - Итоговая стоимость — агрегированная по текущему фильтру
 
Особенности:
- Все значения фильтров формируются только из доступных ресурсов.
 
Раздел «Тарифы»
Раздел для администраторов и менеджеров.
Позволяет:
- создавать новые тарифы на ресурсы (ЦПУ, Память, Хранилище)
 - задавать дату начала действия тарифа
 - редактировать или удалять существующие тарифы
 
Каждый тариф содержит:
- имя тарифа
 - модель расчёта
 - привязку к нодгруппе и классу хранилища (лейблы 
billing.commander.deckhouse.io/nameиstorageclass) - стоимость ресурса
 - статус (активен/неактивен)
 
Особенности:
- Привязка стоимости ресурса осуществляется при помощи метки назначенной на нодгруппу либо к классу хранилища
 - В один момент времени может быть активен только один тариф
 - Дата начала тарифа может быть изменена на любую как в прошлом, так и в будущем
 
Создание тарифа
Важно!
Прежде чем приступать к созданию тарифа, необходимо убедиться, что на все нодгруппы назначен лейбл billing.commander.deckhouse.io/name, значения которого будут использоваться в качестве ключа для привязки к тарифу, а для хранилищ определён их storageclass
- Нажмите на кнопку создать
 - Укажите имя тарифа
 - Выберите желаемую модель расчёта и агрегацию
 - Для вычислительных ресурсов выберите значение метки 
billing.commander.deckhouse.io/name - Укажите стоимость за единицу ЦПУ и Памяти
 - Нажмите на ссылку “Добавить метку” и укажите стоимости для каждой метки
 - Повоторите операцию для каждой метки 
storageclassв разделе Хранилище - Нажмите кнопку Создать тариф
 
Данные станут доступны с момента создания тарифа.
Раздел «Отчёты»
Используется для генерации аналитических отчётов по запросу, а также для создания расписания для периодической генерации отчётов.
Основные элементы интерфейса:
- Вкладка Все отчёты — список доступных для скачивания отчётов.
 - Вкладка Управление регулярными отчётами — список расписаний, по которым создаются регулярные отчёты. Каждое расписание можно отредактировать и удалить.
 - Модальное окно для настройки параметров отчёта.
 
Создание мгновенного отчёта
- Нажмите кнопку Создать.
 - Укажите имя отчёта
 - Укажите тип Мгновенный
 - Укажите период
 - Выберите вложенные колонки для детализации (например: Рабочее пространство, Кластер, Неймспейс)
 - Для детализации расходов по каждому типу ресурса поставьте галку Детализировать по ресурсам
 - Нажмите Сохранить. Отчёт отобразится в списке и начнёт создаваться
 - После завершения генерации отчёт будет доступен для скачивания в формате CSV (разделитель “,”, первая строка — название колонок)
 
Создание регулярного отчёта
- Нажмите кнопку Создать.
 - Укажите имя отчёта
 - Укажите тип Регулярный
 - Укажите дату начала и периодичность
 - Выберите вложенные колонки для детализации (например: Рабочее пространство, Кластер, Неймспейс)
 - Для детализации расходов по каждому типу ресурса поставьте галку Детализировать по ресурсам
 - Нажмите Сохранить. Расписание сохранится на вкладке Управление регулярными отчётами
 
Отчёт будет автоматически создаваться по расписанию и отображаться в разделе Все отчёты