Модуль находится в процессе активного развития. Функциональность может существенно измениться.

ClusterVirtualMachineImage

Scope: Cluster
Version: v1alpha2

Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых VirtualMachineDisks или может быть смонтирован в VirtualMachines напрямую. Этот тип ресурса доступен для всех пространств имен в кластере. Этот ресурс не может быть изменен после его создания.

Под капотом этого ресурса создается образ контейнера, который хранится в специальном container registry (DVCR).

  • spec объект
    • spec.dataSource объект

      Обязательный параметр

      Тип источника, из которого будет создан образ.
      • spec.dataSource.clusterVirtualMachineImage объект
        Использовать существующий ClusterVirtualMachineImage.
        • spec.dataSource.clusterVirtualMachineImage.name строка

          Обязательный параметр

          Имя существующего ClusterVirtualMachineImage.
      • spec.dataSource.containerImage объект
        Использование образа, хранящегося во внешнем реестре контейнеров. Поддерживаются только реестры контейнеров с включенным TLS. При необходимости используйте поле caBundle, чтобы предоставить собственную цепочку центров сертификации.
        • spec.dataSource.containerImage.caBundle строка
          Цепочка сертификатов в формате Base64 для проверки подключения к container registry.

          Пример:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.containerImage.image строка

          Обязательный параметр

          Путь к образу в container registry.

          Шаблон: ^(?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,}))?$

          Пример:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret объект
          • spec.dataSource.containerImage.imagePullSecret.name строка
            Имя Secret’а, содержащего учетные данные для подключения к container registry.
          • spec.dataSource.containerImage.imagePullSecret.namespace строка
            Пространство имен, в котором находится imagePullSecret.
      • spec.dataSource.http объект

        Создание образа из файла, опубликованного по URL. Поддерживаемые схемы:

        • HTTP;
        • HTTPS.

        Для схемы HTTPS есть возможность отключить проверку TLS.

        • spec.dataSource.http.caBundle строка
          Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ.

          Пример:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.http.checksum объект
          Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам.
          • spec.dataSource.http.checksum.md5 строка

            Длина: 32..32

            Шаблон: ^[0-9a-fA-F]{32}$

            Пример:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256 строка

            Длина: 64..64

            Шаблон: ^[0-9a-fA-F]{64}$

            Пример:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.insecureSkipVerify булевый
          Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах).

          По умолчанию: false

        • spec.dataSource.http.url строка

          Обязательный параметр

          Для образа расположенного по URL, поддерживаются следующие типы образов:

          • qcow2;
          • vmdk;
          • vdi;
          • iso;
          • raw.

          Для всех представленных типов образов поддерживается сжатие образов в следующих форматах:

          • gz;
          • xz.

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

          Пример:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.type строка

        Обязательный параметр

        Доступные типы источников для создания образа:

        • HTTP — создать образ из файла, опубликованного на HTTP/HTTPS-сервере.
        • ContainerImage — создать образ из образа в container registry.
        • VirtualMachineImage — использовать существующий VirtualMachineImage.
        • ClusterVirtualMachineImage — использовать существующий ClusterVirtualMachineImage.
        • Upload — загрузить образ вручную, через веб-интерфейс.

        Допустимые значения: HTTP, ContainerImage, VirtualMachineImage, ClusterVirtualMachineImage, Upload

      • spec.dataSource.virtualMachineImage объект
        Использование существующего VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.name строка

          Обязательный параметр

          Имя существующего VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.namespace строка

          Обязательный параметр

          Пространство имен, где VirtualMachineImage расположен.

VirtualMachine

Scope: Namespaced
Version: v1alpha2

