The functionality of the module might change, but the main features will remain. Compatibility with future versions is guaranteed, but might require additional migration steps.

ClusterVirtualImage

Scope: Cluster
Version: v1alpha2

Describes a virtual disk image that can be used as a data source for new VirtualDisks or an installation image (iso) to be mounted in VirtualMachines directly. This resource type is available for all namespaces in the cluster.

This resource cannot be modified once it has been created.

With this resource in the cluster, a container image is created and stored in a dedicated Deckhouse Virtualization Container Registry (DVCR).

  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.dataSource
      object

      Required value

      Origin of the image.
      • spec.dataSource.containerImage
        object
        Use an image stored in external container registry. Only registries with enabled TLS protocol are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
        • spec.dataSource.containerImage.caBundle
          string
          CA chain in Base64 format to verify the container registry.

          Example:

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

          Required value

          Path to the image in the container registry.

          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
            Name of the secret keeping container registry credentials.
          • spec.dataSource.containerImage.imagePullSecret.namespace
            string
            Namespace where imagePullSecret is located.
      • spec.dataSource.http
        object

        Fill the image with data from an external URL. The following schemas are supported:

        • HTTP
        • HTTPS

        For HTTPS schema, there is an option to skip the TLS verification.

        • spec.dataSource.http.caBundle
          string
          CA chain in Base64 format to verify the URL.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          object
          Checksum to verify integrity and consistency of the downloaded file. The file must 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.url
          string

          Required value

          URL of the file for creating an image. The following file formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw The file can be compressed into an archive in one of 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.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource to create an image.
        • spec.dataSource.objectRef.kind
          string

          Required value

          Kind of the existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          Name of the existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.
        • spec.dataSource.objectRef.namespace
          string
          Namespace where the VirtualImage, VirtualDisk or VirtualDiskSnapshot resource is located.
      • spec.dataSource.type
        string

        Required value

        The following image sources are available for creating an image:

        • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
        • ContainerImage: From another image stored in a container registry.
        • ObjectRef: From an existing resource.
        • Upload: From data uploaded by the user via a special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

VirtualDisk

Scope: Namespaced
Version: v1alpha2

The VirtualDisk resource describes the desired virtual machine disk configuration. A VirtualDisk can be mounted statically in the virtual machine by specifying it in the .spec.blockDeviceRefs disk list, or mounted on-the-fly using the VirtualMachineBlockDeviceAttachments resource.

Once a VirtualDisk is created, only the disk size field .spec.persistentVolumeClaim.size can be changed. All other fields are immutable.

  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.dataSource
      object
      • spec.dataSource.containerImage
        object
        Use an image stored in an external container registry. Only registries with enabled TLS are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
        • spec.dataSource.containerImage.caBundle
          string
          CA chain in Base64 format to verify the container registry.

          Example:

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

          Required value

          Path to the image in the container registry.

          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
            Name of the secret keeping container registry credentials, which must be located in the same namespace.
      • spec.dataSource.http
        object

        Fill the image with data from an external URL. The following schemas are supported:

        • HTTP
        • HTTPS

        For HTTPS schema, there is an option to skip the TLS verification.

        • spec.dataSource.http.caBundle
          string
          CA chain in Base64 format to verify the URL.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          object
          Checksum to verify integrity and consistency of the downloaded file. The file must 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.url
          string

          Required value

          URL of the file for creating an image. The following file formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw The file can be compressed into an archive in one of 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.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource to create a disk.
        • spec.dataSource.objectRef.kind
          string

          Required value

          Kind of the existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          Name of the existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource.
      • spec.dataSource.type
        string

        The following image sources are available for creating an image:

        • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
        • ContainerImage: From another image stored in a container registry.
        • ObjectRef: From an existing resource.
        • Upload: From data uploaded by the user via a special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim
      object
      Settings for creating PVCs to store the disk.
      • spec.persistentVolumeClaim.size
        integer or 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.

        This parameter can be omitted if the .spec.dataSource section is filled out. In this case, the controller will determine the disk size automatically, based on the size of the extracted image from the source specified in .spec.dataSource.

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

      • spec.persistentVolumeClaim.storageClassName
        string

        StorageClass name required by the claim. For details on using StorageClass for PVC, refer to https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

        When creating disks, the user can specify the required StorageClass. If not specified, the default StorageClass will be used.

        The disk features and virtual machine behavior depend on the selected StorageClass.

        The VolumeBindingMode parameter in the StorageClass affects the disk creation process. The following values are allowed:

        • Immediate: The disk will be created and becomes available for use immediately after creation.
        • WaitForFirstConsumer: The disk will be created when first used on the node where the virtual machine will be started.

        StorageClass supports multiple storage settings:

        • Creating a block device (Block) or file system (FileSystem).
        • Multiple access (ReadWriteMany) or single access (ReadWriteOnce). The ReadWriteMany disks support multiple access, which enables a “live” migration of virtual machines. In contrast, the ReadWriteOnce disks, which can be accessed from only one node, don’t have this feature.

        For known storage types, Deckhouse automatically determines the most efficient settings when creating disks (by priority, in descending order):

        1. Block + ReadWriteMany
        2. FileSystem + ReadWriteMany
        3. Block + ReadWriteOnce
        4. FileSystem + ReadWriteOnce

