Кастомные ресурсы
Что такое CRD и кастомные ресурсы
В Kubernetes кастомные ресурсы (Custom Resources) позволяют расширять модель объектов за счёт своих типов: поверх базовых Pod, Service, Deployment и др. можно добавлять собственные сущности с нужными полями. Такие типы ресурсов задаются через CRD.
CRD (Custom Resource Definition) — специальный ресурс, который позволяет создавать новые типы ресурсов для расширения функционала.
Почти все операции в GUI (создание кластера, изменение конфигурации узлов, установка сервисов, назначение прав) сводятся к созданию или изменению ресурсов, а операторы приводят фактическое состояние кластера к описанному в ресурсах.
Кастомные ресурсы в GUI
В разделе Администрирование → Кастомные ресурсы доступен просмотр и управление кастомными ресурсами (CR) Kubernetes на уровне кластера и неймспейса.
Где в кластере: выберите кластер → Администрирование → Кастомные ресурсы. Где в неймспейсе кластера: выберите неймспейс → Администрирование → Кастомные ресурсы.
Страница Кастомные ресурсы отображает список CRD: встроенных Kubernetes и созданных в кластере, и сведений API группа, Кастомный ресурс, Количество ресурсов. Например, API-группы operator.victoriametrics.com, ops.shturval.tech.
Переключатель Показывать только при наличии данных скрывает строки, в которых нет экземпляров.
Скриншот: страница «Кастомные ресурсы»

Скриншот: фильтры на странице «Кастомные ресурсы»

По нажатию на название CRD можно перейти на страницу со списком кастомных ресурсов этой CRD. Объекты можно просматривать, редактировать и удалять в соответствии с правами доступа. Для добавления кастомного ресурса, в том числе в неймспейсе, используйте Импорт манифестов или кнопку + Добавить на странице списка кастомных ресурсов CRD - по нажатию открывается импорт манифестов.
Скриншот: страница экземпляров кастомного ресурса

