Кастомные ресурсы

Что такое 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, ограничения и типовые сценарии использования.