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 Virtuals directly. This resource type is available for all namespaces in the cluster.

This resource cannot be modified once it has been created.

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

      An origin of the image.
      • 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.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.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage or VirtualDisk to create an image.
        • spec.dataSource.objectRef.kind
          string

          Required value

          A kind of existing VirtualImage, ClusterVirtualImage or VirtualDisk.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

        • spec.dataSource.objectRef.name
          string

          Required value

          A name of existing VirtualImage, ClusterVirtualImage or VirtualDisk.
        • spec.dataSource.objectRef.namespace
          string
          A namespace where VirtualImage or VirtualDisk is located.
      • spec.dataSource.type
        string

        Required value

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

        • HTTP — create an image from a file published on http/https service at a given url
        • ContainerImage — create the image from image stored in container registry.
        • ObjectRef — fill the disk from another existing resource.
        • Upload — fill the image with data, uploaded by user via the 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 VirtualDisk is created, only the disk size .spec.persistentVolumeClaim.size can be changed, all other fields are immutable.

  • spec
    object
    • spec.dataSource
      object
      An origin of the disk. If empty or absent, empty disk will be created.
      • 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.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
          A certificate bundle in Base64 format to verify the TLS certificate of the server hosting the image.

          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.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.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage or VirtualDiskSnapshot to create a disk.
        • spec.dataSource.objectRef.kind
          string

          Required value

          A kind of existing VirtualImage, ClusterVirtualImage or VirtualDiskSnapshot.

          Allowed values: VirtualImage, ClusterVirtualImage, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          A name of existing VirtualImage, ClusterVirtualImage or VirtualDiskSnapshot.
      • spec.dataSource.type
        string

        Required value

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

        • HTTP — create an image from a file published on http/https service at a given url
        • ContainerImage — create the image from image stored in container registry.
        • ObjectRef — fill the disk from another existing resource.
        • Upload — fill the disk with data, uploaded by user via the special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim
      object
      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.

        This parameter can be omitted if the .spec.dataSource block is specified, in which 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.]+)([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

        When creating disks, the user can specify the required StorageClass to create the disk, or not explicitly, in which case 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:

        • Immediate - The disk will be created and available for use immediately after creation.
        • WaitForFirstConsumer - The disk will be created only when it is used in a virtual machine. In this case, the disk will be created on the host where the virtual machine will be started.

        StorageClass can support different storage settings:

        • Creating a block device (Block) or file system (FileSystem).
        • Multiple Access (ReadWriteMany) or Single Access (ReadWriteOnce). ReadWriteMany disks support multiple access, which enables live migration of virtual machines. In contrast, ReadWriteOnce disks, which are limited to access from only one host, cannot provide this capability.

        For known storage types, the platform will independently determine the most effective settings when creating disks (in descending order of priority):

        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

A VolumeSnapshot is created under the hood of the resource.

  • 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 the value is set to true, a virtual disk snapshot will be created if at least one of the following rules is met:

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

      Default: true

    • spec.virtualDiskName
      string

      Required value

      The name of the virtual disk to take snapshot.
    • spec.volumeSnapshotClassName
      string

      Required value

      The name of the volume snapshot class to use while snapshotting virtual disk.

VirtualImage

Scope: Namespaced
Version: v1alpha2

This resource describes a virtual disk image or installation image (iso) that can be used as a data source for new VirtualDisks or can be mounted in Virtuals.

This resource cannot be modified once it has been created.

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.containerImage
        object
        Use an image stored in external container regitry. 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.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.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage or VirtualDisk to create an image.
        • spec.dataSource.objectRef.kind
          string

          Required value

          A kind of existing VirtualImage, ClusterVirtualImage or VirtualDisk.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

        • spec.dataSource.objectRef.name
          string

          Required value

          A name of existing VirtualImage, ClusterVirtualImage or VirtualDisk.
      • 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.
        • ObjectRef — fill the disk from another existing resource.
        • Upload — fill the image with data, uploaded by user via the special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • 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).
      • Kubernetes - use a Persistent Volume Claim (PVC).

      Default: ContainerRegistry

      Allowed values: ContainerRegistry, Kubernetes

VirtualMachineBlockDeviceAttachment

Scope: Namespaced
Version: v1alpha2

VirtualMachineBlockDeviceAttachment provides a hot plug for connecting 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

      • spec.blockDeviceRef.kind
        string

        The type of the block device. Options are:

        • VirtualDisk — use VirtualDisk as the disk. This type is always mounted in RW mode.

        Allowed values: VirtualDisk

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

      Required value

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

VirtualMachineClass

Scope: Cluster
Version: v1alpha2

VirtualMachineClass resource describes a 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 CPU model based on an intersection CPU features for selected nodes.
        • spec.cpu.discovery.nodeSelector
          object
          A selection of nodes on the basis of which a universal CPU model will be created.
          • 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
        A list of CPU instructions (features) required when type=Features. More information about features here

        Example:

        features:
        - mmx
        - vmx
        - sse2
        
      • spec.cpu.model
        string
        The name of CPU model. More information about models here

        Minimal length: 1

        Example:

        model: IvyBridge
        
      • spec.cpu.type
        string

        Required value

        CPUType defines cpu type, the following options are supported:

        • Host - a virtual CPU is used that is as close as possible to the platform node’s CPU in terms of instruction set. 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 generations of processors, as their instruction set is different.
        • HostPassthrough - uses the physical CPU of the platform node directly without any modifications. When using this class, the guest VM can only be transferred to a target node that has a CPU that exactly matches the CPU of the source node.
        • Discovery - create a CPU model based on an intersecton CPU features for selected nodes.
        • Model - CPU model name. A CPU model is a named and previously defined set of supported CPU instructions.
        • Features - the required set of supported instructions for the CPU.

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

    • spec.nodeSelector
      object
      NodeSelector defines selects the nodes that are targeted to VM scheduling.
      • spec.nodeSelector.matchExpressions
        array of objects
        • 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} 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.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 cpu core count.

          Allowed values: X <= 1024

          Example:

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

          Required value

          Minimum cpu core count.

          Allowed values: 1 <= X

          Example:

          min: 1
          
        • spec.sizingPolicies.cores.step
          integer
          Cpu cores count discretization step. I.e. min=2, max=10, step=4 allows to set 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. I.e. min=2Gi, max=4Gi, step=1Gi allows to set 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
          