Чтобы удалить кастомный ресурс, используйте удаление из списка экземпляров или со страницы просмотра. В списке экземпляров CRD кластера и неймспейса можно удалить один объект или несколько сразу. Как выбрать объекты и подтвердить удаление — в разделе Множественное удаление. Доступно и удаление системно важных объектов: это может привести к ошибкам в работе. На странице просмотра ресурса также можно изменить или скопировать его манифест; после изменения выполните проверку.
Кастомные ресурсы платформы
Ниже приведены специфические кастомные ресурсы в API‑группах *.shturval.tech, которые используются в кластерах платформы “Штурвал”.
API‑группа auth.shturval.tech
В кластере управления.
| Ресурс | Назначение | Где используется в GUI | Документация |
|---|---|---|---|
| AuthOidcClient | Клиенты внутреннего сервиса аутентификации платформы (backend, frontend, ArgoCD, Grafana и др.), использующие OIDC | При переходе по SSO во внешний сервис | Кастомные ресурсы IAM |
| User | Локальные пользователи, хранящиеся в платформе | Управление доступом → пользователи | Управление паролем локального администратора |
Пример kubectl для auth.shturval.tech
kubectl get authoidcclient -A
API‑группа node.shturval.tech
В кластере управления и клиентском кластере.
| Ресурс | Назначение | Где используется в GUI | Документация |
|---|---|---|---|
| NodeConfigItem | Объект для применения конфигурации узлов: NTP, sysctl, пакеты, реестры, systemd‑юниты и др.; применяется по селектору узлов | Администрирование → Конфигурация узлов (список и карточки NCI) | Конфигурация узлов (NCI), Объект NCI (NodeConfigItem) |
| NodeConfig | Сводная фактическая конфигурация конкретного узла, собранная из всех применимых NCI, со статусом применения | Администрирование → Управление узлами → страница просмотра узла → вкладка Конфигурация узлов | NodeConfig (NC) |
Пример kubectl для node.shturval.tech
kubectl get nodeconfigitem
API‑группа cluster.shturval.tech
В кластере управления.
| Ресурс | Назначение | Где используется в GUI | Документация |
|---|---|---|---|
| ClusterConfig | Фактическая конфигурация кластера: параметры API, сети, набор сервисов, ссылки на профили. Целевая версия обновления — spec.releaseVersion, стратегия обновления узлов — spec.update.updateStrategy | Дашборд кластера | API для управления кластерами, Обновление Kubernetes |
| ClusterInfo | Сводная информация о кластере для дашбордов: статус, версии, количество узлов. Доступные версии обновления — status.update.availableUpdates | Дашборд кластера | Графики и дашборды кластера |
| ClusterProfile | Профиль конфигурации, с которым будет развёрнут клиентский кластер | Платформа → Профили кластеров → страница Профили конфигурации клиентских кластеров | Профили кластеров |
| ClusterUpdateSchedule | Расписание отложенного обновления. В окне обновления записывает целевую версию в ClusterConfig этого кластера | Дашборд кластера → Управлять → окно Обновление кластера → Настройка отложенного обновления | Обновление Kubernetes |
| InfrastructureProvider | Метаданные экземпляра провайдера: шаблоны виртуальных машин и версии Kubernetes (spec.templates), подтип провайдера (spec.subtype). Учётные данные хранятся в ресурсе провайдера | Страница экземпляра провайдера | Подготовка шаблона провайдера |
Пример kubectl для cluster.shturval.tech
kubectl get clusterprofile -A
kubectl get infrastructureprovider -A
Cluster API и ресурсы инфраструктурных провайдеров (cluster.x-k8s.io, bootstrap.cluster.x-k8s.io, controlplane.cluster.x-k8s.io, infrastructure.cluster.x-k8s.io), связанные с жизненным циклом узлов, сведены в таблицы на странице Создание узлов при развертывании клиентского кластера.
API‑группа ops.shturval.tech
В кластере управления и клиентском кластере.
| Ресурс | Назначение | Где используется в GUI | Документация |
|---|---|---|---|
| ShturvalRepoConfig | Конфигурация Helm‑репозиториев: URL, протокол, учётные данные, TLS | Сервисы и репозитории → страница Репозитории | Как подключить свой репозиторий |
| ShturvalServiceConfig | Конфигурация Helm‑чартов (системных сервисов) (SSC): версия, режим управления, базовые customvalues | Сервисы и репозитории → Установленные сервисы → кнопка Управлять → вкладка Сервис на странице просмотра сервиса | Обзор работы с сервисами, Системные сервисы репозитория Shturval |
| ShturvalServicePatch | Патч для customvalues системного сервиса, накладываемый поверх базового SSC; позволяет безопасно кастомизировать сервисы | Вкладка Примененные ShturvalServicePatch на странице сервиса | Как управлять CustomValues сервисов |
Пример kubectl для ops.shturval.tech
kubectl get shturvalserviceconfig -A
API‑группа update.shturval.tech
В кластере управления и клиентском кластере.
| Ресурс | Назначение | Где используется в GUI | Документация |
|---|---|---|---|
| ShturvalUpdate | Ресурс для ручного запуска обновления кластера и отслеживания статуса обновления | Дашборд кластера → Управлять → окно Обновление кластера | Обновление Kubernetes |
| ShturvalUpdateChannel | Указание канала обновления (в платформе доступен только стабильный канал stable) | Дашборд кластера → Управлять → окно Обновление кластера | Обновление Kubernetes, Обновление зеркала в закрытом контуре |
| ShturvalUpdateSchedule | Расписание для автоматического (отложенного) обновления кластера | Дашборд кластера → Управлять → окно Обновление кластера → Настройка отложенного обновления | Обновление Kubernetes |
Пример kubectl для update.shturval.tech (ShturvalUpdateSchedule)
kubectl get shturvalupdateschedule -n shturval-update-system
После обновления на 2.15 объекты ShturvalUpdate, ShturvalUpdateChannel и ShturvalUpdateSchedule удаляются.
Обновление с версии 2.15 на более новую запускают ресурсы API-группы cluster.shturval.tech: целевая версия и стратегия — в ClusterConfig, расписание — в ClusterUpdateSchedule, доступные версии — в ClusterInfo.
API‑группа permissions.shturval.tech
В кластере управления.
| Ресурс | Назначение | Где используется в GUI | Документация |
|---|---|---|---|
| GroupRole | Объект связывания набора разрешений с группой пользователей; определяет, какие Permissions применяются к группе и на каком уровне (платформа, тенант, кластер, неймспейс) | Управление доступом/Управление ролями→ Группы и назначение прав группам | Кастомные ресурсы для управления правами доступа, Как происходит назначение прав доступа |
| UserRole | Объект связывания набора разрешений с конкретным пользователем | Управление доступом/Управление ролями → Пользователи и назначение прав пользователям | Кастомные ресурсы для управления правами доступа, Как происходит назначение прав доступа |
| Scope | Набор объектов применения разрешений (например, платформа, конкретный тенант, кластер или неймспейс) | Внутренняя сущность системы управления доступом; отображается через дерево доступов и страницы назначения прав | Настройка разрешений |
| Permission | Набор разрешений (permissions) | Управление доступом → Менеджер доступов | Настройка разрешений, Кастомные ресурсы для управления правами доступа |
| Tenant | Логическое объединение кластеров целиком либо неймспейсов одного или нескольких кластеров для разграничения доступа | Вкладка Тенанты | Концепция тенантов |
Пример kubectl для permissions.shturval.tech
kubectl get userrole -n shturval-backend
Когда использовать GUI, а когда — манифесты
- GUI удобен для типовых операций: создание кластера, настройка сервисов, назначение прав, изменение конфигурации узлов.
- Манифесты кастомных ресурсов (
kubectl, импорт YAML) удобны, когда:- вы хотите версионировать изменения и применять их через GitOps;
- требуется доступ к полному набору полей ресурса, не всех из которых есть в GUI.
Инструкция по импорту YAML‑манифестов через интерфейс: Импорт манифестов.
Для всех перечисленных ресурсов рекомендуется ориентироваться на профильные разделы документации (ссылки в таблицах выше) — они содержат примеры YAML, ограничения и типовые сценарии использования.