VirtualDiskSnapshot

Scope: Namespaced
Version: v1alpha2

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.

  • spec
    object
    • spec.requiredConsistency
      boolean

      Create a snapshot of a connected virtual machine’s disk only if it is possible to freeze the machine through the agent.

      If set to True, a virtual disk snapshot will be created when at least one of the following conditions is met:

      • The virtual disk is not connected to any virtual machine.
      • The virtual disk is connected to a powered-off virtual machine.
      • The virtual disk is connected to a virtual machine with an agent, and the freeze operation was successful.

      Default: true

    • spec.virtualDiskName
      string

      Required value

      Virtual disk name the snapshot is created for.
    • spec.volumeSnapshotClassName
      string

      Required value

      Volume snapshot class name to use while a virtual disk snapshot is created.

VirtualImage

Scope: Namespaced
Version: v1alpha2

This resource describes a virtual disk image to use as a data source for new VirtualDisk resources or an installation image (iso) that can be mounted into the VirtualMachine resource.

This resource cannot be modified once it has been created.

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.

  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.dataSource
      object

      Required value

      • spec.dataSource.containerImage
        object
        Use an image stored in an external container registry. Only registries with enabled TLS protocol are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
        • spec.dataSource.containerImage.caBundle
          string
          CA chain in Base64 format to verify the container registry.

          Example:

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

          Required value

          Path to the image in the container registry.

          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
            Name of the secret keeping container registry credentials, which must be located in the same namespace.
      • spec.dataSource.http
        object

        Fill the image with data from an external URL. The following schemas are supported:

        • HTTP
        • HTTPS

        For HTTPS schema, there is an option to skip the TLS verification.

        • spec.dataSource.http.caBundle
          string
          CA chain in Base64 format to verify the URL.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          object
          Checksum to verify integrity and consistency of the downloaded file. The file must 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.url
          string

          Required value

          URL of the file for creating an image. The following file formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw The file can be compressed into an archive in one of 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.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource to create an image.
        • spec.dataSource.objectRef.kind
          string

          Required value

          Kind of an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          Name of an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.
      • spec.dataSource.type
        string

        The following image sources are available for creating an image:

        • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
        • ContainerImage: From another image stored in a container registry.
        • ObjectRef: From an existing resource.
        • Upload: From data uploaded by the user via a special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim
      object
      Settings for creating PVCs to store an image with the storage type PersistentVolumeClaim.
      • spec.persistentVolumeClaim.storageClassName
        string

        Name of the StorageClass required by the claim. For details on using StorageClass for PVC, refer to — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

        When creating an image with the PersistentVolumeClaim storage type, the user can specify the required StorageClass. If not specified, the default StorageClass will be used.

    • spec.storage
      string

      Required value

      Storage type to keep the image for the current virtualization setup.

      • ContainerRegistry: Use the DVCR container registry. In this case, images are downloaded to a container and then to DVCR (shipped with the virtualization module).
      • PersistentVolumeClaim: Use a PVC.
      • Kubernetes: A deprecated storage type. Not recommended for use and may be removed in future versions. Use PersistentVolumeClaim instead.

      Default: ContainerRegistry

      Allowed values: ContainerRegistry, Kubernetes, PersistentVolumeClaim

