Custom resources

What is CRD and custom resources

In Kubernetes, custom resources (Custom Resources) extend the object model: on top of built-in types such as Pod, Service, and Deployment you can add your own entities with the fields you need. Those resource types are defined with CRD.

CRD (Custom Resource Definition) is the resource that lets you create new resource types to extend the API.

Most GUI operations (creating a cluster, changing node configuration, installing services, assigning rights) create or update resources; operators reconcile cluster state to match them.


Custom resources in GUI

In the Administration → Custom Resources section, you can view and manage Kubernetes custom resources (CR) at the cluster and namespace level.

Where in the cluster: select a cluster → Administration → Custom Resources. Where in a cluster namespace: select a namespace → Administration → Custom Resources.

The Custom Resources page lists CRDs — built-in Kubernetes types and those created in the cluster — with API group, Custom resource, and Number of resources. For example, API groups operator.victoriametrics.com, ops.shturval.tech.

The Show only when data is present switch hides rows that have no instances.

Screenshot: Custom Resources page

Custom resources

Screenshot: filters on the Custom Resources page

Custom resource filters

Click a CRD name to open the list of custom resources of that CRD. You can view, edit, and delete objects according to your access rights. To add a custom resource, including in a namespace, use Import manifests or the + Add button on the CRD custom resource list page — this opens the manifest import.

Screenshot: custom resource instances page

Custom resources

To delete a custom resource, use delete from the instance list or from the resource detail page. In the cluster and namespace CRD instance lists you can delete one object or several at once. How to select objects and confirm deletion: Bulk deletion. Deletion of system-critical objects is also available; it may cause errors in operation. On the resource view page, you can also edit or copy its manifest; after the change, run a check.


Custom platform resources

Below are specific custom resources in API groups *.shturval.tech, which are used in clusters of the “Shturval” platform.

API group auth.shturval.tech

In the management cluster.

ResourcePurposeGUI locationDocumentation
AuthOidcClientClients of the platform’s internal authentication service (backend, frontend, Argo CD, Grafana, etc.) using OIDCWhen switching via SSO to an external serviceCustom IAM Resources
UserLocal users stored in the platformAccess control → usersLocal Administrator Password Management
Kubectl example for auth.shturval.tech
kubectl get authoidcclient -A

API group node.shturval.tech

In the management cluster and client cluster.

ResourcePurposeGUI locationDocumentation
NodeConfigItemObject for applying node configuration: NTP, sysctl, packages, registries, systemd units, etc.; applied by node selectorAdministration → Node Configuration (list and NCI cards)Node Configuration (NCI), NCI Object (NodeConfigItem)
NodeConfigSummary of actual node-specific configuration collected from all applicable NCIs, with application statusAdministration → Node Management → node view page → Node Configuration tabNodeConfig (NC)
Kubectl example for node.shturval.tech
kubectl get nodeconfigitem

API group cluster.shturval.tech

In the management cluster.

ResourcePurposeGUI locationDocumentation
ClusterConfigActual cluster configuration: API parameters, networks, set of services, links to profiles. Target update version is spec.releaseVersion, node update strategy is spec.update.updateStrategyCluster dashboardAPI for cluster management, Update Kubernetes
ClusterInfoSummary information about the cluster for dashboards: status, versions, number of nodes. Available update versions are status.update.availableUpdatesCluster dashboardCluster graphs and dashboards
ClusterProfileConfiguration profile with which the client cluster will be deployedPlatform → Cluster Profiles → Client Cluster Configuration Profiles pageCluster Profiles
ClusterUpdateScheduleDeferred update schedule. During the update window it writes the target version to the cluster ClusterConfigCluster dashboard → Manage → Cluster update window → Configuring deferred updateUpdate Kubernetes
InfrastructureProviderProvider instance metadata: VM templates and Kubernetes versions (spec.templates), provider subtype (spec.subtype). Credentials are stored on the provider resourceProvider instance pagePreparing the Provider Template
Kubectl example for cluster.shturval.tech
kubectl get clusterprofile -A
kubectl get infrastructureprovider -A

