Cloud.ru
Cloud.ru Evolution: Managed Kubernetes, Compute, Billing. Аутентификация через API-ключ.
Обзор
Коннектор Cloud.ru использует Cloud.ru Evolution IAM. Аутентификация выполняется через API-ключ (Key ID + Secret). Project ID автоматически извлекается из JWT-токена.
Поддерживаемые операции:
- Инвентаризация ресурсов: VM, диски, сети, подсети, Floating IP
- Обнаружение MK8S-кластеров (Managed Kubernetes)
- Автоматическое получение kubeconfig кластера
- Аудит Kubernetes (ноды, поды, workloads, storage, metrics)
- Биллинг с детализацией по сервисам (через Consumption API)
Необходимые права
Сервисному аккаунту нужно назначить роли на уровне проекта. Oopps.ai работает в режиме read-only — достаточно минимальных прав.
Роли внутри проекта
| Роль | Зачем |
|---|---|
| Наблюдатель проекта | Read-only доступ к ресурсам проекта: VM, диски |
Роли в сервисах (Evolution) — K8s-аудит
| Сервис | Роль | Зачем |
|---|---|---|
| Evolution Managed Kubernetes | k8s.admin |
Список кластеров, kubeconfig, чтение nodes/pods/metrics через K8s API |
Роль k8s.user даёт доступ только к API управления кластерами
(список кластеров, скачивание kubeconfig). Но K8s-аудит
подключается к API самого кластера и читает nodes, pods, workloads и
metrics-server — для этого нужен cluster-level read access,
который предоставляет k8s.admin.
Oopps.ai работает в режиме read-only — не создаёт и не изменяет ресурсы. Project ID определяется автоматически из JWT-токена.
Если политика безопасности запрещает роль k8s.admin,
назначьте k8s.user и вручную создайте ClusterRoleBinding
в каждом кластере:
kubectl create clusterrolebinding oopps-view \
--clusterrole=view \
--user=<service-account-id>
Роль view — встроенная в Kubernetes read-only роль,
которая даёт доступ к nodes, pods, deployments, metrics и другим объектам
без права изменения.
Роль Наблюдатель проекта достаточна для получения данных о расходах через Consumption API. Дополнительные роли на уровне организации не требуются.
В Cloud.ru у сервисного аккаунта есть два типа учётных данных: API-ключи и Ключи доступа. API-ключи ограничены набором сервисов (Managed Kubernetes там нет). Для Oopps.ai используйте Ключи доступа — они дают полный доступ к сервисам проекта.
Пошаговая инструкция
Войти в Console Cloud.ru
Откройте console.cloud.ru и авторизуйтесь в своём аккаунте Cloud.ru Evolution.
Создать сервисный аккаунт
Перейдите в Пользователи → Сервисные аккаунты → Создать.
Укажите имя и описание, например oopps-viewer.
Назначить роли
Откройте сервисный аккаунт → Роли:
- Роль в проекте: Наблюдатель проекта
- Роль в сервисе Evolution → Managed Kubernetes:
k8s.admin
Создать ключ доступа
Откройте созданный сервисный аккаунт. В разделе Учётные данные доступа перейдите на вкладку Ключи доступа → Создать ключ. Укажите описание.
Сохраните Key ID и Secret сразу после создания. Secret показывается только один раз!
Вставить credentials в Oopps.ai
Перейдите в Коннекторы → Добавить → Cloud.ru. Вставьте Key ID и Secret. Нажмите «Проверить подключение».
Поля формы
| Поле | Обязательное | Где взять | Формат |
|---|---|---|---|
key_id |
да | Ключи доступа сервисного аккаунта | 1c3700fa55e2111a... |
secret |
да | Ключи доступа сервисного аккаунта (показывается один раз) | edffac8a80138199... |
project_id |
нет (определяется автоматически) | Console → Project | UUID |
kubeconfig_raw |
нет (fallback) | Console → MK8S → кластер → kubectl config | YAML |
Возможные проблемы
| Ошибка | Причина | Решение |
|---|---|---|
Cloud.ru IAM не вернул токен |
Неверный Key ID или Secret | Проверить значения, при необходимости пересоздать ключ |
one or more fields have invalid values: projectId |
Project ID не определился автоматически | Укажите вручную в поле project_id |
| Кластеры не найдены | Нет роли в сервисе Managed Kubernetes | Назначить роль k8s.user или k8s.admin в Evolution |
nodes is forbidden (403) |
Роль k8s.user не даёт доступ к K8s API кластера |
Сменить на k8s.admin или создать ClusterRoleBinding с ролью view |
| Billing 0 ₽ / «Billing API не ответил» | Сервисный аккаунт не имеет доступа к Consumption API | Проверить, что назначена роль «Наблюдатель проекта» или выше |
Ограничения
- Cloud.ru Evolution — поддерживается текущая версия платформы (API v2/v3).
- Compute API — поддерживается: VM, диски, Floating IP. Network Load Balancers пока не отображаются (API недоступен).
- Billing — данные доступны за последние 6 месяцев. Для доступа нужна роль на уровне организации.
- Для старых SberCloud Advanced аккаунтов (Keystone-based) этот коннектор может не работать — обратитесь в поддержку.