The module is actively developed. It might significantly change in the future.

ClusterVirtualMachineImage

Scope: Cluster
Version: v1alpha2

Describes a virtual machine disk image that can be used as a data source for new VirtualMachineDisks or can be mounted in VirtualMachines as is. This resource type is available to all namespaces in the cluster. This resource is immutable, once created, cannot be modified.

A container image is created under the hood of this resource, which is stored in a dedicated deckhouse virtualization container registry (DVCR).

  • spec object
    • spec.dataSource object

      Required value

      • spec.dataSource.clusterVirtualMachineImage object
        Use another existing ClusterVirtualMachineImage.
        • spec.dataSource.clusterVirtualMachineImage.name string

          Required value

          A name of existing ClusterVirtualMachineImage.
      • spec.dataSource.containerImage object
        Use an image stored in external container registry. Only TLS enabled registries are supported. Use caBundle field to provide custom CA chain if needed.
        • spec.dataSource.containerImage.caBundle string
          The CA chain in base64 format to verify the container registry.

          Example:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.containerImage.image string

          Required value

          The container registry address of an image.

          Pattern: ^(?P<name>(?:(?P<domain>(?:(?:localhost|[\w-]+(?:\.[\w-]+)+)(?::\d+)?)|[\w]+:\d+)/)?(?P<image>[a-z0-9_.-]+(?:/[a-z0-9_.-]+)*))(?::(?P<tag>[\w][\w.-]{0,127}))?(?:@(?P<digest>[A-Za-z][A-Za-z0-9]*(?:[+.-_][A-Za-z][A-Za-z0-9]*)*:[0-9a-fA-F]{32,}))?$

          Example:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret object
          • spec.dataSource.containerImage.imagePullSecret.name string
            A name of the secret containing registry credentials.
          • spec.dataSource.containerImage.imagePullSecret.namespace string
            A namespace where imagePullSecret is located.
      • spec.dataSource.http object

        Fill the image with data from some external url. Supported schemas are:

        • http
        • https

        For https schema there is an option to skip TLS verification.

        • spec.dataSource.http.caBundle string
          The CA chain in base64 format to verify the url.

          Example:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.http.checksum object
          A checksum of the file, provided by the url, to verify if it was downloaded correctly or wasn’t changed. The file should match all specified checksums.
          • spec.dataSource.http.checksum.md5 string

            Length: 32..32

            Pattern: ^[0-9a-fA-F]{32}$

            Example:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256 string

            Length: 64..64

            Pattern: ^[0-9a-fA-F]{64}$

            Example:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.insecureSkipVerify boolean
          If a CA chain isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used in production environments.

          Default: false

        • spec.dataSource.http.url string

          Required value

          The http url with an image. The following formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw these formats can also be compressed with the following formats:
          • gz
          • xz

          Pattern: ^http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+$

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.type string

        Required value

        The type of an origin of the image. Options are:

        • HTTP — fill the image with data from some external http/https url.
        • ContainerImage — use an image, stored in container registry image.
        • VirtualMachineImage — use another existing VirtualMachineImage.
        • ClusterVirtualMachineImage — use another existing ClusterVirtualMachineImage.
        • Upload — fill the image with data, uploaded by user via the special interface.

        Allowed values: HTTP, ContainerImage, VirtualMachineImage, ClusterVirtualMachineImage, Upload

      • spec.dataSource.virtualMachineImage object
        Use another existing VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.name string

          Required value

          A name of existing VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.namespace string

          Required value

          A namespace where VirtualMachineImage is located.

VirtualMachine

Scope: Namespaced
Version: v1alpha2