VirtualMachineIPAddress

Scope: Namespaced
Version: v1alpha2

The resource that defines IP address for virtual machine.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    The desired state of VirtualMachineIPAddress.
    • spec.staticIP
      string
      The requested static IP address that should be assigned to the virtual machine. This field is required only if type is set to ‘Static’.
    • spec.type
      string

      Required value

      Specifies the mode of IP address assignment. Possible values are “Auto” for automatic IP assignment, or “Static” for assigning a specific IP address.

      Allowed values: Auto, Static

VirtualMachineIPAddressLease

Scope: Cluster
Version: v1alpha2

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

        Required value

        The name of the referenced VirtualMachineIPAddress.
      • spec.virtualMachineIPAddressRef.namespace
        string

        Required value

        The Namespace of the referenced VirtualMachineIPAddress.

VirtualMachineOperation

Scope: Namespaced
Version: v1alpha2

VirtualMachineOperation resource provides the ability to declaratively manage state changes 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.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

      Required value

      Type is operation over the virtualmachine:

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

      Allowed values: Restart, Start, Stop, Migrate

    • spec.virtualMachineName
      string

      Required value

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

VirtualMachineRestore

Scope: Namespaced
Version: v1alpha2

VirtualMachineRestore provides a resource that allows to restore a snapshot of the virtual machine and all its resources.
  • 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
      Redefining the virtual machine resource names.
      • spec.nameReplacements.from
        object
        The selector to choose resources for name replacement.
        • spec.nameReplacements.from.kind
          string
          The kind of resource to rename.
        • spec.nameReplacements.from.name
          string

          Required value

          The current name of resource to rename.
      • spec.nameReplacements.to
        string
        The new resource name.
    • spec.virtualMachineSnapshotName
      string

      Required value

      The name of virtual machine snapshot to restore the virtual machine.

      Minimal length: 1