VirtualMachineBlockDeviceAttachment

Scope: Namespaced
Version: v1alpha2

VirtualMachineBlockDeviceAttachment provides a hot plug for attaching a disk to a virtual machine.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.blockDeviceRef
      object

      Required value

      Block device that will be connected to the VM as a hot-plug disk.
      • spec.blockDeviceRef.kind
        string

        Block device type. Available options:

        • VirtualDisk: Use VirtualDisk as the disk. This type is always mounted in RW mode.
        • VirtualImage: Use VirtualImage as the disk. This type is always mounted in RO mode.
        • ClusterVirtualImage: Use ClusterVirtualImage as the disk. This type is always mounted in RO mode.

        Allowed values: VirtualDisk, VirtualImage, ClusterVirtualImage

      • spec.blockDeviceRef.name
        string
        Name of the block device to attach.
    • spec.virtualMachineName
      string

      Required value

      Virtual machine name the disk or image should be attached to.

VirtualMachineClass

Scope: Cluster
Version: v1alpha2

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.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.cpu
      object

      Required value

      CPU defines the requirements for the virtual CPU model.
      • spec.cpu.discovery
        object
        Create a CPU model based on intersecting CPU features for selected nodes.
        • spec.cpu.discovery.nodeSelector
          object
          A selection of nodes to be used as the basis for creating a universal CPU model.
          • spec.cpu.discovery.nodeSelector.matchExpressions
            array of objects
            matchExpressions is a list of label selector requirements. The requirements are ANDed.
            • spec.cpu.discovery.nodeSelector.matchExpressions.key
              string
              key is the label key that the selector applies to.
            • spec.cpu.discovery.nodeSelector.matchExpressions.operator
              string
              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
            • spec.cpu.discovery.nodeSelector.matchExpressions.values
              array of strings
              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
          • spec.cpu.discovery.nodeSelector.matchLabels
            object
            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
      • spec.cpu.features
        array of strings
        List of CPU instructions (features) required when type=Features. For more information about CPU features, refer to the libvirt docs.

        Example:

        features:
        - mmx
        - vmx
        - sse2
        
      • spec.cpu.model
        string
        CPU model name. For more information about CPU models and topology, refer to the libvirt docs.

        Minimal length: 1

        Example:

        model: IvyBridge
        
      • spec.cpu.type
        string

        Required value

        CPUType defines the CPU type, the following options are supported:

        • Host: Uses a virtual CPU with an instruction set closely matching the platform node’s CPU. This provides high performance and functionality, as well as compatibility with “live” migration for nodes with similar processor types. For example, VM migration between nodes with Intel and AMD processors will not work. This is also true for different CPU generations, as their instruction set is different.
        • HostPassthrough: Uses the platform node’s physical CPU directly, without any modifications. When using this class, the guest VM can only be transferred to a target node with a CPU exactly matching the source node’s CPU.
        • Discovery: Create a virtual CPU based on instruction sets of physical CPUs for a selected set of nodes.
        • Model: CPU model. A CPU model is a named and previously defined set of supported CPU instructions.
        • Features: A required set of supported instructions for the CPU.

        Allowed values: Host, HostPassthrough, Discovery, Model, Features

    • spec.nodeSelector
      object
      NodeSelector defines the nodes targeted for VM scheduling.
      • spec.nodeSelector.matchExpressions
        array of objects
        A list of node selector requirements by node’s labels.
        • spec.nodeSelector.matchExpressions.key
          string
          The label key that the selector applies to.
        • spec.nodeSelector.matchExpressions.operator
          string
          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
        • spec.nodeSelector.matchExpressions.values
          array of strings
          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
      • spec.nodeSelector.matchLabels
        object
        A map of {key,value} pairs. A single {key,value} pair in the matchLabels map is equivalent to an element of matchExpressions whose key field is “key”, operator is “In”, and the value array contains only “value”. The requirements are ANDed.
    • spec.sizingPolicies
      array of objects
      • spec.sizingPolicies.coreFractions
        array of integers
        Allowed values of the coreFraction parameter.
        • spec.sizingPolicies.coreFractions.Element of the array
          integer

          Allowed values: 1 <= X <= 100

      • spec.sizingPolicies.cores
        object
        The policy applies for a specified range of the number of CPU cores.
        • spec.sizingPolicies.cores.max
          integer

          Required value

          Maximum number of CPU cores.

          Allowed values: X <= 1024

          Example:

          max: 10
          
        • spec.sizingPolicies.cores.min
          integer

          Required value

          Minimum number of CPU cores.

          Allowed values: 1 <= X

          Example:

          min: 1
          
        • spec.sizingPolicies.cores.step
          integer
          Discretization step for the CPU core number. For example, the combination of min=2, max=10, and step=4 allows to set the number of virtual machine CPU cores to 2, 6, or 10.

          Allowed values: 1 <= X

          Example:

          step: 1
          
      • spec.sizingPolicies.dedicatedCores
        array of booleans
        Allowed values of the dedicatedCores parameter.
      • spec.sizingPolicies.memory
        object
        Memory sizing policy.
        • spec.sizingPolicies.memory.max
          integer or string
          Maximum amount of memory.

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

          Example:

          max: 8Gi
          
        • spec.sizingPolicies.memory.min
          integer or string
          Minimum amount of memory.

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

          Example:

          min: 1Gi
          
        • spec.sizingPolicies.memory.perCore
          object
          Amount of memory per CPU core.
          • spec.sizingPolicies.memory.perCore.max
            integer or string
            Maximum amount of memory.

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

            Example:

            max: 8Gi
            
          • spec.sizingPolicies.memory.perCore.min
            integer or string
            Minimum amount of memory.

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

            Example:

            min: 1Gi
            
        • spec.sizingPolicies.memory.step
          integer or string
          Memory size discretization step. For example, the combination of min=2Gi, max=4Giandstep=1Gi` allows to set the virtual machine memory size to 2Gi, 3Gi, or 4Gi.

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

          Example:

          step: 512Mi
          
    • spec.tolerations
      array of objects
      Tolerations are the same as spec.tolerations for pods. These tolerations will be merged with the tolerations specified in the VirtualMachine resource. VirtualMachine tolerations have a higher priority.
      • spec.tolerations.effect
        string
        Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
      • spec.tolerations.key
        string
        Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
      • spec.tolerations.operator
        string
        Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
      • spec.tolerations.tolerationSeconds
        integer
        TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
      • spec.tolerations.value
        string
        Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

VirtualMachineIPAddress

Scope: Namespaced
Version: v1alpha2

Defines the IP address for a virtual machine.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    VirtualMachineIPAddress settings.
    • spec.staticIP
      string
      Requested static IP address to assign to the virtual machine. This field is required only if type is set to ‘Static’.
    • spec.type
      string

      Required value

      Specifies the IP address assigning mode. Possible values:

      • Auto: For assigning the IP address automatically.
      • Static: For assigning a specific IP address.

      Allowed values: Auto, Static

VirtualMachineIPAddressLease

Scope: Cluster
Version: v1alpha2

Resource confirming the issued lease for VirtualMachineIPAddress.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    VirtualMachineIPAddressLease configuration parameter.
    • spec.virtualMachineIPAddressRef
      object
      Link to the existing VirtualMachineIPAddress resources.
      • spec.virtualMachineIPAddressRef.name
        string

        Required value

        Name of the reference VirtualMachineIPAddress resource.
      • spec.virtualMachineIPAddressRef.namespace
        string

        Required value

        Namespace of the reference VirtualMachineIPAddress resource.

VirtualMachineOperation

Scope: Namespaced
Version: v1alpha2

VirtualMachineOperation enables declarative management of virtual machine state changes.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.force
      boolean
      Force execution of an operation. Applies only to the Restart and Stop operations. In this case, the operation on a virtual machine is performed immediately.
    • spec.type
      string

      Required value

      Type of the operation to execute on a virtual machine:

      • Start: Start the virtual machine.
      • Stop: Stop the virtual machine.
      • Restart: Restart the virtual machine.
      • Migrate (deprecated): Migrate the virtual machine to another node where it can be started.
      • Evict: Migrate the virtual machine to another node where it can be started.

      Allowed values: Restart, Start, Stop, Migrate, Evict

    • spec.virtualMachineName
      string

      Required value

      Name of the virtual machine the operation is performed for.

VirtualMachineRestore

Scope: Namespaced
Version: v1alpha2

VirtualMachineRestore provides a resource for restoring a virtual machine and all associated resources from a snapshot.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.nameReplacements
      array of objects
      Renaming conventions for virtual machine resources.
      • spec.nameReplacements.from
        object
        Selector to choose resources for name replacement.
        • spec.nameReplacements.from.kind
          string
          Kind of a resource to rename.
        • spec.nameReplacements.from.name
          string

          Required value

          Current name of a resource to rename.
      • spec.nameReplacements.to
        string
        New resource name.
    • spec.virtualMachineSnapshotName
      string

      Required value

      Snapshot name to restore a virtual machine from.

      Minimal length: 1

VirtualMachine

Scope: Namespaced
Version: v1alpha2

Describes the configuration and status of a virtual machine (VM). On a running VM, changed parameters can only be applied after rebooting, except for the following parameters that are applied on the fly:

  • .metadata.labels
  • .metadata.annotations
  • .spec.disruptions.restartApprovalMode
  • .spec.runPolicy.
  • spec
    object
    • spec.affinity
      object

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

      The affinity setting details are exactly matching the documentation source above. The only difference are the names of several parameters. The following alternative names are used:

      • podAffinity -> virtualMachineAndPodAffinity
      • podAffinityTerm -> virtualMachineAndPodAffinityTerm
      • spec.affinity.nodeAffinity
        object
        Describes node affinity scheduling rules for a 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.matchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys.Element of the array
                string
            • 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.matchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys.Element of the array
              string
          • 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.matchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys.Element of the array
                string
            • 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.matchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys.Element of the array
              string
          • 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.blockDeviceRefs
      array of objects

      Required value

      List of block devices connected to the VM.
      • spec.blockDeviceRefs.kind
        string

        Supported block device types:

        • ClusterVirtualImage: Use ClusterVirtualImage as the disk. This type is always mounted in ReadOnly mode. An ISO image will be mounted as a CD-ROM device.
        • VirtualImage: Use VirtualImage as the disk. This type is always mounted in ReadOnly mode. An ISO image will be mounted as a CD-ROM device.
        • VirtualDisk: Use VirtualDisk as the disk. This type is always mounted in ReadWrite mode.

        Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

      • spec.blockDeviceRefs.name
        string
        Name of the attached resource.
    • spec.bootloader
      string

      Defines a bootloader for a VM.

      • BIOS: Use BIOS.
      • EFI: Use Unified Extensible Firmware (EFI/UEFI).
      • EFIWithSecureBoot: Use UEFI/EFI with the Secure Boot support.

      Default: BIOS

      Allowed values: BIOS, EFI, EFIWithSecureBoot

    • spec.cpu
      object

      Required value

      Section describing the CPU settings for a VM.
      • spec.cpu.coreFraction
        string
        Guaranteed share of CPU time that will be allocated to the VM. Specified as a percentage.

        Default: 100%

      • spec.cpu.cores
        integer

        Required value

        Number of cores.

        Allowed values: 1 <= X

    • spec.disruptions
      object

      Describes the policy for applying changes that require rebooting the VM.

      Changes to some VM configuration settings require a VM reboot to be applied. This policy lets you specify the behavior defining how the VM reacts to such changes.

      Default: { "restartApprovalMode": "Manual" }

      • spec.disruptions.restartApprovalMode
        string

        Approval mode for changes that require rebooting the VM:

        • Manual: Changes won’t be applied until the user manually reboots the VM.
        • Automatic: The VM will be rebooted immediately after the parameters requiring the reboot are saved.

        Allowed values: Manual, Automatic

    • spec.enableParavirtualization
      boolean

      Use the virtio bus for connecting virtual devices of a VM. To disable virtio for a VM, set this parameter to False.

      Note: To use the paravirtualization mode, some operating systems require installing the corresponding drivers.

      Default: true

    • spec.memory
      object

      Required value

      Section specifying the RAM settings for the VM.
      • spec.memory.size
        string

        Required value

        RAM amount.

        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 pod parameter spec.nodeSelector in Kubernetes.
    • spec.osType
      string

      Lets you select the type of a used OS that will be used to create a VM with an optimal set of required virtual devices and parameters.

      • Windows: For an operating system from the Microsoft Windows family.
      • Generic: For other operating systems.

      Default: Generic

      Allowed values: Windows, Generic

    • spec.priorityClassName
      string
      The same as in the pod parameter spec.priorityClassName in Kubernetes.
    • spec.provisioning
      object
      Section describing a VM initial provisioning scenario.
      • spec.provisioning.sysprepRef
        object

        Link to an existing resource with the Windows automation scenario.

        A resource structure for the SysprepRef type:

        • .data.autounattend.xml
        • .data.unattend.xml
        • spec.provisioning.sysprepRef.kind
          string

          Required value

          Kind of the resource. Use a secret of the following type: provisioning.virtualization.deckhouse.io/sysprep.

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.sysprepRef.name
          string

          Required value

          Secret name.
      • spec.provisioning.type
        string

        Supported parameters for using the provisioning scenario:

        • UserData: Use the cloud-init scenario in the .spec.provisioning.UserData section.
        • UserDataRef: Use the cloud-init scenario located in a different resource.
        • SysprepRef: Use the automatic Windows installation scenario located in a different resource.

        Allowed values: UserData, UserDataRef, SysprepRef

      • spec.provisioning.userData
        string
      • spec.provisioning.userDataRef
        object

        Link to an existing resource with the cloud-init scenario.

        A resource structure for the userDataRef type:

        • .data.userData.
        • spec.provisioning.userDataRef.kind
          string

          Required value

          Kind of the resource.

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.userDataRef.name
          string

          Required value

          Name of the resource with the cloud-init scenario.
    • spec.runPolicy
      string

      Defines the VM startup policy:

      • AlwaysOn: Once created, the VM is always in a running state, even if shut down by the OS.
      • AlwaysOff: Once created, the VM is always in a powered-off state.
      • Manual: Once created, the VM is switched off. Switching on and off is controlled via API services or the OS.
      • AlwaysOnUnlessStoppedManually: Once created, the VM is always in a running state. It can be switched off by the OS or using the following command for the d8 utility: d8 v stop <vm_name>.

      Default: AlwaysOnUnlessStoppedManually

      Allowed values: AlwaysOn, AlwaysOff, Manual, AlwaysOnUnlessStoppedManually

    • spec.terminationGracePeriodSeconds
      integer
      Grace period after sending a SIGTERM signal to shut down a VM. Once the grace period expires, the VM is forcibly terminated.

      Default: 60

    • spec.tolerations
      array of objects
      The same as in the pod parameter spec.tolerations 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 pod parameter spec.topologySpreadConstraints 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.virtualMachineClassName
      string

      Required value

      Name of the VirtualMachineClass resource describing the requirements for a virtual CPU, memory, and the resource allocation policy.
    • spec.virtualMachineIPAddressName
      string

      Name for the associated virtualMachineIPAddress resource.

      Specified when it is necessary to use a previously created IP address of a VM.

      If not explicitly specified, by default a virtualMachineIPAddress resource is created with a name similar to the VM resource (.metadata.name).

VirtualMachineSnapshot

Scope: Namespaced
Version: v1alpha2

VirtualMachineSnapshot provides a resource for creating snapshots of virtual machines.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    • spec.keepIPAddress
      string

      Required value

      KeepIPAddress defines whether to keep the IP address of a virtual machine or not:

      • Always: When creating a snapshot, the virtual machine’s IP address will be converted from Auto to Static and saved.
      • Never: When creating a snapshot, the virtual machine’s IP address will not be converted.

      Default: Always

      Allowed values: Always, Never

    • spec.requiredConsistency
      boolean

      Required value

      Create a snapshot of a virtual machine only if it is possible to freeze the machine through the agent.

      If set to true, the virtual machine snapshot will be created only in the following cases:

      • When the virtual machine is powered off.
      • When the virtual machine has an agent, and the freeze operation was successful.

      Default: true

    • spec.virtualMachineName
      string

      Required value

      Name of the virtual machine to take a snapshot of.

      Minimal length: 1

    • spec.volumeSnapshotClasses
      array of objects
      • spec.volumeSnapshotClasses.storageClassName
        string
        StorageClass name associated with a VolumeSnapshotClass.
      • spec.volumeSnapshotClasses.volumeSnapshotClassName
        string
        VolumeSnapshotClass name to use for virtual disk snapshotting.