Handles the VM according to its configuration and run policy.
  • spec object
    • spec.affinity object

      The same as in the pods spec.affinity parameter in Kubernetes;

      The affinity setting is completely similar to the above documentation, the only difference is in the names of some parameters. In fact, the following analogs are used:

      • podAffinity -> virtualMachineAndPodAffinity
      • podAffinityTerm -> virtualMachineAndPodAffinityTerm
      • spec.affinity.nodeAffinity object
        Describes node affinity scheduling rules for the VM.
        • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution array of objects
          • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference object
            • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions array of objects
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values array of strings
                • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values.Element of the array string
            • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields array of objects
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values array of strings
                • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values.Element of the array string
          • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight integer

            Allowed values: 1 <= X <= 100

        • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution object
          • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms array of objects

            Required value

            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions array of objects
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values array of strings
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values.Element of the array string
            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields array of objects
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values array of strings
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values.Element of the array string
      • spec.affinity.virtualMachineAndPodAffinity object
        Describes pod and VM affinity scheduling rules.
        • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution array of objects
          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector object
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions array of objects
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values array of strings
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Element of the array string
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector object
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions array of objects
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values array of strings
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values.Element of the array string
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces array of strings
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces.Element of the array string
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey string

              Required value

          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight integer

            Allowed values: 1 <= X <= 100

        • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution array of objects
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector object
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions array of objects
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values array of strings
                • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values.Element of the array string
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels object
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector object
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions array of objects
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values array of strings
                • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values.Element of the array string
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels object
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces array of strings
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces.Element of the array string
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey string
      • spec.affinity.virtualMachineAndPodAntiAffinity object
        Describes pod and VM anti-affinity scheduling rules.
        • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution array of objects
          • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm object
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector object
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions array of objects
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values array of strings
                  • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Element of the array string
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels object
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector object
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions array of objects
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values array of strings
                  • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values.Element of the array string
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels object
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces array of strings
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces.Element of the array string
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey string

              Required value

          • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight integer

            Allowed values: 1 <= X <= 100

        • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution array of objects
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector object
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions array of objects
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values array of strings
                • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values.Element of the array string
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels object
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector object
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions array of objects
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values array of strings
                • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values.Element of the array string
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels object
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces array of strings
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces.Element of the array string
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey string
    • spec.blockDevices array of objects

      Required value

      List of block devices that can be mounted by disks belonging to the VM. The order of booting is determined by the order in the list.
      • spec.blockDevices.clusterVirtualMachineImage object
        Attach ClusterVirtualMachineImage as the disk in RO mode. If the image is an iso-image, it will be mounted as a CDROM device.
        • spec.blockDevices.clusterVirtualMachineImage.name string

          Required value

          The name of the ClusterVirtualMachineImage resource.
      • spec.blockDevices.type string

        The type of the block device. Options are:

        • ClusterVirtualMachineImage — Use ClusterVirtualMachineImage as the disk. This type is always mounted in RO mode. If the image is an iso-image, it will be mounted as a CDROM device.
        • VirtualMachineImage — Use VirtualMachineImage as the disk. This type is always mounted in RO mode. If the image is an iso-image, it will be mounted as a CDROM device.
        • VirtualMachineDisk — Use VirtualMachineDisk as the disk. This type is always mounted in RW mode.

        Allowed values: ClusterVirtualMachineImage, VirtualMachineImage, VirtualMachineDisk

      • spec.blockDevices.virtualMachineDisk object
        Attach VirtualMachineDisk as the disk device in RW mode.
        • spec.blockDevices.virtualMachineDisk.name string

          Required value

          The name of the VirtualMachineDisk resource.
      • spec.blockDevices.virtualMachineImage object
        Use VirtualMachineImage as the disk. The image with storage ContainerRegistry will be mounted in RO mode. If the image is an iso-image, it will be mounted as a CDROM device. The image with storage Kubernetes will be mounted as ephemeral disk, so changes to volume will be lost on reboot.
        • spec.blockDevices.virtualMachineImage.name string

          Required value

          The name of the VirtualMachineImage resource.
    • spec.bootloader string

      Defines bootloader for VM.

      • BIOS - use legacy BIOS.
      • EFI - use Unified Extensible Firmware (EFI/UEFI).
      • EFIWithSecureBoot - use UEFI/EFI with SecureBoot support.

      Default: BIOS

      Allowed values: BIOS, EFI, EFIWithSecureBoot

    • spec.cpu object

      Required value

      Specifies the CPU settings for the VM.
      • spec.cpu.coreFraction string
        Guaranteed share of CPU that will be allocated to the VM. Specified as a percentage. Supported values: 5%, 10%, 25%, 50%, 100%.

        Default: 100%

        Allowed values: 5%, 10%, 25%, 50%, 100%

      • spec.cpu.cores integer

        Required value

        Specifies the number of cores inside the VM. The value must be greater or equal 1.

        Allowed values: 1 <= X

    • spec.disruptions object

      Disruptions settings for VM.

      Some VM settings require a reboot of the VM when changing the configuration. To reboot, it is necessary to approve the changes. The approvalMode parameter is used for this purpose.

      Default: { "restartApprovalMode": "Manual" }

      • spec.disruptions.restartApprovalMode string

        The approval mode for disruptive updates:

        • Manual — to approve restart, you must do this manually by copying the restart ID from .status.restartID to .spec.restartApprovalID.
        • Automatic — automatically approve disruption-involving updates.

        Allowed values: Manual, Automatic

    • spec.enableParavirtualization boolean
      Use the virtio bus to attach disk devices. Set to false to disable virtio for this VM.

      Default: true

    • spec.memory object

      Required value

      Specifies the memory settings for the VM.
      • spec.memory.size string

        Required value

        Describes the maximum amount of memory resources allowed.

        Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • spec.nodeSelector object
      The same as in the pods spec.nodeSelector parameter in Kubernetes;
    • spec.osType string

      For the selected type of operating system, determines the set of devices and other parameters required for correct operation will be applied to VM.

      • Windows - for the Microsoft Windows family of OS.
      • Generic - for other types of OS.

      Default: Generic

      Allowed values: Windows, Generic

    • spec.priorityClassName string
      The same as in the pods spec.priorityClassName parameter in Kubernetes;
    • spec.provisioning object
      This block allows you to configure the provisioning script for the VM.
      • spec.provisioning.type string

        This parameter defines the type of provisioning script:

        • UserData - allows the use of inline cloud-init userdata in the .spec.provisioning.UserData section.

        • UserDataSecret - allows the use of an existing Secret with cloud-init userdata.

        More information: https://cloudinit.readthedocs.io/en/latest/reference/examples.html

        Allowed values: UserData, UserDataSecret

      • spec.provisioning.userData string
        Inline cloud-init userdata script.
      • spec.provisioning.userDataSecretRef object
        Reference to an existing Secret with a cloud-init userdata script.
        • spec.provisioning.userDataSecretRef.name string

          Required value

          Secret name.
    • spec.restartApprovalID string
      Hash of virtual machine changes from .status.restartID. Required to approve restart for applying disruptive changes.
    • spec.runPolicy string

      This parameter defines the VM startup policy

      • AlwaysOn - after creation the VM is always in a running state, even in case of its shutdown by OS means.
      • AlwaysOff - after creation the VM is always in the off state.
      • Manual - after creation the VM is switched off, the VM state (switching on/off) is controlled via sub-resources or OS means.
      • AlwaysOnUnlessStoppedManualy - after creation the VM is always in a running state, even in case of its shutdown by means of the OS, the VM can be shut down using the corresponding subresource.

      Default: AlwaysOnUnlessStoppedManualy

      Allowed values: AlwaysOn, AlwaysOff, Manual, AlwaysOnUnlessStoppedManualy

    • spec.terminationGracePeriodSeconds integer
      Grace period observed after signalling a VM to stop after which the VM is force terminated.

      Default: 60

    • spec.tolerations array of objects
      The same as in the pods spec.tolerations parameter in Kubernetes;
      • spec.tolerations.effect string
      • spec.tolerations.key string
      • spec.tolerations.operator string
      • spec.tolerations.tolerationSeconds integer
      • spec.tolerations.value string
    • spec.topologySpreadConstraints array of objects
      The same as in the pods spec.topologySpreadConstraints parameter in Kubernetes;
      • spec.topologySpreadConstraints.labelSelector object
        • spec.topologySpreadConstraints.labelSelector.matchExpressions array of objects
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.key string
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.operator string
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.values array of strings
            • spec.topologySpreadConstraints.labelSelector.matchExpressions.values.Element of the array string
        • spec.topologySpreadConstraints.labelSelector.matchLabels object
      • spec.topologySpreadConstraints.maxSkew integer
      • spec.topologySpreadConstraints.topologyKey string
      • spec.topologySpreadConstraints.whenUnsatisfiable string
    • spec.virtualMachineIPAddressClaimName string

      The name for associated VirtualMachineIPAddressClaim resource.

      If specified, VirtualMachineIPAddressClaim should exists on VirtualMachine creation. If not specified, a VirtualMachine name will be used to create an implicit VirtualMachineIPAddressClaim. This claim will be deleted on VirtualMachine deletion.