VirtualMachine

Scope: Namespaced
Version: v1alpha2

This resource describes the configuration and status of a virtual machine (VM). For a running VM, parameter changes can only be applied after the VM is rebooted, except for the following parameters (they are applied on the fly):

  • .metadata.labels.
  • .metadata.annotations.
  • .spec.disruptions.restartApprovalMode.
  • .spec.disruptions.runPolicy.
  • 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.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 that can be mounted by disks belonging to the virtual machine. The order of booting is determined by the order in the list.
      • spec.blockDeviceRefs.kind
        string

        The type of the block device. Options are:

        • ClusterVirtualImage — Use ClusterVirtualImage 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.
        • VirtualImage — Use VirtualImage 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.
        • VirtualDisk — Use VirtualDisk as the disk. This type is always mounted in RW mode.

        Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

      • spec.blockDeviceRefs.name
        string
        The name of attached 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.

        Default: 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

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

      Changes to some VM configuration settings require a reboot of the VM to apply them. This policy allows you to specify the behavior of how the VM will respond to such changes.

      Default: { "restartApprovalMode": "Manual" }

      • spec.disruptions.restartApprovalMode
        string

        Approval mode for changes that require rebooting the VM:

        • Manual - changes will not be applied until the user reboots the VM himself.
        • Automatic - the VM will be rebooted immediately after saving the parameters that require rebooting the VM.

        Allowed values: Manual, Automatic

    • spec.enableParavirtualization
      boolean

      Use the virtio bus to connect virtual devices of the VM. Set to false to disable virtio for this VM.

      Note: To use paravirtualization mode, some operating systems require the appropriate drivers to be installed.

      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

      The parameter allows you to select the type of used OS, for which a VM with an optimal set of required virtual devices and parameters will be created.

      • Windows - for Microsoft Windows family operating systems.
      • 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.sysprepRef
        object

        Reference to an existing Windows sysprep automation.

        Resource structure for the SysprepRef type:

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

          Required value

          The kind of an existing Windows sysprep automation resource. Need to use a custom secret type - “provisioning.virtualization.deckhouse.io/sysprep”

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.sysprepRef.name
          string

          Required value

          Secret name.
      • spec.provisioning.type
        string

        This parameter defines the type of provisioning script:

        Parameters supported for using the provisioning script:

        • UserData - use the cloud-init in the .spec.provisioning.UserData section.
        • UserDataRef - use a cloud-init script that resides in a different resource.
        • SysprepRef - Use a Windows Automation script that resides in a different resource.

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

        Allowed values: UserData, UserDataRef, SysprepRef

      • spec.provisioning.userData
        string
        Inline cloud-init userdata script.
      • spec.provisioning.userDataRef
        object

        A reference to an existing resource with a cloud-init script.

        Resource structure for userDataRef type:

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

          Required value

          The kind of an existing cloud-init automation resource. Need to use a custom secret type - “provisioning.virtualization.deckhouse.io/cloud-init”

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.userDataRef.name
          string

          Required value

          The name of the resource.
    • 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.
      • AlwaysOnUnlessStoppedManually - 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: AlwaysOnUnlessStoppedManually

      Allowed values: AlwaysOn, AlwaysOff, Manual, AlwaysOnUnlessStoppedManually

    • 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.virtualMachineClassName
      string

      Required value

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

      Name for the associated virtualMachineIPAddress resource.

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

      If not explicitly specified, by default a virtualMachineIPAddress resource is created for the VM 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 save the IP address of the 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 value is true, the snapshot of the virtual machine will be taken only in the following scenarios:

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

      Default: true

    • spec.virtualMachineName
      string

      Required value

      The name of virtual machine to take snapshot.

      Minimal length: 1

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