Назначение

Функциональность Биллинг и управление расходами предназначена для учёта, тарификации и анализа используемых ресурсов. Он собирает данные о потреблении ресурсов (CPU, память, хранилище) по всем управляемым кластерам и рабочим пространствам.

Основные возможности:

  • просмотр стоимости инфраструктуры в динамике с использованием фильтров и различных срезов (Дашборд)
  • детализация расходов по рабочим пространствам, кластерам, неймспейсам, контроллерам и ресурсам, а также меткам
  • создание и настройка тарифов для расчёта стоимости
  • генерация мгновенных и регулярных отчётов
  • экспорт данных в формате CSV

Для полноценной работы функционала, необходимо:

  1. Включить фича-флаг в Deckhouse Commander
  2. Назначить биллинг-метки на ноды
  3. Создать тариф

Модели расчёта и агрегации

На текущий момент реализовано 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

  1. Нажмите на кнопку создать
  2. Укажите имя тарифа
  3. Выберите желаемую модель расчёта и агрегацию
  4. Для вычислительных ресурсов выберите значение метки billing.commander.deckhouse.io/name
  5. Укажите стоимость за единицу ЦПУ и Памяти
  6. Нажмите на ссылку “Добавить метку” и укажите стоимости для каждой метки
  7. Повоторите операцию для каждой метки storageclass в разделе Хранилище
  8. Нажмите кнопку Создать тариф

Данные станут доступны с момента создания тарифа.

Раздел «Отчёты»

Используется для генерации аналитических отчётов по запросу, а также для создания расписания для периодической генерации отчётов.

Основные элементы интерфейса:

  • Вкладка Все отчёты — список доступных для скачивания отчётов.
  • Вкладка Управление регулярными отчётами — список расписаний, по которым создаются регулярные отчёты. Каждое расписание можно отредактировать и удалить.
  • Модальное окно для настройки параметров отчёта.

Создание мгновенного отчёта

  1. Нажмите кнопку Создать.
  2. Укажите имя отчёта
  3. Укажите тип Мгновенный
  4. Укажите период
  5. Выберите вложенные колонки для детализации (например: Рабочее пространство, Кластер, Неймспейс)
  6. Для детализации расходов по каждому типу ресурса поставьте галку Детализировать по ресурсам
  7. Нажмите Сохранить. Отчёт отобразится в списке и начнёт создаваться
  8. После завершения генерации отчёт будет доступен для скачивания в формате CSV (разделитель “,”, первая строка — название колонок)

Создание регулярного отчёта

  1. Нажмите кнопку Создать.
  2. Укажите имя отчёта
  3. Укажите тип Регулярный
  4. Укажите дату начала и периодичность
  5. Выберите вложенные колонки для детализации (например: Рабочее пространство, Кластер, Неймспейс)
  6. Для детализации расходов по каждому типу ресурса поставьте галку Детализировать по ресурсам
  7. Нажмите Сохранить. Расписание сохранится на вкладке Управление регулярными отчётами

Отчёт будет автоматически создаваться по расписанию и отображаться в разделе Все отчёты