VirtualMachineBlockDeviceAttachment

Scope: Namespaced
Version: v1alpha2

The resource provides a hot plug for connecting a disk to a virtual machine.
  • spec object
    • spec.blockDevice object

      Required value

      The block device that will be connected as a hot plug disk to the virtual machine.
      • spec.blockDevice.type string

        The type of the block device. Options are:

        • VirtualMachineDisk — Use VirtualMachineDisk as the disk. This type is always mounted in RW mode.

        Allowed values: VirtualMachineDisk

      • spec.blockDevice.virtualMachineDisk object
        Use VirtualMachineDisk as the disk. This type is always mounted in RW mode.
        • spec.blockDevice.virtualMachineDisk.name string

          Required value

          The name of VirtualMachineDisk
    • spec.virtualMachineName string

      Required value

      The name of the virtual machine to which the disk or image is connected.

VirtualMachineDisk

Scope: Namespaced
Version: v1alpha2

Describes a virtual machine disk which could be mounted to VirtualMachines as is. After creation, only the .spec.persistentVolumeClaim.size field is available for upward change, all other fields are immutable.

A PVC is created under the hood of the resource, into which the data from the source is filled.

  • spec object
    • spec.dataSource object
      An origin of the disk. If empty or absent, empty disk will be created.
      • spec.dataSource.clusterVirtualMachineImage object
        Use another existing ClusterVirtualMachineImage.
        • spec.dataSource.clusterVirtualMachineImage.name string

          Required value

          A name of existing ClusterVirtualMachineImage.
      • spec.dataSource.containerImage object
        Use an image stored in external container regitry. Use an image stored in external container registry. Only TLS enabled registries are supported. Use caBundle field to provide custom CA chain if needed.
        • spec.dataSource.containerImage.caBundle string
          The CA chain in base64 format to verify the container registry.

          Example:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.containerImage.image string

          Required value

          The container registry address of an image.

          Pattern: ^(?P<name>(?:(?P<domain>(?:(?:localhost|[\w-]+(?:\.[\w-]+)+)(?::\d+)?)|[\w]+:\d+)/)?(?P<image>[a-z0-9_.-]+(?:/[a-z0-9_.-]+)*))(?::(?P<tag>[\w][\w.-]{0,127}))?(?:@(?P<digest>[A-Za-z][A-Za-z0-9]*(?:[+.-_][A-Za-z][A-Za-z0-9]*)*:[0-9a-fA-F]{32,}))?$

          Example:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret object
          • spec.dataSource.containerImage.imagePullSecret.name string
            A name of the secret containing registry credentials.
      • spec.dataSource.http object

        Fill the image with data from some external url. Supported schemas are:

        • http
        • https

        For https schema there is an option to skip TLS verification.

        • spec.dataSource.http.caBundle string
          The CA chain in base64 format to verify the url.

          Example:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.http.checksum object
          A checksum of the file, provided by the url, to verify if it was downloaded correctly or wasn’t changed. The file should match all specified checksums.
          • spec.dataSource.http.checksum.md5 string

            Length: 32..32

            Pattern: ^[0-9a-fA-F]{32}$

            Example:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256 string

            Length: 64..64

            Pattern: ^[0-9a-fA-F]{64}$

            Example:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.insecureSkipVerify boolean
          If a CA chain isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used in production environments.

          Default: false

        • spec.dataSource.http.url string

          Required value

          The http url with an image. The following formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw these formats can also be compressed with the following formats:
          • gz
          • xz

          Pattern: ^http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+$

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.type string

        Required value

        The type of an origin of the disk. Options are:

        • HTTP — fill the disk with data from some external http/https url.
        • ContainerImage — fill the disk from an image, stored in container registry image.
        • VirtualMachineImage — fill the disk from another existing VirtualMachineImage.
        • ClusterVirtualMachineImage — fill the disk from another existing ClusterVirtualMachineImage.
        • Upload — fill the disk with data, uploaded by user via the special interface.

        Allowed values: HTTP, ContainerImage, VirtualMachineImage, ClusterVirtualMachineImage, Upload

      • spec.dataSource.virtualMachineImage object
        Use another existing VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.name string

          Required value

          A name of existing VirtualMachineImage.
    • spec.persistentVolumeClaim object

      Required value

      Settings for creating PVCs to store the disk.
      • spec.persistentVolumeClaim.size string
        Desired size for PVC to store the disk. If the disk is created from an image, the size must be at least as large as the original unpacked image.

        Pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$

      • spec.persistentVolumeClaim.storageClassName string
        The name of the StorageClass required by the claim. More info — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

