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

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

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

          Example:

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

          Required value

          The container registry address of an image.

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

          Example:

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

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

        • http
        • https

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

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

          Example:

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

            Length: 32..32

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

            Example:

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

            Length: 64..64

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

            Example:

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

          Default: false

        • spec.dataSource.http.url string

          Required value

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

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

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

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef object
        Reference to existing VirtualImage or ClusterVirtualImage.
        • spec.dataSource.objectRef.kind string

          Required value

          A kind of existing VirtualImage or ClusterVirtualImage.

          Allowed values: ClusterVirtualImage, VirtualImage

        • spec.dataSource.objectRef.name string

          Required value

          A name of existing VirtualImage or ClusterVirtualImage.
        • spec.dataSource.objectRef.namespace string
          A namespace where VirtualImage 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 cluster image from another existing VirtualImage or ClusterVirtualImage.
        • Upload — fill the image with data, uploaded by user via the special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

VirtualDisk

Scope: Namespaced
Version: v1alpha2

Describes a virtual disk that can be mounted in Virtuals. Once the resource is created, only the disk size .spec.persistentVolumeClaim.size can be changed, all other fields are immutable.

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

  • spec object
    • spec.dataSource object
      An origin of the disk. If empty or absent, empty disk will be created.
      • spec.dataSource.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
          The CA chain in base64 format to verify the url.

          Example:

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

            Length: 32..32

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

            Example:

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

            Length: 64..64

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

            Example:

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

          Default: false

        • spec.dataSource.http.url string

          Required value

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

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

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

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef object
        Reference to existing VirtualImage or ClusterVirtualImage.
        • spec.dataSource.objectRef.kind string

          Required value

          A kind of existing VirtualImage or ClusterVirtualImage.

          Allowed values: ClusterVirtualImage, VirtualImage

        • spec.dataSource.objectRef.name string

          Required value

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

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim object

      Required value

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

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

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

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.insecureSkipVerify boolean
          If a CA chain isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used in production environments.

          Default: false

        • spec.dataSource.http.url string

          Required value

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

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

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

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef object
        Reference to existing VirtualImage or ClusterVirtualImage.
        • spec.dataSource.objectRef.kind string

          Required value

          A kind of existing VirtualImage or ClusterVirtualImage.

          Allowed values: ClusterVirtualImage, VirtualImage

        • spec.dataSource.objectRef.name string

          Required value

          A name of existing VirtualImage or ClusterVirtualImage.
      • 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 VirtualImage or ClusterVirtualImage.
        • 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).

      Default: ContainerRegistry

      Allowed values: ContainerRegistry

VirtualMachine

Scope: Namespaced
Version: v1alpha2

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

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

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

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

            Allowed values: 1 <= X <= 100

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

            Required value

            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions array of objects
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values array of strings
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values.Element of the array string
            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields array of objects
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values array of strings
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values.Element of the array string
      • spec.affinity.virtualMachineAndPodAffinity object
        Describes pod and VM affinity scheduling rules.
        • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution array of objects
          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector object
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions array of objects
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values array of strings
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Element of the array string
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.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. Supported values: 5%, 10%, 25%, 50%, 100%.

        Default: 100%

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

      • spec.cpu.cores integer

        Required value

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

        Allowed values: 1 <= X

      • spec.cpu.virtualMachineCPUModel string
        Name of VirtualMachineCPUModel resource holding the CPU model of the VirtualMachine.

        Default: generic-v1

    • spec.disruptions object

      Disruptions settings for virtual machine.

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

      Default: { "restartApprovalMode": "Manual" }

      • spec.disruptions.restartApprovalMode string

        The approval mode for disruptive updates:

        • Manual — restart virtual machine manually to apply disruptive updates.
        • Automatic — virtual machine will restart automatically to apply disruptive updates.

        Allowed values: Manual, Automatic

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

      Default: true

    • spec.memory object

      Required value

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

        Required value

        Describes the maximum amount of memory resources allowed.

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

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

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

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

      Default: Generic

      Allowed values: Windows, Generic

    • spec.priorityClassName string
      The same as in the pods spec.priorityClassName parameter in Kubernetes;
    • spec.provisioning object
      This block allows you to configure the provisioning script for the VM.
      • spec.provisioning.sysprepRef object
        Reference to an existing Windows sysprep automation.
        • spec.provisioning.sysprepRef.kind string

          Required value

          The kind of an existing Windows sysprep automation.

          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:

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

        • UserDataRef - allows tto automate OS installation with cloud-init userdata.

        • SysprepRef - allows to automate Windows installation, setup, and custom software provisioning.

        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
        Reference to an existing Secret with a cloud-init userdata script.
        • spec.provisioning.userDataRef.kind string

          Required value

          The kind of an existing Windows sysprep automation.

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.userDataRef.name string

          Required value

          Secret name.
    • 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.virtualMachineIPAddressClaim string

      The name for associated VirtualMachineIPAddressClaim resource.

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

VirtualMachineBlockDeviceAttachment

Scope: Namespaced
Version: v1alpha2

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

      Required value

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

        Required value

        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

        Required value

        The name of block device to attach.
    • spec.virtualMachine string

      Required value

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

VirtualMachineCPUModel

Scope: Cluster
Version: v1alpha2

The immutable resource describes a CPU model for use in a VM. A resource cannot be deleted as long as it is used in one of the VMs.
  • spec object
    • spec.features array of strings
      Required instructions for the CPU as a list More information about features here

      Example:

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

      Example:

      model: IvyBridge
      
    • spec.type string

      Required value

      Resource type, the following options are supported:

      • Host - use the host’s physical CPU directly.
      • Model - CPU model. A CPU model is a named and previously defined set of supported processor instructions.
      • Features - the required set of supported instructions for the processor.

      Allowed values: Host, Model, Features

VirtualMachineIPAddressClaim

Scope: Namespaced
Version: v1alpha2

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

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

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

      Default: Delete

      Allowed values: Delete, Retain

    • spec.virtualMachineIPAddressLease string
      The issued VirtualMachineIPAddressLease, managed automatically.

VirtualMachineIPAddressLease

Scope: Cluster
Version: v1alpha2

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

        Required value

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

        Required value

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

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

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

      Default: Delete

      Allowed values: Delete, Retain

VirtualMachineOperation

Scope: Namespaced
Version: v1alpha2

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

      Operation over the virtualmachine:

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

      Allowed values: Start, Stop, Restart

    • spec.virtualMachine string

      Required value

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