Cluster API and infrastructure provider resources (cluster.x-k8s.io, bootstrap.cluster.x-k8s.io, controlplane.cluster.x-k8s.io, infrastructure.cluster.x-k8s.io) associated with the node life cycle are tabulated on the Creating nodes when deploying a client cluster page.

API group ops.shturval.tech

In the management cluster and client cluster.

ResourcePurposeGUI locationDocumentation
ShturvalRepoConfigHelm repositories configuration: URL, protocol, credentials, TLSServices and repositories → Repositories pageHow to connect your repository
ShturvalServiceConfigConfiguration of Helm charts (system services) (SSC): version, control mode, basic customvaluesServices and repositories → Installed services → Manage button → Service tab on the service view pageOverview of working with services, System services of the Shturval repository
ShturvalServicePatchPatch for customvalues system service, overlaid on top of the base SSC; allows you to safely customize servicesApplied ShturvalServicePatch tab on the service pageHow to manage CustomValues ​​services
Kubectl example for ops.shturval.tech
kubectl get shturvalserviceconfig -A

API group update.shturval.tech

In the management cluster and client cluster.

ResourcePurposeGUI locationDocumentation
ShturvalUpdateResource for manually running a cluster update and tracking update statusCluster dashboard → Manage → Cluster Update windowUpdate Kubernetes
ShturvalUpdateChannelSpecifying the update channel (only the stable channel stable is available in the platform)Cluster dashboard → Manage → Cluster Update windowUpdate Kubernetes, Update mirror in closed loop
ShturvalUpdateScheduleSchedule for automatic (delayed) cluster updateCluster dashboard → Manage → Cluster update window → Configuring deferred updateUpdate Kubernetes
Kubectl example for update.shturval.tech (ShturvalUpdateSchedule)
kubectl get shturvalupdateschedule -n shturval-update-system

After the update to 2.15, the ShturvalUpdate, ShturvalUpdateChannel, and ShturvalUpdateSchedule objects are deleted.

An update from version 2.15 to a newer one is started by resources of the cluster.shturval.tech API group: the target version and strategy are in ClusterConfig, the schedule is in ClusterUpdateSchedule, and available versions are in ClusterInfo.

API group permissions.shturval.tech

In the management cluster.

ResourcePurposeGUI locationDocumentation
GroupRoleAn object to associate a permission set with a user group; determines which Permissions apply to the group and at what level (platform, tenant, cluster, namespace)Access Control/Role Management→ Groups and assigning rights to groupsCustom resources for managing access rights, How access rights are assigned
UserRoleObject to associate a permission set with a specific userAccess Control/Role Management → Users and assigning rights to usersCustom resources for managing access rights, How access rights are assigned
ScopeA set of permission enforcement objects (for example, a platform, a specific tenant, a cluster, or a namespace)The internal essence of the access control system; displayed through the access tree and rights assignment pagesPermission settings
PermissionSet of permissionsAccess Control → Access ManagerSetting permissions, Custom resources for managing access rights
TenantLogical combination of entire clusters or namespaces of one or more clusters for access controlTenants tabTenant concept
Kubectl example for permissions.shturval.tech
kubectl get userrole -n shturval-backend

When to use GUI and when to use manifests

  • GUI is convenient for typical operations: creating a cluster, setting up services, assigning rights, changing node configurations.
  • Custom resource manifests (kubectl, YAML import) are useful when:
    • you want to version changes and apply them via GitOps;
    • requires access to the full set of resource fields, not all of which are in the GUI.

Instructions for importing YAML manifests through the interface: Import manifests.

For all of the listed resources, it is recommended to focus on the specialized sections of the documentation (links in the tables above) - they contain YAML examples, restrictions and typical usage scenarios.