Yandex Cloud
Полная интеграция: Managed Kubernetes, Compute, Network, Billing.
Обзор
Коннектор Yandex Cloud обеспечивает глубокую интеграцию платформы Oopps.ai с инфраструктурой Yandex Cloud. После подключения платформа автоматически обнаруживает и анализирует ресурсы в указанном каталоге (folder).
Поддерживаемые возможности:
- Обнаружение кластеров Managed Kubernetes — автоматический поиск всех кластеров в каталоге, сбор информации о версиях и регионах.
- Сбор инвентаря — виртуальные машины (Compute), диски, сети (VPC), подсети, плавающие IP-адреса. Карта инфраструктуры с группировкой по статусам.
- Биллинг — получение детализированных данных о расходах через Usage Records API (gRPC). Анализ затрат по сервисам, ресурсам, каталогам и дням.
- Получение kubeconfig — автоматическая генерация kubeconfig для каждого обнаруженного кластера Managed Kubernetes для проведения аудита.
Необходимые права
Для работы коннектора необходимо назначить сервисному аккаунту минимальный набор ролей. Все роли — только на чтение, Oopps.ai не изменяет и не удаляет ресурсы.
| Роль | Область | Назначение |
|---|---|---|
viewer |
Каталог (folder) | Чтение ресурсов Compute, Network, Storage |
compute.viewer |
Каталог (folder) | Чтение виртуальных машин, дисков, образов |
k8s.cluster-api.cluster-admin |
Каталог (folder) | Доступ к K8s API кластера для аудита (ноды, поды, метрики). Альтернатива — Oopps Agent в кластере |
billing.accounts.editor |
Billing Account | Чтение данных о расходах |
Роль billing.accounts.editor назначается отдельно
на уровне Billing Account, а не на каталоге (folder).
Откройте Все сервисы → Cloud Center → Billing →
платёжный аккаунт → Управление доступом, чтобы добавить сервисный аккаунт.
Пошаговая инструкция
Найти Folder ID
Откройте Yandex Cloud Console,
выберите нужный каталог. На странице Дашборд каталога
Folder ID отображается в шапке под названием каталога
(формат: b1g...). Нажмите на ID, чтобы скопировать.
Альтернативно через CLI:
yc config list
В выводе найдите строку folder-id — это и есть
идентификатор каталога.
Создать сервисный аккаунт и назначить роли
- В левом меню консоли нажмите Все сервисы.
- Прокрутите вниз до раздела «Управление ресурсами» и выберите Identity and Access Management.
- В левом меню нажмите Сервисные аккаунты.
- Нажмите Создать сервисный аккаунт (кнопка в правом верхнем углу).
- Укажите имя, например
oopps-reader. Описание — «Read-only service account for Oopps.ai audit». - В поле Роли в каталоге нажмите + Добавить роль и добавьте три роли:
viewer,k8s.cluster-api.cluster-admin,compute.viewer. - Нажмите Создать.
Или через CLI:
# Создать сервисный аккаунт
yc iam service-account create \
--name oopps-reader \
--description "Read-only SA for Oopps.ai"
# Назначить роли на каталоге (подставьте свои folder_id и sa_id)
yc resource-manager folder add-access-binding \
--id <folder_id> --role viewer --service-account-id <sa_id>
yc resource-manager folder add-access-binding \
--id <folder_id> --role k8s.cluster-api.cluster-admin --service-account-id <sa_id>
yc resource-manager folder add-access-binding \
--id <folder_id> --role compute.viewer --service-account-id <sa_id>
Назначить роль для биллинга и скопировать Billing Account ID
- В левом меню консоли нажмите Все сервисы.
- В верхней части выберите Cloud Center → Billing (Потребление и оплата).
- Выберите нужный платёжный аккаунт.
- Скопируйте Billing Account ID — он отображается под названием аккаунта (формат:
dn...). Он понадобится при настройке коннектора. - В левом меню нажмите Управление доступом.
- Нажмите кнопку Назначить роли (в правом верхнем углу). Откроется диалог Выдача доступа.
- В левой колонке выберите Сервисные аккаунты, найдите
oopps-readerи выберите его. - В поле Роли добавьте
billing.accounts.editorи нажмите Сохранить.
Billing Account ID и назначение ролей на биллинг доступны
только через консоль — в yc CLI нет команды billing.
Создать ключ авторизации
Yandex Cloud поддерживает три способа аутентификации сервисного аккаунта. Выберите подходящий:
a) IAM-токен (для тестирования)
yc iam create-token
Токен действует 12 часов. Подходит для быстрой проверки, но не для постоянной работы.
b) OAuth-токен (долгоживущий)
Получите токен на oauth.yandex.ru. Подходит для тестирования и небольших сред, где допустимо хранить долгоживущий токен.
c) Service Account Key (JSON) — рекомендуется для прода
Через консоль:
- Все сервисы → Identity and Access Management → Сервисные аккаунты.
- Нажмите на аккаунт
oopps-reader. - Сверху нажмите Создать новый ключ → Создать авторизованный ключ.
- В диалоге нажмите Создать и скачайте JSON-файл с ключом.
Через CLI:
yc iam key create \
--service-account-id <sa_id> \
--output key.json
Файл key.json содержит авторизованный ключ.
Это наиболее безопасный и надёжный способ аутентификации для
production-среды.
Для production-окружения всегда используйте Service Account Key. IAM-токен истекает через 12 часов, а OAuth-токен привязан к пользователю, а не к сервисному аккаунту.
Вставить credentials в Oopps.ai
Откройте платформу Oopps.ai → Коннекторы → Добавить → выберите Yandex Cloud.
Заполните поле folder_id и выберите способ аутентификации
из списка. Вставьте соответствующий ключ или токен. Нажмите
Подключить.
После успешного подключения Oopps.ai начнёт обнаружение кластеров и сбор инвентаря в течение нескольких минут.
Поля формы
| Поле | Обязательное | Где взять | Формат |
|---|---|---|---|
folder_id |
Да | Console → Каталог → Дашборд → ID в шапке | b1gxxxxxxxxxx |
cloud_id |
Нет | Console → Облако → ID в шапке | b1gxxxxxxxxxx |
billing_account_id |
Нет (нужен для биллинга) | Cloud Center → Billing → ID под названием аккаунта | dnxxxxxxxxxx |
auth_method |
Да | Выбор из списка | iam_token | oauth_token | service_account_key |
iam_token |
Только при auth_method=iam_token |
yc iam create-token |
Строка токена |
oauth_token |
Только при auth_method=oauth_token |
oauth.yandex.ru | Строка токена |
service_account_key |
Только при auth_method=service_account_key |
yc iam key create --output key.json |
JSON целиком (содержимое key.json) |
Возможные проблемы
| Ошибка | Причина | Решение |
|---|---|---|
403 Forbidden |
Нет роли viewer на каталоге |
Назначьте роль viewer через Права доступа каталога |
401 Unauthorized |
Истёк IAM-токен (срок жизни — 12 часов) | Обновите токен командой yc iam create-token или переключитесь на Service Account Key |
| Биллинг пуст | Не указан billing_account_id или нет роли |
Добавьте billing_account_id в настройках коннектора и назначьте billing.accounts.editor |
| Кластеры не найдены | Нет роли viewer на каталоге |
Роль viewer покрывает листинг кластеров Managed Kubernetes |
| Аудит K8s пуст (403 на ноды) | Нет доступа к K8s API кластера (ноды, поды) | Назначьте k8s.cluster-api.cluster-admin на каталоге — она открывает доступ к нодам, подам и метрикам через K8s API.
Если выдать kubeconfig наружу невозможно по политике безопасности — установите Oopps Agent прямо в кластер (Helm-чарт). Агент работает изнутри: собирает метрики, формирует рекомендации по rightsizing и может применять оптимизации автоматически — но только с явным подтверждением (approve) через UI, Telegram или webhook. Без вашего разрешения никакие изменения в кластере не выполняются. |
| Ресурсы без стоимости | Yandex Billing API не возвращает поресурсные данные для вашего аккаунта | Oopps.ai автоматически использует данные по SKU и распределяет затраты по типам ресурсов. Убедитесь, что роль billing.accounts.editor назначена |
| Нет связи с API | Сетевая проблема (DNS, firewall, VPN) | Проверьте доступность api.cloud.yandex.net, настройки DNS и VPN |
Ограничения
- IAM-токен живёт 12 часов — для production-среды используйте Service Account Key (JSON). Он не имеет срока действия и автоматически обменивается на IAM-токен при каждом запросе.
-
Billing через gRPC — Oopps.ai получает данные
о расходах через gRPC-интерфейс Yandex Cloud Billing. Если
поресурсный отчёт (
GetResourceUsageReport) недоступен для вашего аккаунта, платформа автоматически использует отчёт по SKU и распределяет затраты по типам ресурсов (VM, диски, IP, кластеры). - Один коннектор = один каталог (folder) — каждый коннектор работает в рамках одного каталога Yandex Cloud. Для мониторинга нескольких каталогов создайте отдельный коннектор для каждого.
Если у вас возникли вопросы по настройке коннектора, обратитесь в раздел FAQ или напишите в поддержку через платформу.