Данный ресурс позволяет управлять конфигурацией виртуальной машины.
  • spec объект
    • spec.affinity объект

      По аналогии, как и в параметре pods spec.affinity в Kubernetes.

      Настройка Affinity полностью аналогична приведенной выше документации, разница лишь в названиях некоторых параметров. Фактически, используются следующие аналоги:

      • podAffinity -> virtualMachineAndPodAffinity;
      • podAffinityTerm -> virtualMachineAndPodAffinityTerm.
      • spec.affinity.nodeAffinity объект
        Описывает правила планирования affiniy (близости) узлов для ВМ.
        • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution массив объектов
          • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference объект
            • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions массив объектов
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key строка
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator строка
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values массив строк
                • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values.Элемент массива строка
            • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields массив объектов
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key строка
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator строка
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values массив строк
                • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values.Элемент массива строка
          • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight целочисленный

            Допустимые значения: 1 <= X <= 100

        • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution объект
          • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms массив объектов

            Обязательный параметр

            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions массив объектов
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key строка
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator строка
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values массив строк
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values.Элемент массива строка
            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields массив объектов
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key строка
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator строка
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values массив строк
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values.Элемент массива строка
      • spec.affinity.virtualMachineAndPodAffinity объект
        Описывает правила планирования affiniy (близости) пода и ВМ.
        • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution массив объектов
          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm объект
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector объект
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions массив объектов
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key строка
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator строка
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values массив строк
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Элемент массива строка
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels объект
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector объект
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions массив объектов
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key строка
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator строка
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values массив строк
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values.Элемент массива строка
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels объект
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces массив строк
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces.Элемент массива строка
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey строка

              Обязательный параметр

          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight целочисленный

            Допустимые значения: 1 <= X <= 100

        • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution массив объектов
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector объект
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions массив объектов
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key строка
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator строка
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values массив строк
                • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values.Элемент массива строка
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels объект
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector объект
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions массив объектов
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key строка
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator строка
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values массив строк
                • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values.Элемент массива строка
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels объект
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces массив строк
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces.Элемент массива строка
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey строка
      • spec.affinity.virtualMachineAndPodAntiAffinity объект
        Описывает правила планирования anti-affiniy пода и ВМ.
        • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution массив объектов
          • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm объект
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector объект
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions массив объектов
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key строка
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator строка
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values массив строк
                  • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Элемент массива строка
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels объект
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector объект
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions массив объектов
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key строка
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator строка
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values массив строк
                  • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values.Элемент массива строка
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels объект
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces массив строк
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces.Элемент массива строка
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey строка

              Обязательный параметр

          • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight целочисленный

            Допустимые значения: 1 <= X <= 100

        • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution массив объектов
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector объект
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions массив объектов
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key строка
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator строка
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values массив строк
                • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values.Элемент массива строка
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels объект
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector объект
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions массив объектов
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key строка
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator строка
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values массив строк
                • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values.Элемент массива строка
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels объект
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces массив строк
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces.Элемент массива строка
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey строка
    • spec.blockDevices массив объектов

      Обязательный параметр

      Список блочных устройств, которые могут быть смонтированы в ВМ.

      Порядок загрузки определяется порядком в списке.

      • spec.blockDevices.clusterVirtualMachineImage объект
        Использовать ClusterVirtualMachineImage в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM.
        • spec.blockDevices.clusterVirtualMachineImage.name строка

          Обязательный параметр

          Имя ресурса ClusterVirtualMachineImage.
      • spec.blockDevices.type строка

        Поддерживаемые типы:

        • ClusterVirtualMachineImage — использовать ClusterVirtualMachineImage в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM.
        • VirtualMachineImage — использовать VirtualMachineImage в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM.
        • VirtualMachineDisk — используйте VirtualMachineDisk в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite).

        Допустимые значения: ClusterVirtualMachineImage, VirtualMachineImage, VirtualMachineDisk

      • spec.blockDevices.virtualMachineDisk объект
        Подключить VirtualMachineDisk в качестве дискового устройства в режиме RW.
        • spec.blockDevices.virtualMachineDisk.name строка

          Обязательный параметр

          Имя ресурса VirtualMachineDisk.
      • spec.blockDevices.virtualMachineImage объект
        Использовать VirtualMachineImage в качестве диска. Образ с хранилищем ContainerRegistry будет смонтирован в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. Образ с хранилищем Kubernetes будет смонтирован как эфемерный диск, поэтому изменения в томе будут потеряны при перезагрузке.
        • spec.blockDevices.virtualMachineImage.name строка

          Обязательный параметр

          Имя ресурса VirtualMachineImage.
    • spec.bootloader строка

      Определяет загрузчик для VM:

      • BIOS — использовать устаревший BIOS.
      • EFI — использовать Unified Extensible Firmware (EFI/UEFI).
      • EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot.

      По умолчанию: BIOS

      Допустимые значения: BIOS, EFI, EFIWithSecureBoot

    • spec.cpu объект

      Обязательный параметр

      Блок определяет настройки процессора для виртуальной машины.
      • spec.cpu.coreFraction строка
        Гарантированная доля ЦП, которая будет выделена ВМ. Указывается в процентах. Поддерживаемые значения: 5%, 10%, 25%, 50%, 100%.

        По умолчанию: 100%

        Допустимые значения: 5%, 10%, 25%, 50%, 100%

      • spec.cpu.cores целочисленный

        Обязательный параметр

        Количество ядер в виртуальной машине. Значение числа ядер должно быть больше или равно 1.

        Допустимые значения: 1 <= X

    • spec.disruptions объект

      Политика применения изменений, требующих перезагрузки ВМ.

      Некоторые настройки ВМ требуют перезагрузки ВМ при изменении конфигурации. Для перезагрузки необходимо одобрить изменения. Для этого используется параметр approvalMode.

      По умолчанию: { "restartApprovalMode": "Manual" }

      • spec.disruptions.restartApprovalMode строка

        The approval mode for disruptive updates:

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

        Допустимые значения: Manual, Automatic

    • spec.enableParavirtualization булевый
      Использовать шину virtio для подключения дисковых устройств. Установите значение false, чтобы отключить virtio для этой ВМ.

      По умолчанию: true

    • spec.memory объект

      Обязательный параметр

      Блок определяет настройки оперативной памяти для виртуальной машины.
      • spec.memory.size строка

        Обязательный параметр

        Объем оперативной памяти.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • spec.nodeSelector объект
      По аналогии, как и в параметре pods spec.nodeSelector в Kubernetes.
    • spec.osType строка

      Для выбранного типа ОС определяет набор устройств и другие параметры, необходимые для корректной работы, которые будут применяться к ВМ:

      • Windows — для ОС семейства Microsoft Windows.
      • Generic — для других типов ОС.

      По умолчанию: Generic

      Допустимые значения: Windows, Generic

    • spec.priorityClassName строка
      По аналогии, как и в параметре pods spec.priorityClassName в Kubernetes.
    • spec.provisioning объект
      Этот блок позволяет настроить сценарий инициализации для ВМ.
      • spec.provisioning.type строка

        Поддерживаемые параметры для использования сценария инициализации:

        • UserData — позволяет указать сценарий cloud-init в секции .spec.provisioning.UserData.
        • UserDataSecret — позволяет использовать существующий Secret со сценарием cloud-init.

        Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html

        Допустимые значения: UserData, UserDataSecret

      • spec.provisioning.userData строка
        Сценарий cloud-init.
      • spec.provisioning.userDataSecretRef объект
        Ссылка на существующий Secret со сценарием cloud-init.
        • spec.provisioning.userDataSecretRef.name строка

          Обязательный параметр

          Имя Secret со сценарием cloud-init.
    • spec.restartApprovalID строка
      Хэш изменений виртуальной машины из .status.changeID. Требуется для утверждения разрушительных изменений виртуальной машины (например, перезапуск).
    • spec.runPolicy строка

      Этот параметр определяет политику запуска ВМ:

      • AlwaysOn — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС.
      • AlwaysOff — после создания ВМ всегда находится в выключенном состоянии.
      • Manual — после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС.
      • AlwaysOnUnlessStoppedManualy — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС, ВМ может быть выключена с помощью соответствующего API-сервиса.

      По умолчанию: AlwaysOnUnlessStoppedManualy

      Допустимые значения: AlwaysOn, AlwaysOff, Manual, AlwaysOnUnlessStoppedManualy

    • spec.terminationGracePeriodSeconds целочисленный
      Период ожидания после подачи сигнала (SIGTERM) о прекращении работы ВМ, по истечении которого ВМ принудительно завершается.

      По умолчанию: 60

    • spec.tolerations массив объектов
      По аналогии, как и в параметре pods spec.tolerations в Kubernetes.
      • spec.tolerations.effect строка
      • spec.tolerations.key строка
      • spec.tolerations.operator строка
      • spec.tolerations.tolerationSeconds целочисленный
      • spec.tolerations.value строка
    • spec.topologySpreadConstraints массив объектов
      По аналогии, как и в параметре pods spec.topologySpreadConstraints в Kubernetes.
      • spec.topologySpreadConstraints.labelSelector объект
        • spec.topologySpreadConstraints.labelSelector.matchExpressions массив объектов
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.key строка
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.operator строка
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.values массив строк
            • spec.topologySpreadConstraints.labelSelector.matchExpressions.values.Элемент массива строка
        • spec.topologySpreadConstraints.labelSelector.matchLabels объект
      • spec.topologySpreadConstraints.maxSkew целочисленный
      • spec.topologySpreadConstraints.topologyKey строка
      • spec.topologySpreadConstraints.whenUnsatisfiable строка
    • spec.virtualMachineIPAddressClaimName строка

      Имя для связанного ресурса VirtualMahcineIPAddressClaim.

      Если не указано, по умолчанию используется .metadata.name.