VirtualMachineImage

Scope: Namespaced
Version: v1alpha2

Describes a virtual machine disk image which could be used as data source for new VirtualMachineDisks or could be mounted to VirtualMachines as is. This resource is immutable, once created, cannot be modified.

A container image is created under the hood of this resource, which is stored in a dedicated deckhouse virtualization container registy (DVCR) or PVC, into which the data from the source is filled.

  • spec object
    • spec.dataSource object

      Required value

      An origin of the image.
      • spec.dataSource.clusterVirtualMachineImage object
        Use another existing ClusterVirtualMachineImage.
        • spec.dataSource.clusterVirtualMachineImage.name string

          Required value

          A name of existing ClusterVirtualMachineImage.
      • spec.dataSource.containerImage object
        Use an image stored in external container regitry. Use an image stored in external container registry. Only TLS enabled registries are supported. Use caBundle field to provide custom CA chain if needed.
        • spec.dataSource.containerImage.caBundle string
          The CA chain in base64 format to verify the container registry.

          Example:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.containerImage.image string

          Required value

          The container registry address of an image.

          Pattern: ^(?P<name>(?:(?P<domain>(?:(?:localhost|[\w-]+(?:\.[\w-]+)+)(?::\d+)?)|[\w]+:\d+)/)?(?P<image>[a-z0-9_.-]+(?:/[a-z0-9_.-]+)*))(?::(?P<tag>[\w][\w.-]{0,127}))?(?:@(?P<digest>[A-Za-z][A-Za-z0-9]*(?:[+.-_][A-Za-z][A-Za-z0-9]*)*:[0-9a-fA-F]{32,}))?$

          Example:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret object
          • spec.dataSource.containerImage.imagePullSecret.name string
            A name of the secret containing registry credentials which must be located in the same namespace.
      • spec.dataSource.http object

        Fill the image with data from some external url. Supported schemas are:

        • http
        • https

        For https schema there is an option to skip TLS verification.

        • spec.dataSource.http.caBundle string
          The CA chain in base64 format to verify the url.

          Example:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.http.checksum object
          A checksum of the file, provided by the url, to verify if it was downloaded correctly or wasn’t changed. The file should match all specified checksums.
          • spec.dataSource.http.checksum.md5 string

            Length: 32..32

            Pattern: ^[0-9a-fA-F]{32}$

            Example:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256 string

            Length: 64..64

            Pattern: ^[0-9a-fA-F]{64}$

            Example:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.insecureSkipVerify boolean
          If a CA chain isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used in production environments.

          Default: false

        • spec.dataSource.http.url string

          Required value

          The http url with an image. The following formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw these formats can also be compressed with the following formats:
          • gz
          • xz

          Pattern: ^http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+$

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.type string

        Required value

        The type of an origin of the image. Options are:

        • HTTP — fill the image with data from some external http/https url.
        • ContainerImage — use an image, stored in container registry image.
        • VirtualMachineImage — use another existing VirtualMachineImage.
        • ClusterVirtualMachineImage — use another existing ClusterVirtualMachineImage.
        • Upload — fill the image with data, uploaded by user via the special interface.

        Allowed values: HTTP, ContainerImage, VirtualMachineImage, ClusterVirtualMachineImage, Upload

      • spec.dataSource.virtualMachineImage object
        Use another existing VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.name string

          Required value

          A name of existing VirtualMachineImage.
    • spec.storage string

      Required value

      Storage type to store the image for current virtualization setup.

      • ContainerRegistry — use a dedicated deckhouse virtualization container registry (DVCR). In this case, images will be downloaded and injected to a container, then pushed to a DVCR (shipped with the virtualization module).

      Allowed values: ContainerRegistry

