Кастомные ресурсы в платформе

Что такое кастомные ресурсы

В Kubernetes кастомные ресурсы (Custom Resources, CRD) позволяют расширять модель объектов за счёт своих типов: поверх базовых Pod, Service, Deployment и др. платформа может добавлять собственные сущности с нужными полями и контроллерами.

Платформа «Штурвал» целиком построена на операторах и кастомных ресурсах: почти все операции в GUI (создание кластера, изменение конфигурации узлов, установка сервисов, назначение прав) в итоге сводятся к созданию или изменению CRD, а операторы приводят фактическое состояние кластера к описанному в них.


Специфические кастомные ресурсы платформы

Ниже приведены основные кастомные ресурсы в API‑группах *.shturval.tech, которые используются в платформе.

API‑группа auth.shturval.tech

В кластере управления.

РесурсНазначениеГде используется в GUIДокументация
AuthOidcClient (authoidcclient)Клиенты внутреннего сервиса аутентификации платформы (backend, frontend, ArgoCD, Grafana и др.), использующие OIDCПри переходе по SSO во внешний сервисКастомные ресурсы IAM
User (user)Локальные пользователи, хранящиеся в платформеУправление доступом → пользователиУправление паролем локального администратора
Пример kubectl для auth.shturval.tech
kubectl get authoidcclient -A

API‑группа node.shturval.tech

В кластере управления и клиентском кластере.

РесурсНазначениеГде используется в GUIДокументация
NodeConfigItem (nodeconfigitem)Шаблон конфигурации узлов: NTP, sysctl, пакеты, реестры, systemd‑юниты и др.; применяется по селектору узловАдминистрирование → Конфигурация узлов (список и карточки NCI)Конфигурация узлов (NCI), Объект NCI (NodeConfigItem), Модуль shturval-node-config
NodeConfig (nodeconfig)Сводная фактическая конфигурация конкретного узла, собранная из всех применимых NCI, со статусом примененияВкладки и статусные блоки на странице узлаNodeConfig (NC), Модуль shturval-node-config
Пример kubectl для node.shturval.tech
kubectl get nodeconfigitem

API‑группа cluster.shturval.tech

В кластере управления.

РесурсНазначениеГде используется в GUIДокументация
ClusterConfig (clusterconfig)Фактическая конфигурация кластера: параметры API, сети, набор сервисов, ссылки на профили и др.Дашборд кластера, разделы редактирования конфигурации и обновленияAPI для управления кластерами
ClusterInfo (clusterinfo)Сводная информация о кластере для дашбордов: статус, версии, количество узлов, ссылки на разделы мониторинга/логовДашборд кластера и связанные страницы мониторингаГрафики и дашборды кластера
ClusterProfile (clusterprofile)Профиль, с которым будет развёрнут кластер: версия Kubernetes, сети, endpoints логирования/мониторинга, набор сервисов по умолчаниюДиалоги создания кластера, настройки профилей по умолчаниюПрофили кластеров
Пример kubectl для cluster.shturval.tech
kubectl get clusterprofile -A

API‑группа ops.shturval.tech

В кластере управления и клиентском кластере.

РесурсНазначениеГде используется в GUIДокументация
ShturvalRepoConfig (shturvalrepoconfig)Конфигурация Helm‑репозиториев: URL, протокол, учётные данные, TLSСервисы и репозитории → вкладка РепозиторииКак подключить свой репозиторий
ShturvalServiceConfig (shturvalserviceconfig)Конфигурация Helm‑чартов (системных сервисов): версия, режим управления, базовые customvaluesСервисы и репозитории → Установленные сервисы, вкладка Сервис; а также раздел Кастомные ресурсыОбзор работы с сервисами, Системные сервисы репозитория Shturval
ShturvalServicePatch (shturvalservicepatch)Патч для customvalues системного сервиса (Helm‑релиза), накладываемый поверх базового SSC; позволяет безопасно кастомизировать сервисыВкладка Примененные ShturvalServicePatch на странице сервиса и через Администрирование → Кастомные ресурсыКак управлять CustomValues сервисов
Пример kubectl для ops.shturval.tech
kubectl get shturvalserviceconfig -A

API‑группа update.shturval.tech

В кластере управления и клиентском кластере.

РесурсНазначениеГде используется в GUIДокументация
ShturvalUpdate (shturvalupdate)Ресурс для ручного запуска обновления кластера и отслеживания статуса обновленияБлок «Обновление» на дашборде кластера, раздел Администрирование → Кастомные ресурсы → update.shturval.techЗапуск и этапы обновления
ShturvalUpdateChannel (shturvalupdatechannel)Указание канала обновления (в платформе доступен только стабильный канал stable)Настройки обновления на дашборде кластера; раздел Кастомные ресурсыЗапуск и этапы обновления, Обновление зеркала в закрытом контуре
ShturvalUpdateSchedule (shturvalupdateschedule)Расписание для автоматического (отложенного) обновления кластераНастройка расписания обновления на дашборде кластераРежимы обновления
Пример kubectl для update.shturval.tech (ShturvalUpdateSchedule)
kubectl get shturvalupdateschedule -n shturval-update-system

API‑группа permissions.shturval.tech

В кластере управления.

РесурсНазначениеГде используется в GUIДокументация
GroupRole (grouprole)Объект связывания набора разрешений с группой пользователей; определяет, какие Permissions применяются к группе и на каком уровне (платформа, тенант, кластер, неймспейс)Управление доступом → вкладка Группы и назначение прав группамКастомные ресурсы для управления правами доступа, Как происходит назначение прав доступа
UserRole (userrole)Объект связывания набора разрешений с конкретным пользователемУправление доступом → вкладка Пользователи и назначение прав пользователямКастомные ресурсы для управления правами доступа, Как происходит назначение прав доступа
Scope (scope)Набор объектов применения разрешений (например, платформа, конкретный тенант, кластер или неймспейс)Внутренняя сущность системы управления доступом; отображается через дерево доступов и страницы назначения правНастройка разрешений
Permission (permission)Набор разрешений (permissions) — платформа, кластеры, неймспейсы, роли ArgoCD; лежит в основе наборов доступовУправление доступом → Менеджер доступов → наборы доступовНастройка разрешений, Кастомные ресурсы для управления правами доступа
TenantЛогическое объединение кластеров целиком либо неймспейсов одного или нескольких кластеров для разграничения доступаРаздел Тенанты и соответствующие вкладки в Управлении доступомКонцепция тенантов
Пример kubectl для permissions.shturval.tech
kubectl get userrole -n shturval-backend

Когда использовать GUI, а когда — манифесты

  • GUI удобен для типовых операций: создание кластеров, настройка сервисов, назначение прав, изменение конфигурации узлов.
  • Манифесты CRD (kubectl, импорт YAML) удобны, когда:
    • вы хотите версионировать изменения и применять их через GitOps;
    • требуется доступ к полному набору полей ресурса, не всех из которых есть в форме GUI.

Инструкция по импорту YAML‑манифестов через интерфейс: Импорт манифестов.

Для всех перечисленных CRD рекомендуется ориентироваться на профильные разделы документации (ссылки в таблицах выше) — они содержат примеры YAML, ограничения и типовые сценарии использования.