VirtualMachineBlockDeviceAttachment

Scope: Namespaced
Version: v1alpha2

Ресурс обеспечивает возможность «горячего» подключения диска к ВМ.
  • spec объект
    • spec.blockDevice объект

      Обязательный параметр

      Блочное устройство, которое будет подключено к ВМ в качестве диска hotPlug.
      • spec.blockDevice.type строка

        Тип блочного устройства. Возможны следующие варианты:

        • VirtualMachineDisk — использовать VirtualMachineDisk в качестве диска. Этот тип всегда монтируется в режиме RW.

        Допустимые значения: VirtualMachineDisk

      • spec.blockDevice.virtualMachineDisk объект
        Использовать VirtualMachineDisk в качестве диска. Этот тип всегда монтируется в режиме RW.
        • spec.blockDevice.virtualMachineDisk.name строка

          Обязательный параметр

          Имя существующего ресурса VirtualMachineDisk
    • spec.virtualMachineName строка

      Обязательный параметр

      Имя виртуальной машины, к которой подключен диск.

VirtualMachineDisk

Scope: Namespaced
Version: v1alpha2

Описывает диск виртуальной машины, который может быть смонтирован в VirtualMachines. После создания только поле .spec.persistentVolumeClaim.size доступно для изменения в сторону увеличения, все остальные поля неизменяемы.

