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

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

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

CRD (Custom Resource Definition) — специальный ресурс, который позволяет создавать новые типы ресурсов для расширения функционала.

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


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

В разделе АдминистрированиеКастомные ресурсы доступен просмотр и управление кастомными ресурсами (CR) Kubernetes на уровне кластера и неймспейса.

Где в кластере: выберите кластер → АдминистрированиеКастомные ресурсы. Где в неймспейсе кластера: выберите неймспейс → АдминистрированиеКастомные ресурсы.

Страница Кастомные ресурсы отображает список сгруппированный по API группам всех CRD: кубовых и созданных в кластере. Например, API группы: operator.victoriametrics.com, ops.shturval.tech. Есть переключатель, позволяющий скрыть CRD, в которых нет кастомных ресурсов (Custom Resource). Для удобства отображено количество созданных кастомных ресурсов каждого CRD. В неймспейсе на этой странице отображается количество кастомных ресурсов скоупа неймспейса для каждого CRD.

Страница CRD «Кастомные ресурсы»

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

По нажатию на название CRD можно перейти на страницу со списком кастомных ресурсов этой CRD. Объекты можно просматривать, редактировать (вкладка «Манифест») и удалять в соответствии с правами доступа. Для добавления кастомного ресурса, в том числе в неймспейсе, используйте Импорт манифестов.

Страница экземпляров «Кастомныe ресурсы»

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

Чтобы удалить кастомный ресурс из кластера или неймспейса, используйте удаление из списка объектов или со страницы просмотра кастомного ресурса. На странице просмотра ресурса также можно изменить или скопировать его манифест; после изменения выполните проверку.


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

Ниже приведены специфические кастомные ресурсы в 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, сети, набор сервисов, ссылки на профили и др. Дашборд кластера API для управления кластерами
ClusterInfo Сводная информация о кластере для дашбордов: статус, версии, количество узлов Дашборд кластера Графики и дашборды кластера
ClusterProfile Профиль конфигурации, с которым будет развёрнут клиентский кластер ПлатформаПрофили кластеров → страница Профили конфигурации клиентских кластеров Профили кластеров
Пример kubectl для cluster.shturval.tech
kubectl get clusterprofile -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

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