From cf6e8ceadd4778c53e658f5dc90c056c4d0795d4 Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Mon, 11 May 2026 18:17:28 +0400 Subject: [PATCH 1/5] docs: add crd examples Signed-off-by: Vladislav Panfilov --- crds/clustervirtualimages.yaml | 10 ++++++++++ crds/nodeusbdevices.yaml | 7 +++++++ crds/virtualdisks.yaml | 9 +++++++++ crds/virtualdisksnapshots.yaml | 8 ++++++++ crds/virtualimages.yaml | 11 +++++++++++ crds/virtualmachineblockdeviceattachments.yaml | 10 ++++++++++ crds/virtualmachineclasses.yaml | 8 ++++++++ crds/virtualmachineipaddresses.yaml | 8 ++++++++ crds/virtualmachineoperations.yaml | 8 ++++++++ crds/virtualmachinerestores.yaml | 7 +++++++ crds/virtualmachines.yaml | 15 +++++++++++++++ crds/virtualmachinesnapshotoperations.yaml | 13 +++++++++++++ crds/virtualmachinesnapshots.yaml | 9 +++++++++ 13 files changed, 123 insertions(+) diff --git a/crds/clustervirtualimages.yaml b/crds/clustervirtualimages.yaml index 6b3b6ce8bd..af131bacc8 100644 --- a/crds/clustervirtualimages.yaml +++ b/crds/clustervirtualimages.yaml @@ -58,6 +58,16 @@ spec: With this resource in the cluster, a container image is created and stored in a dedicated Deckhouse Virtualization Container Registry (DVCR). **Note:** The `metadata.name` field must comply with [Kubernetes object naming conventions](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/) and must not exceed 48 characters. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: ClusterVirtualImage + metadata: + name: ubuntu-24-04 + spec: + dataSource: + type: HTTP + http: + url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img properties: apiVersion: description: |- diff --git a/crds/nodeusbdevices.yaml b/crds/nodeusbdevices.yaml index 64abd5d2aa..9097ff310f 100644 --- a/crds/nodeusbdevices.yaml +++ b/crds/nodeusbdevices.yaml @@ -47,6 +47,13 @@ spec: Represents a USB device discovered on a specific node in the cluster. This resource is created automatically by the DRA (Dynamic Resource Allocation) system when a USB device is detected on a node. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: NodeUSBDevice + metadata: + name: logitech-webcam + spec: + assignedNamespace: my-project properties: apiVersion: description: |- diff --git a/crds/virtualdisks.yaml b/crds/virtualdisks.yaml index 6f720ded92..975c3b93d9 100644 --- a/crds/virtualdisks.yaml +++ b/crds/virtualdisks.yaml @@ -60,6 +60,15 @@ spec: Once a VirtualDisk is created, the following fields in `.spec.persistentVolumeClaim` can be changed: `size` and `storageClassName`. All other fields are immutable. **Note:** The `metadata.name` field must comply with [Kubernetes object naming conventions](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/) and must not exceed 60 characters. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualDisk + metadata: + name: blank-disk + spec: + persistentVolumeClaim: + storageClassName: rv-thin-r2 + size: 100Mi properties: apiVersion: description: |- diff --git a/crds/virtualdisksnapshots.yaml b/crds/virtualdisksnapshots.yaml index 252ea9703d..b89cde19ba 100644 --- a/crds/virtualdisksnapshots.yaml +++ b/crds/virtualdisksnapshots.yaml @@ -29,6 +29,14 @@ spec: Provides a resource for creating snapshots of existing virtual disks, which can be used as data sources for generating new virtual disks. When running, a VolumeSnapshot resource is created. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualDiskSnapshot + metadata: + name: linux-vm-root-snapshot + spec: + requiredConsistency: true + virtualDiskName: linux-vm-root required: - spec properties: diff --git a/crds/virtualimages.yaml b/crds/virtualimages.yaml index 85ea37cae8..c4a3429d3e 100644 --- a/crds/virtualimages.yaml +++ b/crds/virtualimages.yaml @@ -61,6 +61,17 @@ spec: With this resource in the cluster, a container image is created and stored in a dedicated Deckhouse Virtualization Container Registry (DVCR) or PVC, with the data filled in from the source. **Note:** The `metadata.name` field must comply with [Kubernetes object naming conventions](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/) and must not exceed 49 characters. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualImage + metadata: + name: ubuntu-24-04 + spec: + storage: ContainerRegistry + dataSource: + type: HTTP + http: + url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img properties: apiVersion: description: |- diff --git a/crds/virtualmachineblockdeviceattachments.yaml b/crds/virtualmachineblockdeviceattachments.yaml index 697e622cb2..e60314d212 100644 --- a/crds/virtualmachineblockdeviceattachments.yaml +++ b/crds/virtualmachineblockdeviceattachments.yaml @@ -50,6 +50,16 @@ spec: description: |- VirtualMachineBlockDeviceAttachment provides a hot plug for attaching a disk to a virtual machine. Disks are always attached using the SCSI bus, regardless of the enableParavirtualization setting. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineBlockDeviceAttachment + metadata: + name: attach-blank-disk + spec: + blockDeviceRef: + kind: VirtualDisk + name: blank-disk + virtualMachineName: linux-vm properties: apiVersion: description: |- diff --git a/crds/virtualmachineclasses.yaml b/crds/virtualmachineclasses.yaml index df97f0ceb8..30871054a6 100644 --- a/crds/virtualmachineclasses.yaml +++ b/crds/virtualmachineclasses.yaml @@ -44,6 +44,14 @@ spec: description: |- VirtualMachineClass resource describes CPU requirements, node placement, and sizing policy for VM resources. A resource cannot be deleted as long as it is used in one of the VMs. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineClass + metadata: + name: host + spec: + cpu: + type: Host properties: apiVersion: description: |- diff --git a/crds/virtualmachineipaddresses.yaml b/crds/virtualmachineipaddresses.yaml index 7a7f802a60..0eb9fdba34 100644 --- a/crds/virtualmachineipaddresses.yaml +++ b/crds/virtualmachineipaddresses.yaml @@ -22,6 +22,14 @@ spec: openAPIV3Schema: description: | Defines the IP address for a virtual machine. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineIPAddress + metadata: + name: linux-vm-custom-ip + spec: + type: Static + staticIP: 10.66.20.77 properties: apiVersion: type: string diff --git a/crds/virtualmachineoperations.yaml b/crds/virtualmachineoperations.yaml index 603d7df544..b6cc266b4c 100644 --- a/crds/virtualmachineoperations.yaml +++ b/crds/virtualmachineoperations.yaml @@ -48,6 +48,14 @@ spec: description: VirtualMachineOperation enables declarative management of virtual machine state changes. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineOperation + metadata: + generateName: restart-linux-vm- + spec: + virtualMachineName: linux-vm + type: Restart properties: apiVersion: description: |- diff --git a/crds/virtualmachinerestores.yaml b/crds/virtualmachinerestores.yaml index 0259035ded..2521932c69 100644 --- a/crds/virtualmachinerestores.yaml +++ b/crds/virtualmachinerestores.yaml @@ -40,6 +40,13 @@ spec: description: VirtualMachineRestore provides a resource for restoring a virtual machine and all associated resources from a snapshot. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineRestore + metadata: + name: restore-linux-vm + spec: + virtualMachineSnapshotName: linux-vm-snapshot properties: apiVersion: description: |- diff --git a/crds/virtualmachines.yaml b/crds/virtualmachines.yaml index 1a1ff088d5..5aacfec3a3 100644 --- a/crds/virtualmachines.yaml +++ b/crds/virtualmachines.yaml @@ -35,6 +35,21 @@ spec: - `.spec.runPolicy`. **Note:** The `metadata.name` field must comply with [Kubernetes object naming conventions](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/) and must not exceed 63 characters. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachine + metadata: + name: linux-vm + spec: + virtualMachineClassName: generic + cpu: + cores: 1 + coreFraction: 10% + memory: + size: 1Gi + blockDeviceRefs: + - kind: VirtualDisk + name: linux-vm-root required: - spec properties: diff --git a/crds/virtualmachinesnapshotoperations.yaml b/crds/virtualmachinesnapshotoperations.yaml index bfcfc6d1e1..6b8e102705 100644 --- a/crds/virtualmachinesnapshotoperations.yaml +++ b/crds/virtualmachinesnapshotoperations.yaml @@ -44,6 +44,19 @@ spec: description: VirtualMachineSnapshotOperation enables declarative management of virtual machine snapshot state changes. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineSnapshotOperation + metadata: + name: clone-database-from-snapshot + spec: + type: CreateVirtualMachine + virtualMachineSnapshotName: database-snapshot + createVirtualMachine: + mode: Strict + customization: + namePrefix: clone- + nameSuffix: -prod properties: apiVersion: description: |- diff --git a/crds/virtualmachinesnapshots.yaml b/crds/virtualmachinesnapshots.yaml index c1b681a99e..2b4e12174f 100644 --- a/crds/virtualmachinesnapshots.yaml +++ b/crds/virtualmachinesnapshots.yaml @@ -41,6 +41,15 @@ spec: description: VirtualMachineSnapshot provides a resource for creating snapshots of virtual machines. + x-examples: + - apiVersion: virtualization.deckhouse.io/v1alpha2 + kind: VirtualMachineSnapshot + metadata: + name: linux-vm-snapshot + spec: + virtualMachineName: linux-vm + requiredConsistency: true + keepIPAddress: Never properties: apiVersion: description: |- From 300da45a273d027dd1091b6875db51db959e513a Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Mon, 18 May 2026 18:49:07 +0400 Subject: [PATCH 2/5] docs: updates Signed-off-by: Vladislav Panfilov --- crds/virtualdisks.yaml | 9 +++++++-- crds/virtualmachinerestores.yaml | 1 + crds/virtualmachines.yaml | 16 ++++++++++++++++ crds/virtualmachinesnapshotoperations.yaml | 16 +++++++++++----- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/crds/virtualdisks.yaml b/crds/virtualdisks.yaml index 975c3b93d9..c3614ce47a 100644 --- a/crds/virtualdisks.yaml +++ b/crds/virtualdisks.yaml @@ -64,11 +64,16 @@ spec: - apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualDisk metadata: - name: blank-disk + name: linux-vm-root spec: persistentVolumeClaim: storageClassName: rv-thin-r2 - size: 100Mi + size: 10Gi + dataSource: + type: ObjectRef + objectRef: + kind: VirtualImage + name: ubuntu-24-04 properties: apiVersion: description: |- diff --git a/crds/virtualmachinerestores.yaml b/crds/virtualmachinerestores.yaml index 2521932c69..41075310de 100644 --- a/crds/virtualmachinerestores.yaml +++ b/crds/virtualmachinerestores.yaml @@ -47,6 +47,7 @@ spec: name: restore-linux-vm spec: virtualMachineSnapshotName: linux-vm-snapshot + restoreMode: Safe properties: apiVersion: description: |- diff --git a/crds/virtualmachines.yaml b/crds/virtualmachines.yaml index 5aacfec3a3..f7c164f98f 100644 --- a/crds/virtualmachines.yaml +++ b/crds/virtualmachines.yaml @@ -47,6 +47,22 @@ spec: coreFraction: 10% memory: size: 1Gi + provisioning: + type: UserData + userData: | + #cloud-config + package_update: true + packages: + - qemu-guest-agent + runcmd: + - systemctl enable --now qemu-guest-agent.service + ssh_pwauth: true + users: + - name: cloud + passwd: "$6$rounds=4096$saltsalt$fPmUsbjAuA7mnQNTajQM6ClhesyG0.yyQhvahas02ejfMAq1ykBo1RquzS0R6GgdIDlvS.kbUwDablGZKZcTP/" + shell: /bin/bash + sudo: ALL=(ALL) NOPASSWD:ALL + lock_passwd: false blockDeviceRefs: - kind: VirtualDisk name: linux-vm-root diff --git a/crds/virtualmachinesnapshotoperations.yaml b/crds/virtualmachinesnapshotoperations.yaml index 6b8e102705..0e24e31a0b 100644 --- a/crds/virtualmachinesnapshotoperations.yaml +++ b/crds/virtualmachinesnapshotoperations.yaml @@ -48,15 +48,21 @@ spec: - apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachineSnapshotOperation metadata: - name: clone-database-from-snapshot + name: clone-linux-vm-from-snapshot spec: type: CreateVirtualMachine - virtualMachineSnapshotName: database-snapshot + virtualMachineSnapshotName: linux-vm-snapshot createVirtualMachine: mode: Strict - customization: - namePrefix: clone- - nameSuffix: -prod + nameReplacement: + - from: + kind: VirtualMachine + name: linux-vm + to: linux-vm-clone + - from: + kind: VirtualDisk + name: linux-vm-root + to: linux-vm-clone-root properties: apiVersion: description: |- From 4c5bdbd2df24dbb3fac098efd93e6f94e8fdb94d Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Tue, 19 May 2026 13:59:54 +0400 Subject: [PATCH 3/5] docs: updates Signed-off-by: Vladislav Panfilov --- crds/virtualmachines.yaml | 15 +-------------- crds/virtualmachinesnapshotoperations.yaml | 17 +++++------------ 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/crds/virtualmachines.yaml b/crds/virtualmachines.yaml index f7c164f98f..2f4d48e085 100644 --- a/crds/virtualmachines.yaml +++ b/crds/virtualmachines.yaml @@ -49,20 +49,7 @@ spec: size: 1Gi provisioning: type: UserData - userData: | - #cloud-config - package_update: true - packages: - - qemu-guest-agent - runcmd: - - systemctl enable --now qemu-guest-agent.service - ssh_pwauth: true - users: - - name: cloud - passwd: "$6$rounds=4096$saltsalt$fPmUsbjAuA7mnQNTajQM6ClhesyG0.yyQhvahas02ejfMAq1ykBo1RquzS0R6GgdIDlvS.kbUwDablGZKZcTP/" - shell: /bin/bash - sudo: ALL=(ALL) NOPASSWD:ALL - lock_passwd: false + userData: blockDeviceRefs: - kind: VirtualDisk name: linux-vm-root diff --git a/crds/virtualmachinesnapshotoperations.yaml b/crds/virtualmachinesnapshotoperations.yaml index 0e24e31a0b..5f5f44389a 100644 --- a/crds/virtualmachinesnapshotoperations.yaml +++ b/crds/virtualmachinesnapshotoperations.yaml @@ -48,21 +48,14 @@ spec: - apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachineSnapshotOperation metadata: - name: clone-linux-vm-from-snapshot + name: spec: type: CreateVirtualMachine - virtualMachineSnapshotName: linux-vm-snapshot + virtualMachineSnapshotName: createVirtualMachine: - mode: Strict - nameReplacement: - - from: - kind: VirtualMachine - name: linux-vm - to: linux-vm-clone - - from: - kind: VirtualDisk - name: linux-vm-root - to: linux-vm-clone-root + mode: DryRun | Strict | BestEffort + nameReplacements: [ ] + customization: { } properties: apiVersion: description: |- From 6f72a3027016cf20630215c3287513147439e604 Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Tue, 19 May 2026 14:05:38 +0400 Subject: [PATCH 4/5] docs: fix Signed-off-by: Vladislav Panfilov --- crds/virtualmachinesnapshotoperations.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crds/virtualmachinesnapshotoperations.yaml b/crds/virtualmachinesnapshotoperations.yaml index 5f5f44389a..5dd4497e86 100644 --- a/crds/virtualmachinesnapshotoperations.yaml +++ b/crds/virtualmachinesnapshotoperations.yaml @@ -54,8 +54,8 @@ spec: virtualMachineSnapshotName: createVirtualMachine: mode: DryRun | Strict | BestEffort - nameReplacements: [ ] - customization: { } + nameReplacements: [] + customization: {} properties: apiVersion: description: |- From f0ef26d90f2e35abcbca50f9a68e208b42ea0c7b Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Tue, 19 May 2026 14:09:40 +0400 Subject: [PATCH 5/5] docs: updates Signed-off-by: Vladislav Panfilov --- crds/virtualmachinesnapshotoperations.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crds/virtualmachinesnapshotoperations.yaml b/crds/virtualmachinesnapshotoperations.yaml index 5dd4497e86..a2ddc130d6 100644 --- a/crds/virtualmachinesnapshotoperations.yaml +++ b/crds/virtualmachinesnapshotoperations.yaml @@ -48,10 +48,10 @@ spec: - apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachineSnapshotOperation metadata: - name: + name: vmsop-name spec: type: CreateVirtualMachine - virtualMachineSnapshotName: + virtualMachineSnapshotName: vm-snapshot-clone createVirtualMachine: mode: DryRun | Strict | BestEffort nameReplacements: []