Под капотом ресурса создается PVC, в который заливаются данные из источника.

  • spec объект
    • spec.dataSource объект
      Тип источника, из которого будет создан диск. Если источник (.spec.dataSource) отсутствует, то будет создан пустой диск.
      • spec.dataSource.clusterVirtualMachineImage объект
        Использовать существующий ClusterVirtualMachineImage.
        • spec.dataSource.clusterVirtualMachineImage.name строка

          Обязательный параметр

          Имя существующего ClusterVirtualMachineImage.
      • spec.dataSource.containerImage объект
        Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов.
        • spec.dataSource.containerImage.caBundle строка
          Цепочка сертификатов в формате Base64 для проверки подключения к container registry.

          Пример:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.containerImage.image строка

          Обязательный параметр

          Путь к образу в container registry.

          Шаблон: ^(?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,}))?$

          Пример:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret объект
          • spec.dataSource.containerImage.imagePullSecret.name строка
            Имя Secret’а, содержащего учетные данные для подключения к container registry.
      • spec.dataSource.http объект

        Создать диск из файла, опубликованного по URL. Поддерживаемые схемы:

        • HTTP;
        • HTTPS.

        Для схемы HTTPS есть возможность пропустить проверку TLS.

        • spec.dataSource.http.caBundle строка
          Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ.

          Пример:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.http.checksum объект
          Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам.
          • spec.dataSource.http.checksum.md5 строка

            Длина: 32..32

            Шаблон: ^[0-9a-fA-F]{32}$

            Пример:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256 строка

            Длина: 64..64

            Шаблон: ^[0-9a-fA-F]{64}$

            Пример:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.insecureSkipVerify булевый
          Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах).

          По умолчанию: false

        • spec.dataSource.http.url строка

          Обязательный параметр

          URL с образом. Поддерживаются следующие типы образов:

          • qcow2;
          • vmdk;
          • vdi;
          • iso;
          • raw.

          Для всех представленных типов образов поддерживается сжатие образов в следующих форматах:

          • gz;
          • xz.

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

          Пример:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.type строка

        Обязательный параметр

        Тип источника, из которого будет создан диск:

        • HTTP — создать диск из файла, опубликованного на HTTP/HTTPS-сервере.
        • ContainerImage — создать диск из образа в container registry.
        • VirtualMachineImage — создать диск из существующего VirtualMachineImage.
        • ClusterVirtualMachineImage — создать диск из существующего ClusterVirtualMachineImage.
        • Upload — загрузить образ диска вручную, через веб-интерфейс.

        Допустимые значения: HTTP, ContainerImage, VirtualMachineImage, ClusterVirtualMachineImage, Upload

      • spec.dataSource.virtualMachineImage объект
        Используйте существующий VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.name строка

          Обязательный параметр

          Имя существующего VirtualMachineImage.
    • spec.persistentVolumeClaim объект

      Обязательный параметр

      Настройки для создания PVC для хранения диска.
      • spec.persistentVolumeClaim.size строка
        Желаемый размер PVC для хранения диска. Если диск создается из образа, то размер должен быть не меньше, чем исходный образ в распакованном состоянии.

        Шаблон: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$

      • spec.persistentVolumeClaim.storageClassName строка
        Имя класса StorageClass, требуемого для PersistentVolumeClaim. Дополнительная информация — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