VirtualMachineIPAddressClaim

Scope: Namespaced
Version: v1alpha2

The resource that defines IP address claim for virtual machine.
  • apiVersion string
  • kind string
  • metadata object
  • spec object
    The desired state of VirtualMachineIPAddressClaim.
    • spec.address string
      The requested IP address. If omitted the next available IP address will be assigned.
    • spec.leaseName string
      The issued VirtualMachineIPAddressLease, managed automatically.
    • spec.reclaimPolicy string

      Reclaim policies to determine the behavior of VirtualMachineIPAddressLease upon VirtualMachineIPAddressClaim deletion.

      • Delete — this means that a VirtualMachineIPAddressLease is automatically deleted when a user deletes the corresponding VirtualMachineIPAddressClaim.
      • Retain — if a user deletes a VirtualMachineIPAddressClaim, the corresponding VirtualMachineIPAddressLease will not be deleted. Instead, it is moved to the Released phase, where its ip address can be manually reclaimed.

      Default: Delete

      Allowed values: Delete, Retain

VirtualMachineIPAddressLease

Scope: Cluster
Version: v1alpha2

The resource that defines fact of issued lease for VirtualMachineIPAddressClaim.
  • apiVersion string
  • kind string
  • metadata object
  • spec object
    The desired state of VirtualMachineIPAddressLease.
    • spec.claimRef object
      The link to existing VirtualMachineIPAddressClaim.
      • spec.claimRef.name string

        Required value

        The name of the referenced VirtualMachineIPAddressClaim.
      • spec.claimRef.namespace string

        Required value

        The Namespace of the referenced VirtualMachineIPAddressClaim.
    • spec.reclaimPolicy string

      Reclaim policies to determine the behavior of VirtualMachineIPAddressLease upon VirtualMachineIPAddressClaim deletion.

      • Delete — this means that a VirtualMachineIPAddressLease is automatically deleted when a user deletes the corresponding VirtualMachineIPAddressClaim.
      • Retain — if a user deletes a VirtualMachineIPAddressClaim, the corresponding VirtualMachineIPAddressLease will not be deleted. Instead, it is moved to the Released phase, where its ip address can be manually reclaimed.

      Default: Delete

      Allowed values: Delete, Retain

VirtualMachineOperation

Scope: Namespaced
Version: v1alpha2

This resource provides the ability to declaratively manage state changes of virtual machines.
  • spec object
    • spec.force boolean
      Force the execution of the operation. Applies only for Restart and Stop. In this case, the action on the virtual machine is performed immediately.
    • spec.type string

      Operation over the virtualmachine:

      • Start - start the virtualmachine.
      • Stop - stop the virtualmachine.
      • Restart - restart the virtualmachine.

      Allowed values: Start, Stop, Restart

    • spec.virtualMachineName string

      Required value

      The name of the virtual machine for which the operation is performed.