VirtualMachineImage

Scope: Namespaced
Version: v1alpha2

Данный ресурс описывает образ диска виртуальной машины, который может быть использован в качестве источника данных для новых VirtualMachineDisks или может быть смонтирован в VirtualMachines. Этот ресурс не может быть изменен после его создания.

Под капотом этого ресурса создается образ контейнера, который хранится в специальном container registry (DVCR) или PVC, в который заливаются данные из источника.

  • spec объект
    • spec.dataSource объект

      Обязательный параметр

      Тип источника, из которого будет создан диск. Если источник (.spec.dataSource) отсутствует, будет создан пустой диск.
      • spec.dataSource.clusterVirtualMachineImage объект
        Использовать существующий ClusterVirtualMachineImage.
        • spec.dataSource.clusterVirtualMachineImage.name строка

          Обязательный параметр

          Имя существующего ClusterVirtualMachineImage.
      • spec.dataSource.containerImage объект
        Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов.
        • spec.dataSource.containerImage.caBundle строка
          Цепочка сертификатов в формате Base64 для проверки подключения к container registry.

          Пример:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.containerImage.image строка

          Обязательный параметр

          Путь к образу в container registry.

          Шаблон: ^(?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,}))?$

          Пример:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret объект
          • spec.dataSource.containerImage.imagePullSecret.name строка
            Имя Secret’а, содержащего учетные данные для подключения к container registry.
      • spec.dataSource.http объект

        Создать диск из файла, опубликованного по URL. Поддерживаемые схемы:

        • HTTP;
        • HTTPS.

        Для схемы HTTPS есть возможность пропустить проверку TLS.

        • spec.dataSource.http.caBundle строка
          Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ.

          Пример:

          caBundle: |
            YWFhCg==  
          
        • spec.dataSource.http.checksum объект
          Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам.
          • spec.dataSource.http.checksum.md5 строка

            Длина: 32..32

            Шаблон: ^[0-9a-fA-F]{32}$

            Пример:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256 строка

            Длина: 64..64

            Шаблон: ^[0-9a-fA-F]{64}$

            Пример:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.insecureSkipVerify булевый
          Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах).

          По умолчанию: false

        • spec.dataSource.http.url строка

          Обязательный параметр

          URL с образом. Поддерживаются следующие типы образов:

          • qcow2;
          • vmdk;
          • vdi;
          • iso;
          • raw.

          Для всех представленных типов образов поддерживается сжатие образов в следующих форматах:

          • gz;
          • xz.

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

          Пример:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.type строка

        Обязательный параметр

        Тип источника, из которого будет создан диск:

        • HTTP — создать диск из файла, опубликованного на HTTP/HTTPS-сервере.
        • ContainerImage — создать диск из образа в container registry.
        • VirtualMachineImage — создать диск из существующего VirtualMachineImage.
        • ClusterVirtualMachineImage — создать диск из существующего ClusterVirtualMachineImage.
        • Upload — загрузить образ диска вручную, через веб-интерфейс.

        Допустимые значения: HTTP, ContainerImage, VirtualMachineImage, ClusterVirtualMachineImage, Upload

      • spec.dataSource.virtualMachineImage объект
        Используйте существующий VirtualMachineImage.
        • spec.dataSource.virtualMachineImage.name строка

          Обязательный параметр

          Имя существующего VirtualMachineImage.
    • spec.storage строка

      Обязательный параметр

      Тип хранилища для хранения образа:

      • Kubernetes — использовать PersistentVolumeClaim в текущем кластере K8s. В этом случае образ будет загружен и скопирован на PV как есть.

      • ContainerRegistry — использовать container registry (DVCR). В этом случае образы будут загружаться в контейнер, а затем в DVCR (поставляется с модулем виртуализации).

      Допустимые значения: ContainerRegistry

VirtualMachineIPAddressClaim

Scope: Namespaced
Version: v1alpha2

Ресурс, определяющий IP-адрес для виртуальной машины.
  • apiVersion строка
  • kind строка
  • metadata объект
  • spec объект
    Настройки VirtualMachineIPAddressClaim.
    • spec.address строка
      Запрашиваемый IP-адрес. Если это значение не задано, будет назначен следующий доступный IP-адрес.
    • spec.leaseName строка
      Выданный VirtualMachineIPAddressLease, управляется автоматически.
    • spec.reclaimPolicy строка

      Политика Reclaim, определяющая поведение VirtualMachineIPAddressLease при удалении VirtualMachineIPAddressClaim.

      • Delete означает, что VirtualMachineIPAddressLease автоматически удаляется, когда пользователь удаляет соответствующий VirtualMachineIPAddressClaim.

      • Retain — если пользователь удаляет VirtualMachineIPAddressClaim, соответствующий VirtualMachineIPAddressLease не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную.

      По умолчанию: Delete

      Допустимые значения: Delete, Retain

VirtualMachineIPAddressLease

Scope: Cluster
Version: v1alpha2

Ресурс, определяющий факт выданной аренды для VirtualMachineIPAddressClaim.
  • apiVersion строка
  • kind строка
  • metadata объект
  • spec объект
    Параметры конфигурации VirtualMachineIPAddressLease.
    • spec.claimRef объект
      Ссылка на существующие VirtualMachineIPAddressClaim.
      • spec.claimRef.name строка

        Обязательный параметр

        Имя ссылающегося VirtualMachineIPAddressClaim.
      • spec.claimRef.namespace строка

        Обязательный параметр

        Пространство имен ссылающегося VirtualMachineIPAddressClaim.
    • spec.reclaimPolicy строка

      Политика Reclaim, определяющая поведение VirtualMachineIPAddressLease при удалении VirtualMachineIPAddressClaim.

      • Delete означает, что VirtualMachineIPAddressLease автоматически удаляется, когда пользователь удаляет соответствующий VirtualMachineIPAddressClaim.

      • Retain — если пользователь удаляет VirtualMachineIPAddressClaim, соответствующий VirtualMachineIPAddressLease не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную.

      По умолчанию: Delete

      Допустимые значения: Delete, Retain

VirtualMachineOperation

Scope: Namespaced
Version: v1alpha2

Этот ресурс предоставляет возможность декларативно управлять изменением состояний виртуальных машины.
  • spec объект
    • spec.force булевый
      Форсирует выполнение операции. Применяется только для операций Restart и Stop. В этом случае действие над виртуальной машиной выполняется немедленно.
    • spec.type строка

      Операции над виртуальной машиной:

      • Start - запустить виртуальную машину.
      • Stop - остановить виртуальную машину.
      • Restart - перезапустить виртуальную машину.

      Допустимые значения: Start, Stop, Restart

    • spec.virtualMachineName строка

      Обязательный параметр

      Имя виртуальной машины, для которой выполняется операция.