From fdc4cd0804a741e93a6c4bf4bfb5281c2731f323 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Thu, 16 May 2024 09:43:30 +0300 Subject: [PATCH 01/13] refactor(crd): fix crd params and add name suffixes Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- crds/clustervirtualimage.yaml | 9 +- crds/doc-ru-clustervirtualimage.yaml | 25 +-- crds/doc-ru-virtualdisk.yaml | 23 +- crds/doc-ru-virtualimage.yaml | 30 +-- crds/doc-ru-virtualmachine.yaml | 211 ++++++++++-------- ...u-virtualmachineblockdeviceattachment.yaml | 5 +- crds/doc-ru-virtualmachinecpumodel.yaml | 50 +++++ crds/doc-ru-virtualmachineipaddressclaim.yaml | 6 +- crds/doc-ru-virtualmachineoperation.yaml | 2 +- crds/virtualdisk.yaml | 19 +- crds/virtualimage.yaml | 7 +- crds/virtualmachine.yaml | 32 ++- crds/virtualmachineblockdeviceattachment.yaml | 10 +- crds/virtualmachineipaddressclaim.yaml | 8 +- crds/virtualmachineoperation.yaml | 10 +- 15 files changed, 261 insertions(+), 186 deletions(-) create mode 100644 crds/doc-ru-virtualmachinecpumodel.yaml diff --git a/crds/clustervirtualimage.yaml b/crds/clustervirtualimage.yaml index 028601ae7..9db238ae2 100644 --- a/crds/clustervirtualimage.yaml +++ b/crds/clustervirtualimage.yaml @@ -41,6 +41,8 @@ spec: properties: dataSource: type: object + description: | + An origin of the image. required: - type properties: @@ -151,7 +153,8 @@ spec: YWFhCg== objectRef: type: object - description: Reference to existing `VirtualImage` or `ClusterVirtualImage`. + description: | + Use an existing `VirtualImage` or `ClusterVirtualImage` to create an image. required: ["kind", "name"] properties: kind: @@ -293,10 +296,10 @@ spec: type: string description: | Detailed description of the error. human-readable - usedInVMs: + attachedToVirtualMachines: type: array description: | - A list of virtual s and namespaces that use the image + A list of virtual machines and namespaces that use the image example: [ { name: "VM100", namespace: "customer1" }, diff --git a/crds/doc-ru-clustervirtualimage.yaml b/crds/doc-ru-clustervirtualimage.yaml index fae1c7882..70bc6fda4 100644 --- a/crds/doc-ru-clustervirtualimage.yaml +++ b/crds/doc-ru-clustervirtualimage.yaml @@ -58,10 +58,8 @@ spec: properties: md5: description: "" - example: f3b59bed9f91e32fac1210184fcff6f5 sha256: description: "" - example: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5 containerImage: description: | Использование образа, хранящегося во внешнем реестре контейнеров. @@ -82,23 +80,19 @@ spec: caBundle: description: | Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - virtualImage: + objectRef: description: | - Использование существующего `VirtualImage`. + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. name: description: | - Имя существующего `VirtualImage`. + Имя существующего `VirtualImage` или `ClusterVirtualImage`. namespace: description: | - Пространство имен, где `VirtualImage` расположен. - clusterVirtualImage: - description: | - Использовать существующий `ClusterVirtualImage`. - properties: - name: - description: | - Имя существующего `ClusterVirtualImage`. + Имя namespace'а, гда ресположен `VirtualImage`. status: properties: downloadSpeed: @@ -164,9 +158,8 @@ spec: description: | Краткое описание причины ошибки. failureMessage: - type: string description: | Подробное описание ошибки. - usedInVMs: + attachedToVirtualMachines: description: | - Список виртуальных машин и из пространств имен, использующих этот образ + Список виртуальных машин, использующих этот образ diff --git a/crds/doc-ru-virtualdisk.yaml b/crds/doc-ru-virtualdisk.yaml index 27aa9e700..8f5fb7336 100644 --- a/crds/doc-ru-virtualdisk.yaml +++ b/crds/doc-ru-virtualdisk.yaml @@ -17,7 +17,7 @@ spec: size: description: | Желаемый размер PVC для хранения диска. Если диск создается из образа, то размер должен быть не меньше, чем исходный образ в распакованном состоянии. - storageClass: + storageClassName: description: | Имя класса StorageClass, требуемого для PersistentVolumeClaim. Дополнительная информация — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. dataSource: @@ -84,20 +84,17 @@ spec: caBundle: description: | Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - virtualImage: + objectRef: description: | - Используйте существующий `VirtualImage`. + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. properties: - name: + kind: description: | - Имя существующего `VirtualImage`. - clusterVirtualImage: - description: | - Использовать существующий `ClusterVirtualImage`. - properties: + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. name: description: | - Имя существующего `ClusterVirtualImage`. + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + status: properties: downloadSpeed: @@ -125,7 +122,6 @@ spec: description: | Имя созданного PersistentVolumeClaim для хранилища Kubernetes. phase: - type: string description: | Текущее состояние ресурса `VirtualDisk`: @@ -145,9 +141,8 @@ spec: description: | Краткое описание причины ошибки. failureMessage: - type: string description: | Подробное описание ошибки. - usedInVMs: + attachedToVirtualMachines: description: | - Список виртуальных машин и их пространств имен, использующих этот образ + Список виртуальных машин, использующих этот диск diff --git a/crds/doc-ru-virtualimage.yaml b/crds/doc-ru-virtualimage.yaml index ad73ccb38..bdfa9a3d4 100644 --- a/crds/doc-ru-virtualimage.yaml +++ b/crds/doc-ru-virtualimage.yaml @@ -3,7 +3,6 @@ spec: - name: v1alpha2 schema: openAPIV3Schema: - type: object description: | Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. @@ -59,7 +58,6 @@ spec: description: | Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). checksum: - type: object description: | Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. properties: @@ -79,29 +77,19 @@ spec: name: description: | Имя Secret'а, содержащего учетные данные для подключения к container registry. - namespace: - description: | - Пространство имен, в котором находится imagePullSecret. caBundle: description: | Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - virtualImage: + objectRef: description: | - Используйте существующий `VirtualImage`. + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. properties: - name: - description: | - Имя существующего `VirtualImage`. - namespace: + kind: description: | - Пространство имен, где `VirtualImage` расположен. - clusterVirtualImage: - description: | - Использовать существующий `ClusterVirtualImage`. - properties: + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. name: description: | - Имя существующего `ClusterVirtualImage`. + Имя существующего `VirtualImage` или `ClusterVirtualImage`. status: type: object properties: @@ -147,9 +135,6 @@ spec: registryURL: description: | Образ, созданный в DVCR. - persistentVolumeClaim: - description: | - Имя созданного PersistentVolumeClaim для хранилища Kubernetes. phase: description: | Текущее состояние ресурса `VirtualImage`: @@ -172,9 +157,8 @@ spec: description: | Краткое описание причины ошибки. failureMessage: - type: string description: | Подробное описание ошибки. - usedInVMs: + attachedToVirtualMachines: description: | - Список виртуальных машин и их пространств имен, использующих этот образ + Список виртуальных машин, использующих этот образ diff --git a/crds/doc-ru-virtualmachine.yaml b/crds/doc-ru-virtualmachine.yaml index 6d10bc0b7..001809dba 100644 --- a/crds/doc-ru-virtualmachine.yaml +++ b/crds/doc-ru-virtualmachine.yaml @@ -53,9 +53,9 @@ spec: * `Manual` — после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС. * `AlwaysOnUnlessStoppedManually` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС, ВМ может быть выключена с помощью соответствующего API-сервиса. - virtualMachineIPAddressClaim: + virtualMachineIPAddressClaimName: description: | - Имя для связанного ресурса `VirtualMahcineIPAddressClaim`. + Имя для связанного ресурса `virtualMachineIPAddressClaimName`. Если не указано, по умолчанию используется `.metadata.name`. @@ -77,10 +77,12 @@ spec: operator: description: "" values: + description: "" items: description: "" - description: "" matchLabels: + additionalProperties: + description: "" description: "" maxSkew: description: "" @@ -98,288 +100,330 @@ spec: * podAffinityTerm -> virtualMachineAndPodAffinityTerm. properties: nodeAffinity: + description: Описывает правила affiniy узлов для ВМ. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: "" items: + description: "" properties: preference: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchFields: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" - description: "" weight: description: "" - description: "" - description: "" requiredDuringSchedulingIgnoredDuringExecution: + description: "" properties: nodeSelectorTerms: + description: "" items: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchFields: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" - description: "" - description: "" - description: "" - description: Описывает правила планирования affiniy (близости) узлов для ВМ. virtualMachineAndPodAffinity: - description: Описывает правила планирования affiniy (близости) пода и ВМ. + description: Описывает правила affiniy подов и ВМ. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: "" items: + description: "" properties: virtualMachineAndPodAffinityTerm: + description: "" properties: labelSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: additionalProperties: description: "" description: "" + matchLabelKeys: + description: "" + items: + description: "" + mismatchLabelKeys: description: "" + items: + description: "" namespaceSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: + additionalProperties: + description: "" description: "" - description: "" namespaces: + description: "" items: description: "" - description: "" topologyKey: description: "" - description: "" weight: description: "" - description: "" - description: "" requiredDuringSchedulingIgnoredDuringExecution: + description: "" items: + description: "" properties: labelSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: + additionalProperties: + description: "" description: "" + matchLabelKeys: description: "" + items: + description: "" + mismatchLabelKeys: + description: "" + items: + description: "" namespaceSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: additionalProperties: description: "" description: "" - description: "" namespaces: + description: "" items: description: "" - description: "" topologyKey: description: "" - description: "" - description: "" virtualMachineAndPodAntiAffinity: - description: Описывает правила планирования anti-affiniy пода и ВМ. + description: Описывает правила anti-affiniy пода и ВМ. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: "" items: + description: "" properties: virtualMachineAndPodAffinityTerm: + description: "" properties: labelSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: + additionalProperties: + description: "" description: "" + matchLabelKeys: description: "" + items: + description: "" + mismatchLabelKeys: + description: "" + items: + description: "" namespaceSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: + additionalProperties: + description: "" description: "" - description: "" namespaces: + description: "" items: description: "" - description: "" topologyKey: description: "" - description: "" weight: description: "" - description: "" - description: "" requiredDuringSchedulingIgnoredDuringExecution: + description: "" items: + description: "" properties: labelSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: + additionalProperties: + description: "" description: "" + matchLabelKeys: + description: "" + items: + description: "" + mismatchLabelKeys: description: "" + items: + description: "" namespaceSelector: + description: "" properties: matchExpressions: + description: "" items: + description: "" properties: key: description: "" operator: description: "" values: + description: "" items: description: "" - description: "" - description: "" - description: "" matchLabels: additionalProperties: description: "" description: "" - description: "" namespaces: + description: "" items: description: "" - description: "" topologyKey: description: "" - description: "" - description: "" nodeSelector: description: | @@ -414,7 +458,7 @@ spec: Некоторые настройки ВМ требуют перезагрузки ВМ при изменении конфигурации. Для перезагрузки необходимо одобрить изменения. Для этого используется параметр `approvalMode`. properties: - approvalMode: + restartApprovalMode: description: | Режим одобрения для изменений, требующих перезагрузки ВМ: @@ -448,6 +492,9 @@ spec: description: | Блок определяет настройки процессора для виртуальной машины. properties: + virtualMachineCPUModelName: + description: | + Имя ресурса `virtualMachineCPUModelName`, определяющего модель процессора для виртуальной машины. cores: description: | Количество ядер в виртуальной машине. Значение числа ядер должно быть больше или равно 1. @@ -480,22 +527,15 @@ spec: * `VirtualDisk` — используйте `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite). name: description: | - Имя ресурса. - restartApprovalID: - description: | - Хэш изменений виртуальной машины из .status.changeID. - Требуется для утверждения разрушительных изменений виртуальной машины (например, перезапуск). + Имя ресурса заданного типа. status: - type: object properties: guestOSInfo: - type: object description: | Информация об гостевой ОС, полученная от агента (QEMU Guest Agent). Агент должен быть предварительно установлен. Больше информации об агенте можно прочитать тут: https://www.qemu.org/docs/master/interop/qemu-ga.html. phase: - type: string description: | Текущая фаза виртуальной машины: @@ -505,19 +545,12 @@ spec: * `Failed` — произошла ошибка в процессе запуска или работы ВМ. * `Terminating` — в настоящий момент ВМ завершает свою работу. * `Stopped` — ВМ остановлена. - enum: - - "Scheduling" - - "Pending" - - "Running" - - "Failed" - - "Terminating" - - "Stopped" nodeName: description: | Имя узла, на котором в данный момент запущена ВМ. - ipAddressClaim: + virtualMachineIPAddressClaimName: description: | - Имя `VirtualMachineIPAddressClaim`, содержащее IP-адрес виртуальной машины. + Имя `virtualMachineIPAddressClaimName`, содержащее IP-адрес виртуальной машины. ipAddress: description: | IP-адрес ВМ. @@ -532,9 +565,9 @@ spec: kind: description: | Тип блочного устройства. - name: - description: | - Имя существующего ресурса. + name: + description: | + Имя существующего ресурса. target: description: | Название подключенного блочного устройства. @@ -561,6 +594,6 @@ spec: message: description: | Детальное описание состояния ВМ. - changeID: + restartAwaitingChanges: description: | - Хэш изменений виртуальной машины. Используйте spec.restartApprovalID для утверждения разрушительных изменений, например перезапуска. + Список изменений в конфигурации, требующий перезапуска ВМ. diff --git a/crds/doc-ru-virtualmachineblockdeviceattachment.yaml b/crds/doc-ru-virtualmachineblockdeviceattachment.yaml index 7d62f03f2..83c055612 100644 --- a/crds/doc-ru-virtualmachineblockdeviceattachment.yaml +++ b/crds/doc-ru-virtualmachineblockdeviceattachment.yaml @@ -8,7 +8,7 @@ spec: properties: spec: properties: - virtualMachine: + virtualMachineName: description: | Имя виртуальной машины, к которой подключен диск. blockDeviceRef: @@ -25,7 +25,7 @@ spec: Имя блочного устройства status: properties: - virtualMachine: + virtualMachineName: description: | Имя виртуальной машины, к которой подключен этот диск. phase: @@ -39,6 +39,5 @@ spec: description: | Краткое описание причины ошибки. failureMessage: - type: string description: | Подробное описание ошибки. diff --git a/crds/doc-ru-virtualmachinecpumodel.yaml b/crds/doc-ru-virtualmachinecpumodel.yaml new file mode 100644 index 000000000..2e1ba5f3c --- /dev/null +++ b/crds/doc-ru-virtualmachinecpumodel.yaml @@ -0,0 +1,50 @@ +spec: + versions: + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. + properties: + spec: + properties: + features: + description: | + Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + items: {} + model: + description: | + Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + type: + description: | + В качестве типа ресурса, поддерживаются следующие варианты: + * Host - использовать физический процессор хоста. + * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. + * Features - необходимый набор поддерживаемых инструкций для процессора. + status: + properties: + features: + description: | + Информация о поддерживаемых наборах инструкций процессора для данной модели. + Отображается только для `type=Features`. + properties: + enabled: + description: | + Список наборов инструкций процессора для данной модели. + items: {} + notEnabledCommon: + description: | + Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. + items: {} + nodes: + description: | + Список узлов, поддерживающих данную модель процессора. + Не отображается для `type=Host`. + items: {} + phase: + description: | + Текущий статус ресурса `VirtualMachineCPUModel`: + * Pending - ресурс находится в очереди на обработку. + * InProgress - ресурс находится в процессе создания. + * Ready - ресурс успешно создан. + * Failed - в процессе создания ресурса произошла ошибка. diff --git a/crds/doc-ru-virtualmachineipaddressclaim.yaml b/crds/doc-ru-virtualmachineipaddressclaim.yaml index 5463e8d58..9a5c7ec83 100644 --- a/crds/doc-ru-virtualmachineipaddressclaim.yaml +++ b/crds/doc-ru-virtualmachineipaddressclaim.yaml @@ -13,9 +13,9 @@ spec: address: description: | Запрашиваемый IP-адрес. Если это значение не задано, будет назначен следующий доступный IP-адрес. - virtualMachineIPAddressLease: + virtualMachineIPAddressLeaseName: description: | - Выданный `VirtualMachineIPAddressLease`, управляется автоматически. + Имя выданного `VirtualMachineIPAddressLease`, управляется автоматически. reclaimPolicy: description: | Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. @@ -30,7 +30,7 @@ spec: address: description: | Назначенный IP-адрес. - virtualMachine: + virtualMachineName: description: | Имя виртуальной машины, которая в настоящее время использует этот IP-адрес. phase: diff --git a/crds/doc-ru-virtualmachineoperation.yaml b/crds/doc-ru-virtualmachineoperation.yaml index 05dbfdd1e..2cf2e8c4b 100644 --- a/crds/doc-ru-virtualmachineoperation.yaml +++ b/crds/doc-ru-virtualmachineoperation.yaml @@ -15,7 +15,7 @@ spec: * Start - запустить виртуальную машину. * Stop - остановить виртуальную машину. * Restart - перезапустить виртуальную машину. - virtualMachine: + virtualMachineName: description: | Имя виртуальной машины, для которой выполняется операция. force: diff --git a/crds/virtualdisk.yaml b/crds/virtualdisk.yaml index 973636007..27ce60f70 100644 --- a/crds/virtualdisk.yaml +++ b/crds/virtualdisk.yaml @@ -27,7 +27,7 @@ spec: openAPIV3Schema: type: object description: | - 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. + Describes a virtual disk that can be mounted in `VirtualMachines`. 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. required: @@ -48,7 +48,7 @@ spec: description: | 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]*)$" - storageClass: + storageClassName: type: string description: | The name of the StorageClass required by the claim. More info — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 @@ -162,7 +162,8 @@ spec: YWFhCg== objectRef: type: object - description: Reference to existing `VirtualImage` or `ClusterVirtualImage`. + description: | + Use an existing `VirtualImage` or `ClusterVirtualImage` to create an image. required: ["kind", "name"] properties: kind: @@ -267,10 +268,10 @@ spec: type: string description: | Detailed description of the error. - usedInVMs: + attachedToVirtualMachines: type: array description: | - A list of virtual that use the disk + A list of `VirtualMachines` that use the disk example: [{ name: "VM100" }, { name: "VM200" }] items: type: object @@ -288,8 +289,12 @@ spec: type: string jsonPath: .status.progress priority: 1 - - name: Target PVC - jsonPath: .status.target.persistentVolumeClaim + - name: StorageClass + jsonPath: .spec.persistentVolumeClaim.storageClassName + type: string + priority: 1 + - name: TargetPVC + jsonPath: .status.target.persistentVolumeClaimName type: string priority: 1 - name: Age diff --git a/crds/virtualimage.yaml b/crds/virtualimage.yaml index be7d57233..e27678da7 100644 --- a/crds/virtualimage.yaml +++ b/crds/virtualimage.yaml @@ -158,7 +158,8 @@ spec: YWFhCg== objectRef: type: object - description: Reference to existing `VirtualImage` or `ClusterVirtualImage`. + description: | + Use an existing `VirtualImage` or `ClusterVirtualImage` to create an image. required: ["kind", "name"] properties: kind: @@ -302,10 +303,10 @@ spec: type: string description: | Detailed description of the error. - usedInVMs: + attachedToVirtualMachines: type: array description: | - A list of virtual that use the image + A list of `VirtualMachines` that use the disk example: [{ name: "VM100" }, { name: "VM200" }] items: type: object diff --git a/crds/virtualmachine.yaml b/crds/virtualmachine.yaml index 35dfca7c8..1bf549763 100644 --- a/crds/virtualmachine.yaml +++ b/crds/virtualmachine.yaml @@ -139,13 +139,13 @@ spec: * `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. - virtualMachineIPAddressClaim: + virtualMachineIPAddressClaimName: type: string description: | - The name for associated `VirtualMachineIPAddressClaim` resource. + The name for associated `virtualMachineIPAddressClaimName` 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. + If specified, virtualMachineIPAddressClaimName should exists on VirtualMachine creation. + If not specified, a VirtualMachine name will be used to create an implicit virtualMachineIPAddressClaimName. This claim will be deleted on VirtualMachine deletion. topologySpreadConstraints: description: | @@ -848,11 +848,11 @@ spec: required: - cores properties: - virtualMachineCPUModel: + virtualMachineCPUModelName: type: string default: "generic-v1" description: | - Name of `VirtualMachineCPUModel` resource holding the CPU model of the VirtualMachine. + Name of `virtualMachineCPUModelName` resource holding the CPU model of the VirtualMachine. cores: format: int32 type: integer @@ -937,14 +937,14 @@ spec: - "Starting" - "Migrating" - "Pause" - node: + nodeName: type: string description: | The name of the node on which the VM is currently running. - virtualMachineIPAddressClaim: + virtualMachineIPAddressClaimName: type: string description: | - Name of `VirtualMachineIPAddressClaim` holding the ip address of the VirtualMachine. + Name of `virtualMachineIPAddressClaimName` holding the ip address of the VirtualMachine. ipAddress: type: string description: | @@ -1027,9 +1027,21 @@ spec: - name: Phase type: string jsonPath: .status.phase + - name: Cores + type: string + jsonPath: .spec.cpu.cores + priority: 1 + - name: CoreFraction + type: string + jsonPath: .spec.cpu.coreFraction + priority: 1 + - name: Memory + type: string + jsonPath: .spec.memory.size + priority: 1 - name: Node type: string - jsonPath: .status.node + jsonPath: .status.nodeName - name: IPAddress type: string jsonPath: .status.ipAddress diff --git a/crds/virtualmachineblockdeviceattachment.yaml b/crds/virtualmachineblockdeviceattachment.yaml index f1ded4d6b..a14bc6138 100644 --- a/crds/virtualmachineblockdeviceattachment.yaml +++ b/crds/virtualmachineblockdeviceattachment.yaml @@ -35,10 +35,10 @@ spec: spec: type: object required: - - virtualMachine + - virtualMachineName - blockDeviceRef properties: - virtualMachine: + virtualMachineName: type: string description: | The name of the virtual machine to which the disk or image is connected. @@ -63,7 +63,7 @@ spec: status: type: object properties: - virtualMachine: + virtualMachineName: type: string description: | The name of the virtual machine to which this disk is attached. @@ -91,9 +91,9 @@ spec: - name: Phase type: string jsonPath: .status.phase - - name: VirtualMachine + - name: virtualMachineName type: string - jsonPath: .status.virtualMachine + jsonPath: .status.virtualMachineName priority: 1 - name: FailureReason type: string diff --git a/crds/virtualmachineipaddressclaim.yaml b/crds/virtualmachineipaddressclaim.yaml index 39e0b3adf..9803a7da8 100644 --- a/crds/virtualmachineipaddressclaim.yaml +++ b/crds/virtualmachineipaddressclaim.yaml @@ -39,9 +39,9 @@ spec: description: | The requested IP address. If omitted the next available IP address will be assigned. type: string - virtualMachineIPAddressLease: + virtualMachineIPAddressLeaseName: description: | - The issued `VirtualMachineIPAddressLease`, managed automatically. + The name of issued `VirtualMachineIPAddressLease`, managed automatically. type: string reclaimPolicy: type: string @@ -61,7 +61,7 @@ spec: description: | The assigned IP address. type: string - virtualMachine: + virtualMachineName: description: | Represents the virtual machine that currently uses this IP address. type: string @@ -96,7 +96,7 @@ spec: - jsonPath: .status.phase name: Status type: string - - jsonPath: .status.virtualMachine + - jsonPath: .status.virtualMachineName name: VM type: string - jsonPath: .metadata.creationTimestamp diff --git a/crds/virtualmachineoperation.yaml b/crds/virtualmachineoperation.yaml index 8fdd87c47..14aa46d86 100644 --- a/crds/virtualmachineoperation.yaml +++ b/crds/virtualmachineoperation.yaml @@ -32,7 +32,7 @@ spec: spec: type: object required: - - virtualMachine + - virtualMachineName properties: type: type: string @@ -42,7 +42,7 @@ spec: * Start - start the virtualmachine. * Stop - stop the virtualmachine. * Restart - restart the virtualmachine. - virtualMachine: + virtualMachineName: type: string description: | The name of the virtual machine for which the operation is performed. @@ -54,7 +54,7 @@ spec: - properties: type: enum: ["Start"] - required: ["virtualMachine"] + required: ["virtualMachineName"] not: anyOf: - required: @@ -62,7 +62,7 @@ spec: - properties: type: enum: ["Restart", "Stop"] - required: ["virtualMachine"] + required: ["virtualMachineName"] status: type: object properties: @@ -93,7 +93,7 @@ spec: type: string jsonPath: .status.phase - name: VM - jsonPath: .spec.virtualMachine + jsonPath: .spec.virtualMachineName type: string - name: Age type: date From a7944b1663d3244743e55cfa3fcb76932785fe54 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Thu, 16 May 2024 09:43:36 +0300 Subject: [PATCH 02/13] refactor(crd): update docs Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- docs/EXAMPLES.md | 4 ++-- docs/EXAMPLES_RU.md | 13 ++++++------- docs/FAQ.md | 8 ++++---- docs/FAQ_RU.md | 8 ++++---- docs/README.md | 10 ++++++++-- docs/README_RU.md | 10 ++++++++-- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/docs/EXAMPLES.md b/docs/EXAMPLES.md index 7ef97700f..8823f996c 100644 --- a/docs/EXAMPLES.md +++ b/docs/EXAMPLES.md @@ -279,7 +279,7 @@ metadata: name: vmd-blank spec: persistentVolumeClaim: - storageClass: "your-storage-class-name" + storageClassName: "your-storage-class-name" size: 100M ``` @@ -310,7 +310,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: "your-storage-class-name" + storageClassName: "your-storage-class-name" dataSource: type: ObjectRef objectRef: diff --git a/docs/EXAMPLES_RU.md b/docs/EXAMPLES_RU.md index 342f32941..11f88bbdd 100644 --- a/docs/EXAMPLES_RU.md +++ b/docs/EXAMPLES_RU.md @@ -286,7 +286,7 @@ metadata: name: vmd-blank spec: persistentVolumeClaim: - storageClass: "your-storage-class-name" + storageClassName: "your-storage-class-name" size: 100M ``` @@ -317,7 +317,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: "your-storage-class-name" + storageClassName: "your-storage-class-name" dataSource: type: ObjectRef objectRef: @@ -343,11 +343,10 @@ kind: VirtualMachineBlockDeviceAttachment metadata: name: vmd-blank-attachment spec: - virtualMachine: linux-vm # Имя виртуальной машины, к которой будет подключен диск. - blockDevice: - type: VirtualDisk - virtualDisk: - name: vmd-blank # Имя подключаемого диска. + virtualMachineName: linux-vm # Имя виртуальной машины, к которой будет подключен диск. + blockDeviceRef: + kind: VirtualDisk + name: vmd-blank # Имя подключаемого диска. ``` При удалении ресурса `VirtualMachineBlockDeviceAttachment` диск от виртуальной машины будет отключен. diff --git a/docs/FAQ.md b/docs/FAQ.md index da9c8ae94..334839567 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -19,7 +19,7 @@ metadata: spec: persistentVolumeClaim: size: 100Gi - storageClass: local-path + storageClassName: local-path ``` Let's create resources with iso-images of Windows OS and virtio drivers: @@ -80,7 +80,7 @@ spec: Once the resource is created, the virtual machine will be started. You need to connect to it and use the graphical wizard to add the `virtio` drivers and perform the OS installation. ```bash -dvp vnc -n default win-vm +d8 v vnc -n default win-vm ``` After the installation is complete, shut down the virtual machine. @@ -193,7 +193,7 @@ kind: Secret metadata: name: sysprep-config data: - unattend.xml: XXXx # base64 of answer file + unattend.xml: XXXx # base64 of answer file ``` Then create a virtual machine with unattended installation: @@ -228,4 +228,4 @@ spec: name: win-virtio-iso - kind: VirtualDisk name: win-disk -``` \ No newline at end of file +``` diff --git a/docs/FAQ_RU.md b/docs/FAQ_RU.md index 44a577e5b..57450f59f 100644 --- a/docs/FAQ_RU.md +++ b/docs/FAQ_RU.md @@ -19,7 +19,7 @@ metadata: spec: persistentVolumeClaim: size: 100Gi - storageClass: local-path + storageClassName: local-path ``` 2. Создайте ресурсы с ISO-образами ОС Windows и драйверами virtio: @@ -82,7 +82,7 @@ spec: Команда для подключения: ```bash -dvp vnc -n default win-vm +d8 v vnc -n default win-vm ``` 6. После окончания установки завершите работу виртуальной машины. @@ -103,7 +103,7 @@ spec: 8. После внесенных изменений виртуальная машина запустится, для продолжения работы с ней используйте команду: ```bash -dvp vnc -n default win-vm +d8 v vnc -n default win-vm ``` ## Как создать образ виртуальной машины для container registry @@ -270,4 +270,4 @@ spec: name: win-virtio-iso - kind: VirtualDisk name: win-disk -``` \ No newline at end of file +``` diff --git a/docs/README.md b/docs/README.md index 117cd506a..553035fff 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,6 +12,7 @@ It offers the following features: - A simple and intuitive interface for declarative creation and management of virtual machines and their resources. - The ability to run legacy applications that for some reason cannot or are difficult to run in a container. +- Ability to run applications that require non-Linux operating systems. - Ability to run virtual machines and containerized applications in the same environment. - Integration with the existing Deckhouse ecosystem to leverage its capabilities for virtual machines. @@ -20,16 +21,20 @@ It offers the following features: The following conditions are required to run the module: - A processor with x86_64 architecture and support for Intel-VT or AMD-V instructions. +- Cluster resource requirements and configuration specifics are available for reading on [this](https://deckhouse.io/guides/production.html) page. +- Any [compatible](https://deckhouse.io/documentation/v1/supported_versions.html#linux) Linux-based OS is supported for installation. - The Linux kernel on the cluster nodes must be version 5.7 or newer. - The [CNI Cilium](/documentation/v1/modules/021-cni-cilium/) module to provide network connectivity for virtual machines. - Modules [SDS-DRBD](https://deckhouse.io/modules/sds-drbd/stable/) or [CEPH-CSI](/documentation/v1/modules/031-ceph-csi/) for storing virtual machine data. It is also possible to use other storage options that support the creation of block devices with `RWX` (`ReadWriteMany`) access mode. +The command line utility [d8](https://github.com/deckhouse/deckhouse-cli) is used to create cluster resources and connect to virtual machines. For users of the EE-version the ability to manage resources via UI is available. + ## What do I need to enable the module? Procedure for enabling the module 1. Configure the deckhouse cluster -2. Enable the CNI Cilium module +2. Enable the [CNI Cilium](/documentation/v1/modules/021-cni-cilium/) module 3. Install and configure SDS-DRBD/CEPH/etc storage 4. Enable the virtualization module @@ -39,7 +44,8 @@ The module includes the following components: - The module core, based on the KubeVirt project and uses QEMU/KVM + libvirtd to run virtual machines. - Deckhouse Virtualization Container Registry (DVCR) - repository for storing and caching virtual machine images. -- Virtualization-controller - API for creating and managing virtual machine resources. +- Virtualization-controller - controller that implements a user API for creating and managing virtual machine resources. +- Virtualization-API - API for interacting with virtual machines. The API provides capabilities for creating and managing the following resources: diff --git a/docs/README_RU.md b/docs/README_RU.md index af9964bc8..bdfbbce82 100644 --- a/docs/README_RU.md +++ b/docs/README_RU.md @@ -12,6 +12,7 @@ moduleStatus: experimental - Простой и интуитивно понятный интерфейс для декларативного создания и управления виртуальными машинами и их ресурсами. - Возможность запуска приложений, которые по каким-то причинам нельзя или сложно запустить в контейнере. +- Возможность запуска приложений, требующих ОС отличных от Linux. - Возможность запуска виртуальных машин и контейнеризованных приложений в одном окружении. - Интеграцию с экосистемой Deckhouse, которая использует ее возможности для виртуальных машин. @@ -20,16 +21,20 @@ moduleStatus: experimental Для запуска модуля требуются следующие условия: - Процессор с архитектурой x86_64 и поддержкой инструкций Intel-VT или AMD-V. +- Требования к ресурсам кластера и особенности их кронфигурации доступны для ознакомления на [этой](https://deckhouse.ru/guides/production.html) странице. +- Для установки поддерживается любая [совместимая](https://deckhouse.ru/documentation/v1/supported_versions.html#linux) ОС на базе Linux. - Ядро Linux на узлах кластера должно быть версии 5.7 или более новой. - Модуль [CNI Cilium](/documentation/v1/modules/021-cni-cilium/) для обеспечения сетевой связности виртуальных машин. - Модули [SDS-DRBD](https://deckhouse.ru/modules/sds-drbd/stable/) или [CEPH-CSI](/documentation/v1/modules/031-ceph-csi/) для хранения данных виртуальных машин. Также возможно использовать другие варианты хранилищ, поддерживающие создание блочных устройств с режимом доступа `RWX` (`ReadWriteMany`). +Для создания ресурсов кластера, и подключения к виртуальным машинам используется утилита командной строки [d8](https://github.com/deckhouse/deckhouse-cli). Для пользователей EE-версии доступна возможность управления ресурсами через UI. + ## Как включить модуль? Порядок действий для включения модуля 1. Настройте кластер deckhouse. -2. Включите модуль CNI Cilium. +2. Включите модуль [CNI Cilium](/documentation/v1/modules/021-cni-cilium/). 3. Установите и настроите хранилище SDS-DRBD/CEPH/etc. 4. Включите модуль virtualization. @@ -39,7 +44,8 @@ moduleStatus: experimental - Ядро модуля, основанное на проекте KubeVirt и использующее QEMU/KVM + libvirtd для запуска виртуальных машин. - Deckhouse Virtualization Container Registry (DVCR) — репозиторий для хранения и кэширования образов виртуальных машин. -- Virtualization-controller — API для создания и управления ресурсами виртуальных машин. +- Virtualization-controller — контроллер, реализующий API пользователя для создания и управления ресурсами виртуальных машин. +- Virtualization-API - API для взаимодействия с виртуальными машинами. API предоставляет возможности для создания и управления следующими ресурсами: From d456f3eb3fb4d2d4e66f234fc80c1e0e6a3fcd58 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Thu, 16 May 2024 09:45:56 +0300 Subject: [PATCH 03/13] refactor(crd): fix lint Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- crds/doc-ru-virtualmachinecpumodel.yaml | 96 ++++++++++++------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/crds/doc-ru-virtualmachinecpumodel.yaml b/crds/doc-ru-virtualmachinecpumodel.yaml index 2e1ba5f3c..3e68e43df 100644 --- a/crds/doc-ru-virtualmachinecpumodel.yaml +++ b/crds/doc-ru-virtualmachinecpumodel.yaml @@ -1,50 +1,50 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. - properties: - spec: - properties: - features: - description: | - Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) - items: {} - model: - description: | - Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) - type: - description: | - В качестве типа ресурса, поддерживаются следующие варианты: - * Host - использовать физический процессор хоста. - * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. - * Features - необходимый набор поддерживаемых инструкций для процессора. - status: - properties: - features: - description: | - Информация о поддерживаемых наборах инструкций процессора для данной модели. - Отображается только для `type=Features`. - properties: - enabled: - description: | - Список наборов инструкций процессора для данной модели. - items: {} - notEnabledCommon: - description: | - Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. - items: {} - nodes: - description: | - Список узлов, поддерживающих данную модель процессора. - Не отображается для `type=Host`. - items: {} - phase: - description: | - Текущий статус ресурса `VirtualMachineCPUModel`: - * Pending - ресурс находится в очереди на обработку. - * InProgress - ресурс находится в процессе создания. - * Ready - ресурс успешно создан. - * Failed - в процессе создания ресурса произошла ошибка. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. + properties: + spec: + properties: + features: + description: | + Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + items: {} + model: + description: | + Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + type: + description: | + В качестве типа ресурса, поддерживаются следующие варианты: + * Host - использовать физический процессор хоста. + * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. + * Features - необходимый набор поддерживаемых инструкций для процессора. + status: + properties: + features: + description: | + Информация о поддерживаемых наборах инструкций процессора для данной модели. + Отображается только для `type=Features`. + properties: + enabled: + description: | + Список наборов инструкций процессора для данной модели. + items: {} + notEnabledCommon: + description: | + Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. + items: {} + nodes: + description: | + Список узлов, поддерживающих данную модель процессора. + Не отображается для `type=Host`. + items: {} + phase: + description: | + Текущий статус ресурса `VirtualMachineCPUModel`: + * Pending - ресурс находится в очереди на обработку. + * InProgress - ресурс находится в процессе создания. + * Ready - ресурс успешно создан. + * Failed - в процессе создания ресурса произошла ошибка. From b5b2bd3e647d063bfbc83d4d4eb7f348cfa83274 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Thu, 16 May 2024 12:44:06 +0300 Subject: [PATCH 04/13] refactor(crd): rename storageClass param Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- docs/EXAMPLES.md | 2 +- docs/EXAMPLES_RU.md | 2 +- hack/upload-pvc.sh | 4 ++-- .../config/samples/linux_vm_from_cloudimage_disk.yaml | 2 +- .../config/samples/linux_vm_from_cloudimage_image.yaml | 2 +- .../config/samples/linux_vm_from_iso_image.yaml | 2 +- .../config/samples/virtual_machine_disk.yaml | 2 +- images/virtualization-artifact/config/samples/vmd_blank.yaml | 2 +- .../config/samples/vmd_http_auto_sized.yaml | 2 +- .../config/samples/vmd_http_sized.yaml | 2 +- .../config/samples/vmd_upload_auto_sized.yaml | 2 +- .../config/samples/vmd_upload_sized.yaml | 2 +- .../config/samples/vmi_ubuntu_2_phase.yaml | 2 +- .../config/samples/vmi_ubuntu_datavolume.yaml | 2 +- .../config/samples/vmi_upload_datavolume.yaml | 2 +- .../config/samples/vmi_upload_registry.yaml | 2 +- .../config/samples/win_vm_from_iso_image.yaml | 2 +- images/virtualization-artifact/config/vm_sysprep.yaml | 2 +- tests/performance/templates/vmds.yaml | 2 +- tests/performance/values.yaml | 2 +- 20 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/EXAMPLES.md b/docs/EXAMPLES.md index 8823f996c..c45ade14a 100644 --- a/docs/EXAMPLES.md +++ b/docs/EXAMPLES.md @@ -23,7 +23,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: local-path + storageClassName: local-path dataSource: type: HTTP http: diff --git a/docs/EXAMPLES_RU.md b/docs/EXAMPLES_RU.md index 11f88bbdd..a2128f951 100644 --- a/docs/EXAMPLES_RU.md +++ b/docs/EXAMPLES_RU.md @@ -23,7 +23,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: local-path + storageClassName: local-path dataSource: type: HTTP http: diff --git a/hack/upload-pvc.sh b/hack/upload-pvc.sh index 2d47c88dc..f8fe21aab 100644 --- a/hack/upload-pvc.sh +++ b/hack/upload-pvc.sh @@ -32,7 +32,7 @@ metadata: spec: storage: Kubernetes persistentVolumeClaim: - storageClass: linstor-thick-data-r3 + storageClassName: linstor-thick-data-r3 dataSource: type: Upload EOF @@ -48,4 +48,4 @@ done uploadCmd=$(echo "$uploadCmd ${FILE}" | sed "s/example.iso//") echo $uploadCmd -eval "${uploadCmd}" \ No newline at end of file +eval "${uploadCmd}" diff --git a/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_disk.yaml b/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_disk.yaml index c2cdb823f..152f21c6d 100644 --- a/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_disk.yaml +++ b/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_disk.yaml @@ -5,7 +5,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: local-path + storageClassName: local-path dataSource: type: HTTP http: diff --git a/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_image.yaml b/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_image.yaml index 21252e82a..4eb0e51c3 100644 --- a/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_image.yaml +++ b/images/virtualization-artifact/config/samples/linux_vm_from_cloudimage_image.yaml @@ -20,7 +20,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: local-path + storageClassName: local-path dataSource: type: ClusterVirtualImage clusterVirtualImage: diff --git a/images/virtualization-artifact/config/samples/linux_vm_from_iso_image.yaml b/images/virtualization-artifact/config/samples/linux_vm_from_iso_image.yaml index 0fd8fdc48..98cec85a8 100644 --- a/images/virtualization-artifact/config/samples/linux_vm_from_iso_image.yaml +++ b/images/virtualization-artifact/config/samples/linux_vm_from_iso_image.yaml @@ -17,7 +17,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: linstor-thin-data-r1 + storageClassName: linstor-thin-data-r1 --- apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine diff --git a/images/virtualization-artifact/config/samples/virtual_machine_disk.yaml b/images/virtualization-artifact/config/samples/virtual_machine_disk.yaml index 19a8d4f65..be894207f 100644 --- a/images/virtualization-artifact/config/samples/virtual_machine_disk.yaml +++ b/images/virtualization-artifact/config/samples/virtual_machine_disk.yaml @@ -5,7 +5,7 @@ metadata: spec: persistentVolumeClaim: size: 10Gi - storageClass: local-path + storageClassName: local-path dataSource: type: "HTTP" http: diff --git a/images/virtualization-artifact/config/samples/vmd_blank.yaml b/images/virtualization-artifact/config/samples/vmd_blank.yaml index 9ce3d376d..af6da7b5a 100644 --- a/images/virtualization-artifact/config/samples/vmd_blank.yaml +++ b/images/virtualization-artifact/config/samples/vmd_blank.yaml @@ -4,5 +4,5 @@ metadata: name: vmd-blank spec: persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" size: "80M" diff --git a/images/virtualization-artifact/config/samples/vmd_http_auto_sized.yaml b/images/virtualization-artifact/config/samples/vmd_http_auto_sized.yaml index db6a6a984..536bd163e 100644 --- a/images/virtualization-artifact/config/samples/vmd_http_auto_sized.yaml +++ b/images/virtualization-artifact/config/samples/vmd_http_auto_sized.yaml @@ -4,7 +4,7 @@ metadata: name: debian-iso spec: persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" dataSource: type: "HTTP" http: diff --git a/images/virtualization-artifact/config/samples/vmd_http_sized.yaml b/images/virtualization-artifact/config/samples/vmd_http_sized.yaml index 5f86dbf87..a599c2f69 100644 --- a/images/virtualization-artifact/config/samples/vmd_http_sized.yaml +++ b/images/virtualization-artifact/config/samples/vmd_http_sized.yaml @@ -4,7 +4,7 @@ metadata: name: debian-iso spec: persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" size: "80Mi" dataSource: type: "HTTP" diff --git a/images/virtualization-artifact/config/samples/vmd_upload_auto_sized.yaml b/images/virtualization-artifact/config/samples/vmd_upload_auto_sized.yaml index d4fd397fe..4ce8cf4bc 100644 --- a/images/virtualization-artifact/config/samples/vmd_upload_auto_sized.yaml +++ b/images/virtualization-artifact/config/samples/vmd_upload_auto_sized.yaml @@ -4,6 +4,6 @@ metadata: name: vmd-upload-auto-sized spec: persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" dataSource: type: "Upload" diff --git a/images/virtualization-artifact/config/samples/vmd_upload_sized.yaml b/images/virtualization-artifact/config/samples/vmd_upload_sized.yaml index 331df4dc1..3886fddeb 100644 --- a/images/virtualization-artifact/config/samples/vmd_upload_sized.yaml +++ b/images/virtualization-artifact/config/samples/vmd_upload_sized.yaml @@ -4,7 +4,7 @@ metadata: name: vmd-upload-sized spec: persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" size: "80Mi" dataSource: type: "Upload" diff --git a/images/virtualization-artifact/config/samples/vmi_ubuntu_2_phase.yaml b/images/virtualization-artifact/config/samples/vmi_ubuntu_2_phase.yaml index ac6f7aa9d..4824a6067 100644 --- a/images/virtualization-artifact/config/samples/vmi_ubuntu_2_phase.yaml +++ b/images/virtualization-artifact/config/samples/vmi_ubuntu_2_phase.yaml @@ -8,7 +8,7 @@ spec: # 2. Import from Registry into PVC. storage: Kubernetes persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" dataSource: type: "HTTP" http: diff --git a/images/virtualization-artifact/config/samples/vmi_ubuntu_datavolume.yaml b/images/virtualization-artifact/config/samples/vmi_ubuntu_datavolume.yaml index 09acab807..cb4fd6931 100644 --- a/images/virtualization-artifact/config/samples/vmi_ubuntu_datavolume.yaml +++ b/images/virtualization-artifact/config/samples/vmi_ubuntu_datavolume.yaml @@ -5,7 +5,7 @@ metadata: spec: storage: Kubernetes persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" dataSource: type: "ContainerImage" containerImage: diff --git a/images/virtualization-artifact/config/samples/vmi_upload_datavolume.yaml b/images/virtualization-artifact/config/samples/vmi_upload_datavolume.yaml index 8797358a3..ddbb70a6f 100644 --- a/images/virtualization-artifact/config/samples/vmi_upload_datavolume.yaml +++ b/images/virtualization-artifact/config/samples/vmi_upload_datavolume.yaml @@ -5,6 +5,6 @@ metadata: spec: storage: Kubernetes persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" dataSource: type: "Upload" diff --git a/images/virtualization-artifact/config/samples/vmi_upload_registry.yaml b/images/virtualization-artifact/config/samples/vmi_upload_registry.yaml index 27f152dc1..b1fd6a6ce 100644 --- a/images/virtualization-artifact/config/samples/vmi_upload_registry.yaml +++ b/images/virtualization-artifact/config/samples/vmi_upload_registry.yaml @@ -5,6 +5,6 @@ metadata: spec: storage: ContainerRegistry persistentVolumeClaim: - storageClass: "local-path" + storageClassName: "local-path" dataSource: type: "Upload" diff --git a/images/virtualization-artifact/config/samples/win_vm_from_iso_image.yaml b/images/virtualization-artifact/config/samples/win_vm_from_iso_image.yaml index 91c88f3d2..d0ddbc21c 100644 --- a/images/virtualization-artifact/config/samples/win_vm_from_iso_image.yaml +++ b/images/virtualization-artifact/config/samples/win_vm_from_iso_image.yaml @@ -29,7 +29,7 @@ metadata: spec: persistentVolumeClaim: size: 100Gi - storageClass: local-path + storageClassName: local-path --- apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine diff --git a/images/virtualization-artifact/config/vm_sysprep.yaml b/images/virtualization-artifact/config/vm_sysprep.yaml index 0a11a46fb..a2e0bfc15 100644 --- a/images/virtualization-artifact/config/vm_sysprep.yaml +++ b/images/virtualization-artifact/config/vm_sysprep.yaml @@ -35,7 +35,7 @@ metadata: spec: persistentVolumeClaim: size: 50Gi - storageClass: linstor-test-data-r1 + storageClassName: linstor-test-data-r1 --- apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine diff --git a/tests/performance/templates/vmds.yaml b/tests/performance/templates/vmds.yaml index 6221df21b..8d466050f 100644 --- a/tests/performance/templates/vmds.yaml +++ b/tests/performance/templates/vmds.yaml @@ -26,7 +26,7 @@ spec: persistentVolumeClaim: size: {{ $.Values.diskSize }} {{- if $.Values.storageClass }} - storageClass: {{ $.Values.storageClass }} + storageClassName: {{ $.Values.storageClass }} {{- end }} dataSource: type: "ObjectRef" diff --git a/tests/performance/values.yaml b/tests/performance/values.yaml index 981a3e7f2..cf8429f83 100644 --- a/tests/performance/values.yaml +++ b/tests/performance/values.yaml @@ -9,5 +9,5 @@ spec: resources: "all" resourcesPrefix: "performance" diskSize: 3Gi -storageClass: "" +storageClassName: "" imageURL: "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" From 1c859f660792bfd37bf4527791309f71f218082e Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Thu, 16 May 2024 12:46:33 +0300 Subject: [PATCH 05/13] refactor(crd): rename virtualMachine param Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- docs/EXAMPLES.md | 4 ++-- docs/EXAMPLES_RU.md | 2 +- images/virtualization-artifact/config/samples/vmbda.yaml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/EXAMPLES.md b/docs/EXAMPLES.md index c45ade14a..ca5ddf98e 100644 --- a/docs/EXAMPLES.md +++ b/docs/EXAMPLES.md @@ -336,7 +336,7 @@ kind: VirtualMachineBlockDeviceAttachment metadata: name: vmd-blank-attachment spec: - virtualMachine: linux-vm # Name of the virtual machine to attach disk to. + virtualMachineName: linux-vm # Name of the virtual machine to attach disk to. blockDevice: type: ObjectRef objectRef: @@ -528,7 +528,7 @@ kind: VirtualMachineOperation metadata: name: restart spec: - virtualMachine: linux-vm + virtualMachineName: linux-vm type: Restart EOF ``` diff --git a/docs/EXAMPLES_RU.md b/docs/EXAMPLES_RU.md index a2128f951..90f52266b 100644 --- a/docs/EXAMPLES_RU.md +++ b/docs/EXAMPLES_RU.md @@ -526,7 +526,7 @@ kind: VirtualMachineOperation metadata: name: restart-linux-vm spec: - virtualMachine: linux-vm + virtualMachineName: linux-vm type: Restart EOF ``` diff --git a/images/virtualization-artifact/config/samples/vmbda.yaml b/images/virtualization-artifact/config/samples/vmbda.yaml index 8fac78e90..6d3d6233d 100644 --- a/images/virtualization-artifact/config/samples/vmbda.yaml +++ b/images/virtualization-artifact/config/samples/vmbda.yaml @@ -3,7 +3,7 @@ kind: VirtualMachineBlockDeviceAttachment metadata: name: vmd-blank-attachment spec: - virtualMachine: linux-vm + virtualMachineName: linux-vm blockDevice: type: VirtualDisk virtualDisk: From efe69090e88a1a9dc7e5168d74a37f37274a322c Mon Sep 17 00:00:00 2001 From: Isteb4k <dmitry.rakitin@flant.com> Date: Thu, 16 May 2024 21:19:31 +0700 Subject: [PATCH 06/13] feat(api): rename resource references Signed-off-by: Isteb4k <dmitry.rakitin@flant.com> Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- api/core/v1alpha2/virtual_disk.go | 4 +-- api/core/v1alpha2/virtual_machine.go | 8 ++--- .../virtual_machine_block_disk_attachment.go | 2 +- .../virtual_machine_ip_address_claim.go | 6 ++-- .../v1alpha2/virtual_machine_operation.go | 2 +- .../generated/openapi/zz_generated.openapi.go | 34 +++++++++---------- crds/doc-ru-virtualdisk.yaml | 2 +- crds/virtualdisk.yaml | 2 +- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/core/v1alpha2/virtual_disk.go b/api/core/v1alpha2/virtual_disk.go index 9431acecb..70ce60d27 100644 --- a/api/core/v1alpha2/virtual_disk.go +++ b/api/core/v1alpha2/virtual_disk.go @@ -64,11 +64,11 @@ type VirtualDiskDownloadSpeed struct { } type DiskTarget struct { - PersistentVolumeClaim string `json:"persistentVolumeClaim"` + PersistentVolumeClaim string `json:"persistentVolumeClaimName"` } type VirtualDiskPersistentVolumeClaim struct { - StorageClass *string `json:"storageClass,omitempty"` + StorageClass *string `json:"storageClassName,omitempty"` Size *resource.Quantity `json:"size,omitempty"` } diff --git a/api/core/v1alpha2/virtual_machine.go b/api/core/v1alpha2/virtual_machine.go index 106966f76..f5a65ff94 100644 --- a/api/core/v1alpha2/virtual_machine.go +++ b/api/core/v1alpha2/virtual_machine.go @@ -29,7 +29,7 @@ type VirtualMachineSpec struct { // VirtualMachineIPAddressClaim specifies a name for the associated // `VirtualMachineIPAddressClaim` resource. Defaults to `{vm name}`. - VirtualMachineIPAddressClaim string `json:"virtualMachineIPAddressClaim,omitempty"` + VirtualMachineIPAddressClaim string `json:"virtualMachineIPAddressClaimName,omitempty"` // TopologySpreadConstraints specifies how to spread matching pods among the given topology. TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` @@ -91,7 +91,7 @@ const ( ) type CPUSpec struct { - VirtualMachineCPUModel string `json:"virtualMachineCPUModel"` + VirtualMachineCPUModel string `json:"virtualMachineCPUModelName"` Cores int `json:"cores"` CoreFraction string `json:"coreFraction"` } @@ -143,8 +143,8 @@ const ( type VirtualMachineStatus struct { Phase MachinePhase `json:"phase"` - Node string `json:"node"` - VirtualMachineIPAddressClaim string `json:"virtualMachineIPAddressClaim"` + Node string `json:"nodeName"` + VirtualMachineIPAddressClaim string `json:"virtualMachineIPAddressClaimName"` IPAddress string `json:"ipAddress"` BlockDeviceRefs []BlockDeviceStatusRef `json:"blockDeviceRefs"` GuestOSInfo virtv1.VirtualMachineInstanceGuestOSInfo `json:"guestOSInfo"` diff --git a/api/core/v1alpha2/virtual_machine_block_disk_attachment.go b/api/core/v1alpha2/virtual_machine_block_disk_attachment.go index 9adc6c861..d72d54607 100644 --- a/api/core/v1alpha2/virtual_machine_block_disk_attachment.go +++ b/api/core/v1alpha2/virtual_machine_block_disk_attachment.go @@ -29,7 +29,7 @@ type VirtualMachineBlockDeviceAttachmentList struct { } type VirtualMachineBlockDeviceAttachmentSpec struct { - VirtualMachine string `json:"virtualMachine"` + VirtualMachine string `json:"virtualMachineName"` BlockDeviceRef VMBDAObjectRef `json:"blockDeviceRef"` } diff --git a/api/core/v1alpha2/virtual_machine_ip_address_claim.go b/api/core/v1alpha2/virtual_machine_ip_address_claim.go index be9a31f80..de15f876e 100644 --- a/api/core/v1alpha2/virtual_machine_ip_address_claim.go +++ b/api/core/v1alpha2/virtual_machine_ip_address_claim.go @@ -26,7 +26,7 @@ type VirtualMachineIPAddressClaimList struct { // VirtualMachineIPAddressClaimSpec is the desired state of `VirtualMachineIPAddressClaim`. type VirtualMachineIPAddressClaimSpec struct { // The issued `VirtualMachineIPAddressLease`, managed automatically. - VirtualMachineIPAddressLease string `json:"virtualMachineIPAddressLease"` + VirtualMachineIPAddressLease string `json:"virtualMachineIPAddressLeaseName"` // The requested IP address. If omitted the next available IP address will be assigned. Address string `json:"address"` // Determines the behavior of VirtualMachineIPAddressLease upon VirtualMachineIPAddressClaim deletion. @@ -36,11 +36,11 @@ type VirtualMachineIPAddressClaimSpec struct { // VirtualMachineIPAddressClaimStatus is the observed state of `VirtualMachineIPAddressClaim`. type VirtualMachineIPAddressClaimStatus struct { // Represents the virtual machine that currently uses this IP address. - VirtualMachine string `json:"virtualMachine,omitempty"` + VirtualMachine string `json:"virtualMachineName,omitempty"` // Assigned IP address. Address string `json:"address,omitempty"` // The issued `VirtualMachineIPAddressLease`, managed automatically. - Lease string `json:"virtualMachineIPAddressLease,omitempty"` + Lease string `json:"virtualMachineIPAddressLeaseName,omitempty"` // Represents the current state of IP address claim. Phase VirtualMachineIPAddressClaimPhase `json:"phase,omitempty"` // Detailed description of the error. diff --git a/api/core/v1alpha2/virtual_machine_operation.go b/api/core/v1alpha2/virtual_machine_operation.go index 677133dae..248ba1689 100644 --- a/api/core/v1alpha2/virtual_machine_operation.go +++ b/api/core/v1alpha2/virtual_machine_operation.go @@ -20,7 +20,7 @@ type VirtualMachineOperation struct { type VirtualMachineOperationSpec struct { Type VMOPOperation `json:"type"` - VirtualMachine string `json:"virtualMachine"` + VirtualMachine string `json:"virtualMachineName"` Force bool `json:"force,omitempty"` } diff --git a/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go b/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go index 225416945..0dd7fa98b 100644 --- a/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go +++ b/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go @@ -707,7 +707,7 @@ func schema_virtualization_api_core_v1alpha2_CPUSpec(ref common.ReferenceCallbac SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ - "virtualMachineCPUModel": { + "virtualMachineCPUModelName": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, @@ -729,7 +729,7 @@ func schema_virtualization_api_core_v1alpha2_CPUSpec(ref common.ReferenceCallbac }, }, }, - Required: []string{"virtualMachineCPUModel", "cores", "coreFraction"}, + Required: []string{"virtualMachineCPUModelName", "cores", "coreFraction"}, }, }, } @@ -1103,7 +1103,7 @@ func schema_virtualization_api_core_v1alpha2_DiskTarget(ref common.ReferenceCall SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ - "persistentVolumeClaim": { + "persistentVolumeClaimName": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, @@ -1111,7 +1111,7 @@ func schema_virtualization_api_core_v1alpha2_DiskTarget(ref common.ReferenceCall }, }, }, - Required: []string{"persistentVolumeClaim"}, + Required: []string{"persistentVolumeClaimName"}, }, }, } @@ -1719,7 +1719,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualDiskPersistentVolumeClaim(re SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ - "storageClass": { + "storageClassName": { SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "", @@ -2432,7 +2432,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineBlockDeviceAttachment SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ - "virtualMachine": { + "virtualMachineName": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, @@ -2446,7 +2446,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineBlockDeviceAttachment }, }, }, - Required: []string{"virtualMachine", "blockDeviceRef"}, + Required: []string{"virtualMachineName", "blockDeviceRef"}, }, }, Dependencies: []string{ @@ -2814,7 +2814,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineIPAddressClaimSpec(re Description: "VirtualMachineIPAddressClaimSpec is the desired state of `VirtualMachineIPAddressClaim`.", Type: []string{"object"}, Properties: map[string]spec.Schema{ - "virtualMachineIPAddressLease": { + "virtualMachineIPAddressLeaseName": { SchemaProps: spec.SchemaProps{ Description: "The issued `VirtualMachineIPAddressLease`, managed automatically.", Default: "", @@ -2838,7 +2838,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineIPAddressClaimSpec(re }, }, }, - Required: []string{"virtualMachineIPAddressLease", "address"}, + Required: []string{"virtualMachineIPAddressLeaseName", "address"}, }, }, } @@ -2851,7 +2851,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineIPAddressClaimStatus( Description: "VirtualMachineIPAddressClaimStatus is the observed state of `VirtualMachineIPAddressClaim`.", Type: []string{"object"}, Properties: map[string]spec.Schema{ - "virtualMachine": { + "virtualMachineName": { SchemaProps: spec.SchemaProps{ Description: "Represents the virtual machine that currently uses this IP address.", Type: []string{"string"}, @@ -2865,7 +2865,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineIPAddressClaimStatus( Format: "", }, }, - "virtualMachineIPAddressLease": { + "virtualMachineIPAddressLeaseName": { SchemaProps: spec.SchemaProps{ Description: "The issued `VirtualMachineIPAddressLease`, managed automatically.", Type: []string{"string"}, @@ -3224,7 +3224,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineOperationSpec(ref com Format: "", }, }, - "virtualMachine": { + "virtualMachineName": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, @@ -3238,7 +3238,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineOperationSpec(ref com }, }, }, - Required: []string{"type", "virtualMachine"}, + Required: []string{"type", "virtualMachineName"}, }, }, } @@ -3290,7 +3290,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineSpec(ref common.Refer Format: "", }, }, - "virtualMachineIPAddressClaim": { + "virtualMachineIPAddressClaimName": { SchemaProps: spec.SchemaProps{ Description: "VirtualMachineIPAddressClaim specifies a name for the associated `VirtualMachineIPAddressClaim` resource. Defaults to `{vm name}`.", Type: []string{"string"}, @@ -3440,14 +3440,14 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineStatus(ref common.Ref Format: "", }, }, - "node": { + "nodeName": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, - "virtualMachineIPAddressClaim": { + "virtualMachineIPAddressClaimName": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, @@ -3501,7 +3501,7 @@ func schema_virtualization_api_core_v1alpha2_VirtualMachineStatus(ref common.Ref }, }, }, - Required: []string{"phase", "node", "virtualMachineIPAddressClaim", "ipAddress", "blockDeviceRefs", "guestOSInfo", "message"}, + Required: []string{"phase", "nodeName", "virtualMachineIPAddressClaimName", "ipAddress", "blockDeviceRefs", "guestOSInfo", "message"}, }, }, Dependencies: []string{ diff --git a/crds/doc-ru-virtualdisk.yaml b/crds/doc-ru-virtualdisk.yaml index 8f5fb7336..1daf4c764 100644 --- a/crds/doc-ru-virtualdisk.yaml +++ b/crds/doc-ru-virtualdisk.yaml @@ -118,7 +118,7 @@ spec: Емкость PVC в человекочитаемом формате. target: properties: - persistentVolumeClaim: + persistentVolumeClaimName: description: | Имя созданного PersistentVolumeClaim для хранилища Kubernetes. phase: diff --git a/crds/virtualdisk.yaml b/crds/virtualdisk.yaml index 27ce60f70..e740f9d0d 100644 --- a/crds/virtualdisk.yaml +++ b/crds/virtualdisk.yaml @@ -228,7 +228,7 @@ spec: target: type: object properties: - persistentVolumeClaim: + persistentVolumeClaimName: type: string description: | Created PersistentVolumeClaim name for Kubernetes storage. From 93456c97edeb40417c8c28ad78b748ced2119f00 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Sat, 18 May 2024 08:48:45 +0300 Subject: [PATCH 07/13] docs(vm): update Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- crds/doc-ru-virtualmachine.yaml | 57 ++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/crds/doc-ru-virtualmachine.yaml b/crds/doc-ru-virtualmachine.yaml index 001809dba..623ecc22c 100644 --- a/crds/doc-ru-virtualmachine.yaml +++ b/crds/doc-ru-virtualmachine.yaml @@ -4,29 +4,34 @@ spec: schema: openAPIV3Schema: description: | - Данный ресурс позволяет управлять конфигурацией виртуальной машины. + Конфигурация виртуальной машины (ВМ). properties: spec: properties: provisioning: description: | - Этот блок позволяет настроить сценарий инициализации для ВМ. + Блок описания сценария начальной инициализации ВМ. properties: type: description: | Поддерживаемые параметры для использования сценария инициализации: - * UserData — позволяет указать сценарий cloud-init в секции .spec.provisioning.UserData. - * UserDataRef — позволяет использовать существующий Secret со сценарием cloud-init. - * SysprepRef — позволяет автоматизировать установку Windows. + * UserData — использовать сценарий cloud-init в секции .spec.provisioning.UserData. + * UserDataRef — использовать сценарий cloud-init, который находится в другом ресурсе. + * SysprepRef — использовать сценарий автоматизации установки Windows, который находится в другом ресурсе. - Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html userData: description: | - Сценарий cloud-init. + Текст сценария cloud-init. + + Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html userDataRef: description: | Ссылка на существующий ресурс со сценарием cloud-init. + + Структура ресурса для типа userDataRef: + + * `.data.userData` properties: kind: description: | @@ -37,6 +42,11 @@ spec: sysprepRef: description: | Ссылка на существующий ресурс со сценарием автоматизации Windows. + + Структура ресурса для типа SysprepRef: + + * `.data.autounattend.xml` + * `.data.unattend.xml` properties: kind: description: | @@ -55,9 +65,11 @@ spec: virtualMachineIPAddressClaimName: description: | - Имя для связанного ресурса `virtualMachineIPAddressClaimName`. + Имя для связанного ресурса `virtualMachineIPAddressClaim`. + + Указывается при необходимости использования ранее созданного IP-адреса ВМ. - Если не указано, по умолчанию используется `.metadata.name`. + Если не указано явно, по умолчанию для ВМ создается ресурс `virtualMachineIPAddressClaim` с именем аналогичным ресурсу ВМ (`.metadata.name`). topologySpreadConstraints: description: | @@ -453,17 +465,16 @@ spec: disruptions: description: | - Политика применения изменений, требующих перезагрузки ВМ. - - Некоторые настройки ВМ требуют перезагрузки ВМ при изменении конфигурации. Для перезагрузки необходимо одобрить изменения. Для этого используется параметр `approvalMode`. + Описании политики применения изменений, требующих перезагрузки ВМ. + Изменение некоторых параметров конфигурации ВМ требуют перезагрузки ВМ для их применения. Данная политика позволяет задать поведения, как ВМ будет реагировать на такие изменения. properties: restartApprovalMode: description: | Режим одобрения для изменений, требующих перезагрузки ВМ: - - `Manual` — чтобы утвердить изменения, необходимо сделать это вручную, скопировав идентификатор изменения из `.status.changeID` в `.spec.approvedChangeID`. - - `Автоматический` — автоматическое утверждение обновлений. + - `Manual` — изменения не будут применены, до тех пока пользователь самостоятельно не осуществит перезагрузку ВМ. + - `Автоматический` — ВМ будет перезагружена, сразу, после сохранения параметров, требующих перезагрузки ВМ. terminationGracePeriodSeconds: description: | @@ -471,37 +482,39 @@ spec: enableParavirtualization: description: | - Использовать шину `virtio` для подключения дисковых устройств. Установите значение false, чтобы отключить `virtio` для этой ВМ. + Использовать шину `virtio` для подключения виртуальных устройств ВМ. Установите значение false, чтобы отключить `virtio` для этой ВМ. + + Внимание: Для использования режима паравиртуализации некоторые ОС требуют установки соответствующих драйверов. + osType: description: | - Для выбранного типа ОС определяет набор устройств и другие параметры, необходимые для корректной работы, которые будут применяться к ВМ: + Параметр позволяет выбрать тип используемой ОС, для которой будет создана ВМ с оптимальным набором необходимых виртуальных устройств и параметров. * Windows — для ОС семейства Microsoft Windows. * Generic — для других типов ОС. bootloader: description: | - Определяет загрузчик для VM: + Загрузчик для VM: - * BIOS — использовать устаревший BIOS. + * BIOS — использовать BIOS. * EFI — использовать Unified Extensible Firmware (EFI/UEFI). * EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot. cpu: description: | - Блок определяет настройки процессора для виртуальной машины. + Блок определяет настройки ЦП для виртуальной машины. properties: virtualMachineCPUModelName: description: | Имя ресурса `virtualMachineCPUModelName`, определяющего модель процессора для виртуальной машины. cores: description: | - Количество ядер в виртуальной машине. Значение числа ядер должно быть больше или равно 1. + Количество ядер. coreFraction: description: | - Гарантированная доля ЦП, которая будет выделена ВМ. Указывается в процентах. - Поддерживаемые значения: `5%`, `10%`, `25%`, `50%`, `100%`. + Гарантированная доля времени ЦП, которая будет выделена ВМ. Указывается в процентах. memory: description: | From 6f8f66b043200496ffbbf9b629fe9728b6475fb7 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Sat, 18 May 2024 09:15:50 +0300 Subject: [PATCH 08/13] docs: update Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- README.md | 32 +++++++++++++++++++++++--------- docs/README.md | 5 ++--- docs/README_RU.md | 7 +++---- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 26559a749..86816f56b 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ It offers the following features: - A simple and intuitive interface for declarative creation and management of virtual machines and their resources. - The ability to run legacy applications that for some reason cannot or are difficult to run in a container. +- Ability to run applications that require non-Linux operating systems. - Ability to run virtual machines and containerized applications in the same environment. - Integration with the existing Deckhouse ecosystem to leverage its capabilities for virtual machines. @@ -20,9 +21,22 @@ It offers the following features: The following conditions are required to run the module: - A processor with x86_64 architecture and support for Intel-VT or AMD-V instructions. +- Cluster resource requirements and configuration specifics are available for reading on [this](https://deckhouse.io/guides/production.html) page. +- Any [compatible](https://deckhouse.io/documentation/v1/supported_versions.html#linux) Linux-based OS is supported for installation. - The Linux kernel on the cluster nodes must be version 5.7 or newer. -- The [CNI Cilium](https://deckhouse.ru/documentation/v1/modules/021-cni-cilium/) module to provide network connectivity for virtual machines. -- Modules SDS-DRBD or [Ceph](https://deckhouse.ru/documentation/v1/modules/031-ceph-csi/) for storing virtual machine data. It is also possible to use other storage options that support the creation of block devices with `RWX` (`ReadWriteMany`) access mode. +- The [CNI Cilium](/documentation/v1/modules/021-cni-cilium/) module to provide network connectivity for virtual machines. +- Modules [SDS-DRBD](https://deckhouse.io/modules/sds-drbd/stable/) or [CEPH-CSI](/documentation/v1/modules/031-ceph-csi/) for storing virtual machine data. It is also possible to use other storage options that support the creation of block devices with `RWX` (`ReadWriteMany`) access mode. + +The command line utility [d8](https://github.com/deckhouse/deckhouse-cli) is used to create cluster resources and connect to virtual machines. For users of the EE-version the ability to manage resources via UI is available. + +## What do I need to enable the module? + +Procedure for enabling the module + +1. Configure the deckhouse cluster +2. Enable the [CNI Cilium](/documentation/v1/modules/021-cni-cilium/) module +3. Install and configure SDS-DRBD/CEPH/etc storage +4. Enable the virtualization module ## Architecture @@ -30,14 +44,14 @@ The module includes the following components: - The module core, based on the KubeVirt project and uses QEMU/KVM + libvirtd to run virtual machines. - Deckhouse Virtualization Container Registry (DVCR) - repository for storing and caching virtual machine images. -- Virtualization-controller - API for creating and managing virtual machine resources. +- Virtualization-API - controller that implements a user API for creating and managing virtual machine resources. The API provides capabilities for creating and managing the following resources: -- Images -- Disks +- Virtual Images +- Virtual Disks - Virtual machines -- Operations +- Virtual Machine Operations ## How to enable module @@ -57,8 +71,8 @@ spec: size: 50G # size of DVCR storage type: PersistentVolumeClaim virtualMachineCIDRs: - - 10.66.10.0/24 - - 10.66.20.0/24 - - 10.66.30.0/24 + - 10.66.10.0/24 + - 10.66.20.0/24 + - 10.66.30.0/24 version: 1 ``` diff --git a/docs/README.md b/docs/README.md index 553035fff..8cbdbe14b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ moduleStatus: experimental ## Description -This module is designed to run and manage virtual machines and their resources on the Deckhouse platform. +This module is designed to run and manage virtual machines and their resources on [the Deckhouse platform](https://deckhouse.io). It offers the following features: @@ -44,8 +44,7 @@ The module includes the following components: - The module core, based on the KubeVirt project and uses QEMU/KVM + libvirtd to run virtual machines. - Deckhouse Virtualization Container Registry (DVCR) - repository for storing and caching virtual machine images. -- Virtualization-controller - controller that implements a user API for creating and managing virtual machine resources. -- Virtualization-API - API for interacting with virtual machines. +- Virtualization-API - controller that implements a user API for creating and managing virtual machine resources. The API provides capabilities for creating and managing the following resources: diff --git a/docs/README_RU.md b/docs/README_RU.md index bdfbbce82..9271bf2d7 100644 --- a/docs/README_RU.md +++ b/docs/README_RU.md @@ -6,7 +6,7 @@ moduleStatus: experimental ## Описание -Этот модуль предназначен для запуска и управления виртуальными машинами и их ресурсами на платформе Deckhouse. +Этот модуль предназначен для запуска и управления виртуальными машинами и их ресурсами на [платформе Deckhouse](https://deckhouse.ru). Он предлагает следующие возможности: @@ -44,10 +44,9 @@ moduleStatus: experimental - Ядро модуля, основанное на проекте KubeVirt и использующее QEMU/KVM + libvirtd для запуска виртуальных машин. - Deckhouse Virtualization Container Registry (DVCR) — репозиторий для хранения и кэширования образов виртуальных машин. -- Virtualization-controller — контроллер, реализующий API пользователя для создания и управления ресурсами виртуальных машин. -- Virtualization-API - API для взаимодействия с виртуальными машинами. +- Virtualization-API — контроллер, реализующий API пользователя для создания и управления ресурсами виртуальных машин. -API предоставляет возможности для создания и управления следующими ресурсами: +API предоставляет возможности для создания, модификации и удаления следующих ресурсов: - образы виртуальных машин и загрузочные образы; - диски виртуальных машин; From 78faf5874ea9f4e2550a1be24f93af29e09860a1 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Sat, 18 May 2024 13:50:29 +0300 Subject: [PATCH 09/13] docs(vm): update en crd Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- crds/virtualmachine.yaml | 56 +++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/crds/virtualmachine.yaml b/crds/virtualmachine.yaml index 1bf549763..87fbec200 100644 --- a/crds/virtualmachine.yaml +++ b/crds/virtualmachine.yaml @@ -28,7 +28,7 @@ spec: openAPIV3Schema: type: object description: | - Handles the VM according to its configuration and run policy. + Virtual Machine (VM) Configuration. required: - spec properties: @@ -48,11 +48,11 @@ spec: description: | This parameter defines the type of provisioning script: - * UserData - allows the use of inline cloud-init userdata in the .spec.provisioning.UserData section. + Parameters supported for using the provisioning script: - * UserDataRef - allows tto automate OS installation with cloud-init userdata. - - * SysprepRef - allows to automate Windows installation, setup, and custom software provisioning. + * 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 type: string @@ -66,11 +66,16 @@ spec: type: string userDataRef: description: | - Reference to an existing Secret with a cloud-init userdata script. + A reference to an existing resource with a cloud-init script. + + Resource structure for userDataRef type: + + * `.data.userData`. type: object properties: kind: - description: The kind of an existing Windows sysprep automation. + description: | + The kind of an existing cloud-init automation resource. default: "Secret" type: string enum: @@ -78,15 +83,21 @@ spec: name: type: string description: | - Secret name. + The name of the resource. required: ["name", "kind"] sysprepRef: description: | Reference to an existing Windows sysprep automation. + + Resource structure for the SysprepRef type: + + * `.data.autounattend.xml`. + * `.data.unattend.xml`. type: object properties: kind: - description: The kind of an existing Windows sysprep automation. + description: | + The kind of an existing Windows sysprep automation resource. default: "Secret" type: string enum: @@ -142,10 +153,11 @@ spec: virtualMachineIPAddressClaimName: type: string description: | - The name for associated `virtualMachineIPAddressClaimName` resource. + Name for the associated `virtualMachineIPAddressClaim` resource. + + Specified when it is necessary to use a previously created IP address of the VM. - If specified, virtualMachineIPAddressClaimName should exists on VirtualMachine creation. - If not specified, a VirtualMachine name will be used to create an implicit virtualMachineIPAddressClaimName. This claim will be deleted on VirtualMachine deletion. + If not explicitly specified, by default a `virtualMachineIPAddressClaim` resource is created for the VM with a name similar to the VM resource (`.metadata.name`). topologySpreadConstraints: description: | @@ -790,16 +802,17 @@ spec: default: restartApprovalMode: Manual description: | - Disruptions settings for virtual machine. + Describing the policy for applying changes that require rebooting the VM. - 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. + 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. properties: restartApprovalMode: type: string description: | - 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. + 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. enum: - Manual - Automatic @@ -815,7 +828,9 @@ spec: type: boolean default: true description: | - Use the `virtio` bus to attach disk devices. Set to false to disable `virtio` for this VM. + 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. osType: type: string @@ -824,9 +839,9 @@ spec: - "Generic" default: "Generic" description: | - For the selected type of operating system, determines the set of devices and other parameters required for correct operation will be applied to VM. + 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 the Microsoft Windows family of OS. + * Windows - for Microsoft Windows family operating systems. * Generic - for other types of OS. bootloader: @@ -864,7 +879,6 @@ spec: enum: ["5%", "10%", "25%", "50%", "100%"] description: | Guaranteed share of CPU that will be allocated to the VM. Specified as a percentage. - Supported values: `5%`, `10%`, `25%`, `50%`, `100%`. memory: type: object From eef0670e413b230b5259492b3fbd4c8d42102c49 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Sat, 18 May 2024 17:45:41 +0300 Subject: [PATCH 10/13] feat(test) fix indents in ru crds Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- crds/doc-ru-clustervirtualimage.yaml | 312 ++--- crds/doc-ru-virtualdisk.yaml | 278 +++-- crds/doc-ru-virtualimage.yaml | 306 +++-- crds/doc-ru-virtualmachine.yaml | 1040 ++++++++--------- ...u-virtualmachineblockdeviceattachment.yaml | 78 +- crds/doc-ru-virtualmachinecpumodel.yaml | 92 +- crds/doc-ru-virtualmachineipaddressclaim.yaml | 82 +- crds/doc-ru-virtualmachineipaddresslease.yaml | 68 +- 8 files changed, 1116 insertions(+), 1140 deletions(-) diff --git a/crds/doc-ru-clustervirtualimage.yaml b/crds/doc-ru-clustervirtualimage.yaml index 70bc6fda4..105e96c72 100644 --- a/crds/doc-ru-clustervirtualimage.yaml +++ b/crds/doc-ru-clustervirtualimage.yaml @@ -1,165 +1,165 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. Этот тип ресурса доступен для всех пространств имен в кластере. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. Этот тип ресурса доступен для всех пространств имен в кластере. - > Этот ресурс не может быть изменен после его создания. + > Этот ресурс не может быть изменен после его создания. - Под капотом этого ресурса создается образ контейнера, который хранится в специальном container registry (DVCR). - properties: - spec: - properties: - dataSource: - description: | - Тип источника, из которого будет создан образ. - properties: - type: - description: | - Доступные типы источников для создания образа: + Под капотом этого ресурса создается образ контейнера, который хранится в специальном container registry (DVCR). + properties: + spec: + properties: + dataSource: + description: | + Тип источника, из которого будет создан образ. + properties: + containerImage: + description: | + Использование образа, хранящегося во внешнем реестре контейнеров. + Поддерживаются только реестры контейнеров с включенным TLS. + При необходимости используйте поле caBundle, чтобы предоставить собственную цепочку центров сертификации. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки подключения к container registry. + image: + description: | + Путь к образу в container registry. + imagePullSecret: + properties: + name: + description: | + Имя Secret'а, содержащего учетные данные для подключения к container registry. + namespace: + description: | + Пространство имен, в котором находится imagePullSecret. + http: + description: | + Создание образа из файла, опубликованного по URL. Поддерживаемые схемы: - * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. - * `ContainerImage` — создать образ из образа в container registry. - * `VirtualImage` — создать новый образ из существующего `VirtualImage`. - * `ClusterVirtualImage` — создать новый образ из существующего `ClusterVirtualImage`. - * `Upload` — загрузить образ вручную, через веб-интерфейс. - http: - description: | - Создание образа из файла, опубликованного по URL. Поддерживаемые схемы: + * HTTP; + * HTTPS. - * HTTP; - * HTTPS. + Для схемы HTTPS есть возможность отключить проверку TLS. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. + checksum: + description: | + Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. + properties: + md5: + description: "" + sha256: + description: "" + insecureSkipVerify: + description: | + Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). + url: + description: | + Для образа расположенного по URL, поддерживаются следующие типы образов: + * qcow2; + * vmdk; + * vdi; + * iso; + * raw. - Для схемы HTTPS есть возможность отключить проверку TLS. - properties: - url: - description: | - Для образа расположенного по URL, поддерживаются следующие типы образов: - * qcow2; - * vmdk; - * vdi; - * iso; - * raw. + Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: + * gz; + * xz. + objectRef: + description: | + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. + properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. + name: + description: | + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + namespace: + description: | + Имя namespace'а, гда ресположен `VirtualImage`. + type: + description: | + Доступные типы источников для создания образа: - Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: - * gz; - * xz. - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. - insecureSkipVerify: - description: | - Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). - checksum: - description: | - Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. - properties: - md5: - description: "" - sha256: - description: "" - containerImage: - description: | - Использование образа, хранящегося во внешнем реестре контейнеров. - Поддерживаются только реестры контейнеров с включенным TLS. - При необходимости используйте поле caBundle, чтобы предоставить собственную цепочку центров сертификации. - properties: - image: - description: | - Путь к образу в container registry. - imagePullSecret: - properties: - name: - description: | - Имя Secret'а, содержащего учетные данные для подключения к container registry. - namespace: - description: | - Пространство имен, в котором находится imagePullSecret. - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - objectRef: - description: | - Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. - properties: - kind: - description: | - Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. - name: - description: | - Имя существующего `VirtualImage` или `ClusterVirtualImage`. - namespace: - description: | - Имя namespace'а, гда ресположен `VirtualImage`. - status: - properties: - downloadSpeed: - description: | - Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. - properties: - avg: - description: | - Средняя скорость загрузки. - current: - description: | - Текущая скорость загрузки. - avgBytes: - description: | - Средняя скорость загрузки в байтах в секунду. - currentBytes: - description: | - Текущая скорость загрузки в байтах в секунду. - format: - description: | - Обнаруженный формат образа. - size: - description: | - Обнаруженные размеры образа. - properties: - stored: - description: | - Размер образа в DVCR или PVC в человекочитаемом формате. - storedBytes: - description: Размер образа в DVCR или PVC в байтах. - unpacked: - description: | - Размер распакованного образа в человекочитаемом формате. - unpackedBytes: - description: | - Размер распакованного образа в байтах. - cdrom: - description: | - Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. - target: - properties: - registryURL: - description: | - Образ, созданный в DVCR. - phase: - description: | - Текущее состояние ресурса `ClusterVirtualImage`: + * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. + * `ContainerImage` — создать образ из образа в container registry. + * `VirtualImage` — создать новый образ из существующего `VirtualImage`. + * `ClusterVirtualImage` — создать новый образ из существующего `ClusterVirtualImage`. + * `Upload` — загрузить образ вручную, через веб-интерфейс. + status: + properties: + attachedToVirtualMachines: + description: | + Список виртуальных машин, использующих этот образ + cdrom: + description: | + Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. + downloadSpeed: + description: | + Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. + properties: + avg: + description: | + Средняя скорость загрузки. + avgBytes: + description: | + Средняя скорость загрузки в байтах в секунду. + current: + description: | + Текущая скорость загрузки. + currentBytes: + description: | + Текущая скорость загрузки в байтах в секунду. + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + format: + description: | + Обнаруженный формат образа. + phase: + description: | + Текущее состояние ресурса `ClusterVirtualImage`: - * Pending - Ресурс был создан и находится в очереди ожидания. - * Provisioning - Идет процесс создания ресурса (копирование/загрузка/создание образа). - * WaitForUserUpload - Ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. - * Ready - Ресурс создан и готов к использованию. - * Failed - При создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. - * NotReady - Невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. - * ImageLost - Дочернее образ ресурса отсутствует. Ресурс не может быть использован. - progress: - description: | - Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. - uploadCommand: - description: | - Команда для загрузки образа для типа 'Upload'. - failureReason: - description: | - Краткое описание причины ошибки. - failureMessage: - description: | - Подробное описание ошибки. - attachedToVirtualMachines: - description: | - Список виртуальных машин, использующих этот образ + * Pending - Ресурс был создан и находится в очереди ожидания. + * Provisioning - Идет процесс создания ресурса (копирование/загрузка/создание образа). + * WaitForUserUpload - Ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. + * Ready - Ресурс создан и готов к использованию. + * Failed - При создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. + * NotReady - Невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. + * ImageLost - Дочернее образ ресурса отсутствует. Ресурс не может быть использован. + progress: + description: | + Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. + size: + description: | + Обнаруженные размеры образа. + properties: + stored: + description: | + Размер образа в DVCR или PVC в человекочитаемом формате. + storedBytes: + description: Размер образа в DVCR или PVC в байтах. + unpacked: + description: | + Размер распакованного образа в человекочитаемом формате. + unpackedBytes: + description: | + Размер распакованного образа в байтах. + target: + properties: + registryURL: + description: | + Образ, созданный в DVCR. + uploadCommand: + description: | + Команда для загрузки образа для типа 'Upload'. diff --git a/crds/doc-ru-virtualdisk.yaml b/crds/doc-ru-virtualdisk.yaml index 1daf4c764..f64bf85c8 100644 --- a/crds/doc-ru-virtualdisk.yaml +++ b/crds/doc-ru-virtualdisk.yaml @@ -1,148 +1,146 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Описывает диск виртуальной машины, который может быть смонтирован в `VirtualMachines`. После создания ресурса изменить можно только размер диска `.spec.persistentVolumeClaim.size`, все остальные поля неизменяемы. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Описывает диск виртуальной машины, который может быть смонтирован в `VirtualMachines`. После создания ресурса изменить можно только размер диска `.spec.persistentVolumeClaim.size`, все остальные поля неизменяемы. - Под капотом ресурса создается PVC, в который заливаются данные из источника. - properties: - spec: - properties: - persistentVolumeClaim: - description: | - Настройки для создания PVC для хранения диска. - properties: - size: - description: | - Желаемый размер PVC для хранения диска. Если диск создается из образа, то размер должен быть не меньше, чем исходный образ в распакованном состоянии. - storageClassName: - description: | - Имя класса StorageClass, требуемого для PersistentVolumeClaim. Дополнительная информация — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. - dataSource: - description: | - Тип источника, из которого будет создан диск. Если источник (.spec.dataSource) отсутствует, то будет создан пустой диск. - properties: - type: - description: | - Тип источника, из которого будет создан диск: + Под капотом ресурса создается PVC, в который заливаются данные из источника. + properties: + spec: + properties: + dataSource: + description: | + Тип источника, из которого будет создан диск. Если источник (.spec.dataSource) отсутствует, то будет создан пустой диск. + properties: + containerImage: + description: | + Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки подключения к container registry. + image: + description: | + Путь к образу в container registry. + imagePullSecret: + properties: + name: + description: | + Имя Secret'а, содержащего учетные данные для подключения к container registry. + http: + description: | + Создать диск из файла, опубликованного по URL. Поддерживаемые схемы: - * `HTTP` — создать диск из файла, опубликованного на HTTP/HTTPS-сервере. - * `ContainerImage` — создать диск из образа в container registry. - * `VirtualImage` — создать диск из существующего `VirtualImage`. - * `ClusterVirtualImage` — создать диск из существующего `ClusterVirtualImage`. - * `Upload` — загрузить образ диска вручную, через веб-интерфейс. - http: - description: | - Создать диск из файла, опубликованного по URL. Поддерживаемые схемы: + * HTTP; + * HTTPS. - * HTTP; - * HTTPS. + Для схемы HTTPS есть возможность пропустить проверку TLS. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. + checksum: + description: | + Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. + properties: + md5: + description: "" + sha256: + description: "" + insecureSkipVerify: + description: | + Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). + url: + description: | + URL с образом. Поддерживаются следующие типы образов: + * qcow2; + * vmdk; + * vdi; + * iso; + * raw. - Для схемы HTTPS есть возможность пропустить проверку TLS. - properties: - url: - description: | - URL с образом. Поддерживаются следующие типы образов: - * qcow2; - * vmdk; - * vdi; - * iso; - * raw. + Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: + * gz; + * xz. + objectRef: + description: | + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. + properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. + name: + description: | + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + type: + description: | + Тип источника, из которого будет создан диск: - Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: - * gz; - * xz. - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. - insecureSkipVerify: - description: | - Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). - checksum: - type: object - description: | - Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. - properties: - md5: - description: "" - sha256: - description: "" - containerImage: - description: | - Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. - properties: - image: - description: | - Путь к образу в container registry. - imagePullSecret: - properties: - name: - description: | - Имя Secret'а, содержащего учетные данные для подключения к container registry. - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - objectRef: - description: | - Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. - properties: - kind: - description: | - Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. - name: - description: | - Имя существующего `VirtualImage` или `ClusterVirtualImage`. + * `HTTP` — создать диск из файла, опубликованного на HTTP/HTTPS-сервере. + * `ContainerImage` — создать диск из образа в container registry. + * `VirtualImage` — создать диск из существующего `VirtualImage`. + * `ClusterVirtualImage` — создать диск из существующего `ClusterVirtualImage`. + * `Upload` — загрузить образ диска вручную, через веб-интерфейс. + persistentVolumeClaim: + description: | + Настройки для создания PVC для хранения диска. + properties: + size: + description: | + Желаемый размер PVC для хранения диска. Если диск создается из образа, то размер должен быть не меньше, чем исходный образ в распакованном состоянии. + storageClassName: + description: | + Имя класса StorageClass, требуемого для PersistentVolumeClaim. Дополнительная информация — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. + status: + properties: + attachedToVirtualMachines: + description: | + Список виртуальных машин, использующих этот диск + capacity: + description: | + Емкость PVC в человекочитаемом формате. + downloadSpeed: + description: | + Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. + properties: + avg: + description: | + Средняя скорость загрузки. + avgBytes: + description: | + Средняя скорость загрузки в байтах в секунду. + current: + description: | + Текущая скорость загрузки. + currentBytes: + description: | + Текущая скорость загрузки в байтах в секунду. + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + phase: + description: | + Текущее состояние ресурса `VirtualDisk`: - status: - properties: - downloadSpeed: - description: | - Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. - properties: - avg: - description: | - Средняя скорость загрузки. - current: - description: | - Текущая скорость загрузки. - avgBytes: - description: | - Средняя скорость загрузки в байтах в секунду. - currentBytes: - description: | - Текущая скорость загрузки в байтах в секунду. - capacity: - description: | - Емкость PVC в человекочитаемом формате. - target: - properties: - persistentVolumeClaimName: - description: | - Имя созданного PersistentVolumeClaim для хранилища Kubernetes. - phase: - description: | - Текущее состояние ресурса `VirtualDisk`: - - * Pending — ресурс был создан и находится в очереди ожидания. - * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). - * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. - * Ready — ресурс создан и готов к использованию. - * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. - * PVCLost — дочерний PVC ресурса отсутствует. Ресурс не может быть использован. - progress: - description: | - Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. - uploadCommand: - description: | - Команда для загрузки образа для типа 'Upload'. - failureReason: - description: | - Краткое описание причины ошибки. - failureMessage: - description: | - Подробное описание ошибки. - attachedToVirtualMachines: - description: | - Список виртуальных машин, использующих этот диск + * Pending — ресурс был создан и находится в очереди ожидания. + * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). + * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. + * Ready — ресурс создан и готов к использованию. + * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. + * PVCLost — дочерний PVC ресурса отсутствует. Ресурс не может быть использован. + progress: + description: | + Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. + target: + properties: + persistentVolumeClaimName: + description: | + Имя созданного PersistentVolumeClaim для хранилища Kubernetes. + uploadCommand: + description: | + Команда для загрузки образа для типа 'Upload'. diff --git a/crds/doc-ru-virtualimage.yaml b/crds/doc-ru-virtualimage.yaml index bdfa9a3d4..826239729 100644 --- a/crds/doc-ru-virtualimage.yaml +++ b/crds/doc-ru-virtualimage.yaml @@ -1,164 +1,162 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. - > Этот ресурс не может быть изменен после его создания. + > Этот ресурс не может быть изменен после его создания. - Под капотом этого ресурса создается образ контейнера, хранящийся в специальном container registry (DVCR). - properties: - spec: - properties: - storage: - description: | - Тип хранилища для хранения образа: + Под капотом этого ресурса создается образ контейнера, хранящийся в специальном container registry (DVCR). + properties: + spec: + properties: + dataSource: + description: | + Тип источника, из которого будет создан образ. + properties: + containerImage: + description: | + Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки подключения к container registry. + image: + description: | + Путь к образу в container registry. + imagePullSecret: + properties: + name: + description: | + Имя Secret'а, содержащего учетные данные для подключения к container registry. + http: + description: | + Создать образ из файла, опубликованного по URL. Поддерживаемые схемы: - * `ContainerRegistry` — использовать container registry (DVCR). В этом случае образы будут загружаться в контейнер, а затем в DVCR (поставляется с модулем виртуализации). - dataSource: - description: | - Тип источника, из которого будет создан образ. - properties: - type: - description: | - Тип источника, из которого будет создан образ: + * HTTP; + * HTTPS. - * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. - * `ContainerImage` — создать образ из образа в container registry. - * `VirtualImage` — создать образ из другого существующего `VirtualImage`. - * `ClusterVirtualImage` — создать образ из другого существующего `ClusterVirtualImage`. - * `Upload` — загрузить образ вручную, через веб-интерфейс. - http: - description: | - Создать образ из файла, опубликованного по URL. Поддерживаемые схемы: + Для схемы HTTPS есть возможность пропустить проверку TLS. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. + checksum: + description: | + Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. + properties: + md5: + description: "" + sha256: + description: "" + insecureSkipVerify: + description: | + Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). + url: + description: | + URL с образом. Поддерживаются следующие типы образов: + * qcow2; + * vmdk; + * vdi; + * iso; + * raw. - * HTTP; - * HTTPS. + Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: + * gz; + * xz. + objectRef: + description: | + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. + properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. + name: + description: | + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + type: + description: | + Тип источника, из которого будет создан образ: - Для схемы HTTPS есть возможность пропустить проверку TLS. - properties: - url: - description: | - URL с образом. Поддерживаются следующие типы образов: - * qcow2; - * vmdk; - * vdi; - * iso; - * raw. + * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. + * `ContainerImage` — создать образ из образа в container registry. + * `VirtualImage` — создать образ из другого существующего `VirtualImage`. + * `ClusterVirtualImage` — создать образ из другого существующего `ClusterVirtualImage`. + * `Upload` — загрузить образ вручную, через веб-интерфейс. + storage: + description: | + Тип хранилища для хранения образа: - Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: - * gz; - * xz. - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. - insecureSkipVerify: - description: | - Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). - checksum: - description: | - Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. - properties: - md5: - description: "" - sha256: - description: "" - containerImage: - description: | - Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. - properties: - image: - description: | - Путь к образу в container registry. - imagePullSecret: - properties: - name: - description: | - Имя Secret'а, содержащего учетные данные для подключения к container registry. - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - objectRef: - description: | - Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. - properties: - kind: - description: | - Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. - name: - description: | - Имя существующего `VirtualImage` или `ClusterVirtualImage`. - status: - type: object - properties: - downloadSpeed: - description: | - Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. - properties: - avg: - description: | - Средняя скорость загрузки. - current: - description: | - Текущая скорость загрузки. - avgBytes: - description: | - Средняя скорость загрузки в байтах в секунду. - currentBytes: - description: | - Текущая скорость загрузки в байтах в секунду. - format: - description: | - Обнаруженный формат образа. - size: - description: | - Обнаруженные размеры образа. - properties: - stored: - description: | - Размер образа в DVCR в человекочитаемом формате. - storedBytes: - description: Размер образа в DVCR в байтах. - unpacked: - description: | - Размер распакованного образа в человекочитаемом формате. - unpackedBytes: - description: | - Размер распакованного образа в байтах. - cdrom: - description: | - Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. - target: - properties: - registryURL: - description: | - Образ, созданный в DVCR. - phase: - description: | - Текущее состояние ресурса `VirtualImage`: + * `ContainerRegistry` — использовать container registry (DVCR). В этом случае образы будут загружаться в контейнер, а затем в DVCR (поставляется с модулем виртуализации). + status: + properties: + attachedToVirtualMachines: + description: | + Список виртуальных машин, использующих этот образ + cdrom: + description: | + Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. + downloadSpeed: + description: | + Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. + properties: + avg: + description: | + Средняя скорость загрузки. + avgBytes: + description: | + Средняя скорость загрузки в байтах в секунду. + current: + description: | + Текущая скорость загрузки. + currentBytes: + description: | + Текущая скорость загрузки в байтах в секунду. + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + format: + description: | + Обнаруженный формат образа. + phase: + description: | + Текущее состояние ресурса `VirtualImage`: - * Pending — ресурс был создан и находится в очереди ожидания. - * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). - * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. - * Ready — ресурс создан и готов к использованию. - * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. - * NotReady — невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. - * ImageLost — дочерний образ ресурса отсутствует. Ресурс не может быть использован. - - progress: - description: | - Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. - uploadCommand: - description: | - Команда для загрузки образа для типа 'Upload'. - failureReason: - description: | - Краткое описание причины ошибки. - failureMessage: - description: | - Подробное описание ошибки. - attachedToVirtualMachines: - description: | - Список виртуальных машин, использующих этот образ + * Pending — ресурс был создан и находится в очереди ожидания. + * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). + * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. + * Ready — ресурс создан и готов к использованию. + * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. + * NotReady — невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. + * ImageLost — дочерний образ ресурса отсутствует. Ресурс не может быть использован. + progress: + description: | + Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. + size: + description: | + Обнаруженные размеры образа. + properties: + stored: + description: | + Размер образа в DVCR в человекочитаемом формате. + storedBytes: + description: Размер образа в DVCR в байтах. + unpacked: + description: | + Размер распакованного образа в человекочитаемом формате. + unpackedBytes: + description: | + Размер распакованного образа в байтах. + target: + properties: + registryURL: + description: | + Образ, созданный в DVCR. + uploadCommand: + description: | + Команда для загрузки образа для типа 'Upload'. diff --git a/crds/doc-ru-virtualmachine.yaml b/crds/doc-ru-virtualmachine.yaml index 623ecc22c..219fcdb1f 100644 --- a/crds/doc-ru-virtualmachine.yaml +++ b/crds/doc-ru-virtualmachine.yaml @@ -1,612 +1,596 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Конфигурация виртуальной машины (ВМ). - properties: - spec: - properties: - provisioning: - description: | - Блок описания сценария начальной инициализации ВМ. - properties: - type: - description: | - Поддерживаемые параметры для использования сценария инициализации: - - * UserData — использовать сценарий cloud-init в секции .spec.provisioning.UserData. - * UserDataRef — использовать сценарий cloud-init, который находится в другом ресурсе. - * SysprepRef — использовать сценарий автоматизации установки Windows, который находится в другом ресурсе. - - userData: - description: | - Текст сценария cloud-init. - - Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html - userDataRef: - description: | - Ссылка на существующий ресурс со сценарием cloud-init. - - Структура ресурса для типа userDataRef: - - * `.data.userData` - properties: - kind: - description: | - Тип ресурса. - name: - description: | - Имя ресурса со сценарием cloud-init. - sysprepRef: - description: | - Ссылка на существующий ресурс со сценарием автоматизации Windows. - - Структура ресурса для типа SysprepRef: - - * `.data.autounattend.xml` - * `.data.unattend.xml` - properties: - kind: - description: | - Тип ресурса. - name: - description: | - Имя ресурса со сценарием автоматизации. - runPolicy: - description: | - Этот параметр определяет политику запуска ВМ: - - * `AlwaysOn` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС. - * `AlwaysOff` — после создания ВМ всегда находится в выключенном состоянии. - * `Manual` — после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС. - * `AlwaysOnUnlessStoppedManually` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС, ВМ может быть выключена с помощью соответствующего API-сервиса. - - virtualMachineIPAddressClaimName: - description: | - Имя для связанного ресурса `virtualMachineIPAddressClaim`. - - Указывается при необходимости использования ранее созданного IP-адреса ВМ. - - Если не указано явно, по умолчанию для ВМ создается ресурс `virtualMachineIPAddressClaim` с именем аналогичным ресурсу ВМ (`.metadata.name`). - - topologySpreadConstraints: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/), как и в параметре pods `spec.topologySpreadConstraints` в Kubernetes. - - items: + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Конфигурация виртуальной машины (ВМ). + properties: + spec: + properties: + affinity: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity), как и в параметре pods `spec.affinity` в Kubernetes. + + Настройка Affinity полностью аналогична приведенной выше документации, разница лишь в названиях некоторых параметров. Фактически, используются следующие аналоги: + * podAffinity -> virtualMachineAndPodAffinity; + * podAffinityTerm -> virtualMachineAndPodAffinityTerm. + properties: + nodeAffinity: + description: Описывает правила affiniy узлов для ВМ. properties: - labelSelector: + preferredDuringSchedulingIgnoredDuringExecution: description: "" - properties: - matchExpressions: - description: "" - items: + items: + description: "" + properties: + preference: + description: "" properties: - key: - description: "" - operator: + matchExpressions: description: "" - values: + items: + description: "" + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + matchFields: description: "" items: description: "" - matchLabels: - additionalProperties: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + weight: description: "" - description: "" - maxSkew: - description: "" - topologyKey: - description: "" - whenUnsatisfiable: + requiredDuringSchedulingIgnoredDuringExecution: description: "" - - affinity: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity), как и в параметре pods `spec.affinity` в Kubernetes. - - Настройка Affinity полностью аналогична приведенной выше документации, разница лишь в названиях некоторых параметров. Фактически, используются следующие аналоги: - * podAffinity -> virtualMachineAndPodAffinity; - * podAffinityTerm -> virtualMachineAndPodAffinityTerm. - properties: - nodeAffinity: - description: Описывает правила affiniy узлов для ВМ. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: "" - items: + properties: + nodeSelectorTerms: description: "" - properties: - preference: - description: "" - properties: - matchExpressions: + items: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchFields: + matchFields: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - weight: - description: "" - requiredDuringSchedulingIgnoredDuringExecution: + virtualMachineAndPodAffinity: + description: Описывает правила affiniy подов и ВМ. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: "" + items: description: "" properties: - nodeSelectorTerms: + virtualMachineAndPodAffinityTerm: description: "" - items: - description: "" - properties: - matchExpressions: - description: "" - items: + properties: + labelSelector: + description: "" + properties: + matchExpressions: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: description: "" - matchFields: - description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + operator: description: "" - virtualMachineAndPodAffinity: - description: Описывает правила affiniy подов и ВМ. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: "" - items: - description: "" - properties: - virtualMachineAndPodAffinityTerm: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: - description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - matchLabelKeys: - description: "" - items: description: "" - mismatchLabelKeys: + matchLabelKeys: + description: "" + items: description: "" - items: - description: "" - namespaceSelector: + mismatchLabelKeys: + description: "" + items: description: "" - properties: - matchExpressions: + namespaceSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - namespaces: - description: "" - items: description: "" - topologyKey: + namespaces: + description: "" + items: description: "" - weight: - description: "" - requiredDuringSchedulingIgnoredDuringExecution: + topologyKey: + description: "" + weight: + description: "" + requiredDuringSchedulingIgnoredDuringExecution: + description: "" + items: description: "" - items: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: + properties: + labelSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - matchLabelKeys: - description: "" - items: description: "" - mismatchLabelKeys: + matchLabelKeys: + description: "" + items: description: "" - items: - description: "" - namespaceSelector: + mismatchLabelKeys: + description: "" + items: description: "" - properties: - matchExpressions: + namespaceSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - namespaces: - description: "" - items: description: "" - topologyKey: + namespaces: + description: "" + items: description: "" - virtualMachineAndPodAntiAffinity: - description: Описывает правила anti-affiniy пода и ВМ. - properties: - preferredDuringSchedulingIgnoredDuringExecution: + topologyKey: + description: "" + virtualMachineAndPodAntiAffinity: + description: Описывает правила anti-affiniy пода и ВМ. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: "" + items: description: "" - items: - description: "" - properties: - virtualMachineAndPodAffinityTerm: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: + properties: + virtualMachineAndPodAffinityTerm: + description: "" + properties: + labelSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - matchLabelKeys: - description: "" - items: description: "" - mismatchLabelKeys: + matchLabelKeys: + description: "" + items: description: "" - items: - description: "" - namespaceSelector: + mismatchLabelKeys: + description: "" + items: description: "" - properties: - matchExpressions: + namespaceSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - namespaces: - description: "" - items: description: "" - topologyKey: + namespaces: + description: "" + items: description: "" - weight: - description: "" - requiredDuringSchedulingIgnoredDuringExecution: + topologyKey: + description: "" + weight: + description: "" + requiredDuringSchedulingIgnoredDuringExecution: + description: "" + items: description: "" - items: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: + properties: + labelSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - matchLabelKeys: - description: "" - items: description: "" - mismatchLabelKeys: + matchLabelKeys: + description: "" + items: description: "" - items: - description: "" - namespaceSelector: + mismatchLabelKeys: + description: "" + items: description: "" - properties: - matchExpressions: + namespaceSelector: + description: "" + properties: + matchExpressions: + description: "" + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - namespaces: - description: "" - items: description: "" - topologyKey: + namespaces: + description: "" + items: description: "" + topologyKey: + description: "" + blockDeviceRefs: + description: | + Список блочных устройств, которые могут быть смонтированы в ВМ. - nodeSelector: - description: | - [По аналогии](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes//), как и в параметре pods `spec.nodeSelector` в Kubernetes. - - priorityClassName: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/), как и в параметре pods `spec.priorityClassName` в Kubernetes. - - tolerations: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/), как и в параметре pods `spec.tolerations` в Kubernetes. - - items: - description: "" - properties: - effect: - description: "" - key: - description: "" - operator: - description: "" - tolerationSeconds: - description: "" - value: - description: "" - - disruptions: - description: | - Описании политики применения изменений, требующих перезагрузки ВМ. - - Изменение некоторых параметров конфигурации ВМ требуют перезагрузки ВМ для их применения. Данная политика позволяет задать поведения, как ВМ будет реагировать на такие изменения. - properties: - restartApprovalMode: - description: | - Режим одобрения для изменений, требующих перезагрузки ВМ: - - - `Manual` — изменения не будут применены, до тех пока пользователь самостоятельно не осуществит перезагрузку ВМ. - - `Автоматический` — ВМ будет перезагружена, сразу, после сохранения параметров, требующих перезагрузки ВМ. - - terminationGracePeriodSeconds: - description: | - Период ожидания после подачи сигнала (SIGTERM) о прекращении работы ВМ, по истечении которого ВМ принудительно завершается. - - enableParavirtualization: - description: | - Использовать шину `virtio` для подключения виртуальных устройств ВМ. Установите значение false, чтобы отключить `virtio` для этой ВМ. - - Внимание: Для использования режима паравиртуализации некоторые ОС требуют установки соответствующих драйверов. - - - osType: - description: | - Параметр позволяет выбрать тип используемой ОС, для которой будет создана ВМ с оптимальным набором необходимых виртуальных устройств и параметров. - - * Windows — для ОС семейства Microsoft Windows. - * Generic — для других типов ОС. - - bootloader: - description: | - Загрузчик для VM: - - * BIOS — использовать BIOS. - * EFI — использовать Unified Extensible Firmware (EFI/UEFI). - * EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot. - - cpu: + Порядок загрузки определяется порядком в списке. + items: description: | - Блок определяет настройки ЦП для виртуальной машины. + The reference to block device. properties: - virtualMachineCPUModelName: - description: | - Имя ресурса `virtualMachineCPUModelName`, определяющего модель процессора для виртуальной машины. - cores: - description: | - Количество ядер. - coreFraction: + kind: description: | - Гарантированная доля времени ЦП, которая будет выделена ВМ. Указывается в процентах. + Поддерживаемые типы: - memory: - description: | - Блок определяет настройки оперативной памяти для виртуальной машины. - properties: - size: + * `ClusterVirtualImage` — использовать `ClusterVirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. + * `VirtualImage` — использовать `VirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. + * `VirtualDisk` — используйте `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite). + name: description: | - Объем оперативной памяти. - - blockDeviceRefs: - description: | - Список блочных устройств, которые могут быть смонтированы в ВМ. - - Порядок загрузки определяется порядком в списке. - items: + Имя ресурса заданного типа. + bootloader: + description: | + Загрузчик для VM: + + * BIOS — использовать BIOS. + * EFI — использовать Unified Extensible Firmware (EFI/UEFI). + * EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot. + cpu: + description: | + Блок определяет настройки ЦП для виртуальной машины. + properties: + coreFraction: + description: | + Гарантированная доля времени ЦП, которая будет выделена ВМ. Указывается в процентах. + cores: + description: | + Количество ядер. + virtualMachineCPUModelName: + description: | + Имя ресурса `virtualMachineCPUModelName`, определяющего модель процессора для виртуальной машины. + disruptions: + description: | + Описании политики применения изменений, требующих перезагрузки ВМ. + + Изменение некоторых параметров конфигурации ВМ требуют перезагрузки ВМ для их применения. Данная политика позволяет задать поведения, как ВМ будет реагировать на такие изменения. + properties: + restartApprovalMode: + description: | + Режим одобрения для изменений, требующих перезагрузки ВМ: + + - `Manual` — изменения не будут применены, до тех пока пользователь самостоятельно не осуществит перезагрузку ВМ. + - `Автоматический` — ВМ будет перезагружена, сразу, после сохранения параметров, требующих перезагрузки ВМ. + enableParavirtualization: + description: | + Использовать шину `virtio` для подключения виртуальных устройств ВМ. Установите значение false, чтобы отключить `virtio` для этой ВМ. + + Внимание: Для использования режима паравиртуализации некоторые ОС требуют установки соответствующих драйверов. + memory: + description: | + Блок определяет настройки оперативной памяти для виртуальной машины. + properties: + size: + description: | + Объем оперативной памяти. + nodeSelector: + description: | + [По аналогии](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes//), как и в параметре pods `spec.nodeSelector` в Kubernetes. + osType: + description: | + Параметр позволяет выбрать тип используемой ОС, для которой будет создана ВМ с оптимальным набором необходимых виртуальных устройств и параметров. + + * Windows — для ОС семейства Microsoft Windows. + * Generic — для других типов ОС. + priorityClassName: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/), как и в параметре pods `spec.priorityClassName` в Kubernetes. + provisioning: + description: | + Блок описания сценария начальной инициализации ВМ. + properties: + sysprepRef: + description: | + Ссылка на существующий ресурс со сценарием автоматизации Windows. + + Структура ресурса для типа SysprepRef: + + * `.data.autounattend.xml` + * `.data.unattend.xml` properties: kind: description: | - Поддерживаемые типы: - - * `ClusterVirtualImage` — использовать `ClusterVirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. - * `VirtualImage` — использовать `VirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. - * `VirtualDisk` — используйте `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite). + Тип ресурса. name: description: | - Имя ресурса заданного типа. - status: - properties: - guestOSInfo: - description: | - Информация об гостевой ОС, полученная от агента (QEMU Guest Agent). Агент должен быть предварительно установлен. - - Больше информации об агенте можно прочитать тут: https://www.qemu.org/docs/master/interop/qemu-ga.html. - phase: - description: | - Текущая фаза виртуальной машины: - - * `Scheduling` — ВМ запланирована для размещения на узлах кластера. - * `Pending` — осуществляется процесс запуска ВМ. - * `Running` — ВМ запущенна. - * `Failed` — произошла ошибка в процессе запуска или работы ВМ. - * `Terminating` — в настоящий момент ВМ завершает свою работу. - * `Stopped` — ВМ остановлена. - nodeName: - description: | - Имя узла, на котором в данный момент запущена ВМ. - virtualMachineIPAddressClaimName: - description: | - Имя `virtualMachineIPAddressClaimName`, содержащее IP-адрес виртуальной машины. - ipAddress: - description: | - IP-адрес ВМ. - blockDeviceRefs: - description: | - Список блочных устройств, подключенных к ВМ. - items: + Имя ресурса со сценарием автоматизации. + type: + description: | + Поддерживаемые параметры для использования сценария инициализации: + + * UserData — использовать сценарий cloud-init в секции .spec.provisioning.UserData. + * UserDataRef — использовать сценарий cloud-init, который находится в другом ресурсе. + * SysprepRef — использовать сценарий автоматизации установки Windows, который находится в другом ресурсе. + userData: + description: | + Текст сценария cloud-init. + + Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html + userDataRef: + description: | + Ссылка на существующий ресурс со сценарием cloud-init. + + Структура ресурса для типа userDataRef: + + * `.data.userData` properties: - hotpluggable: - description: | - Блочное устройство доступно для горячего подключения. kind: description: | - Тип блочного устройства. + Тип ресурса. name: description: | - Имя существующего ресурса. - target: - description: | - Название подключенного блочного устройства. - size: - description: | - Размер подключенного блочного устройства. - conditions: - description: | - Состояния во время работы виртуальной машины. - items: - properties: - lastProbeTime: - description: "" - lastTransitionTime: - description: "" - message: - description: "" - reason: - description: "" - status: - description: "" - type: - description: "" - message: - description: | - Детальное описание состояния ВМ. - restartAwaitingChanges: - description: | - Список изменений в конфигурации, требующий перезапуска ВМ. + Имя ресурса со сценарием cloud-init. + runPolicy: + description: | + Этот параметр определяет политику запуска ВМ: + + * `AlwaysOn` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС. + * `AlwaysOff` — после создания ВМ всегда находится в выключенном состоянии. + * `Manual` — после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС. + * `AlwaysOnUnlessStoppedManually` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС, ВМ может быть выключена с помощью соответствующего API-сервиса. + terminationGracePeriodSeconds: + description: | + Период ожидания после подачи сигнала (SIGTERM) о прекращении работы ВМ, по истечении которого ВМ принудительно завершается. + tolerations: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/), как и в параметре pods `spec.tolerations` в Kubernetes. + items: + description: "" + properties: + effect: + description: "" + key: + description: "" + operator: + description: "" + tolerationSeconds: + description: "" + value: + description: "" + topologySpreadConstraints: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/), как и в параметре pods `spec.topologySpreadConstraints` в Kubernetes. + items: + properties: + labelSelector: + description: "" + properties: + matchExpressions: + description: "" + items: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + matchLabels: + additionalProperties: + description: "" + description: "" + maxSkew: + description: "" + topologyKey: + description: "" + whenUnsatisfiable: + description: "" + virtualMachineIPAddressClaimName: + description: | + Имя для связанного ресурса `virtualMachineIPAddressClaim`. + + Указывается при необходимости использования ранее созданного IP-адреса ВМ. + + Если не указано явно, по умолчанию для ВМ создается ресурс `virtualMachineIPAddressClaim` с именем аналогичным ресурсу ВМ (`.metadata.name`). + status: + properties: + blockDeviceRefs: + description: | + Список блочных устройств, подключенных к ВМ. + items: + properties: + hotpluggable: + description: | + Блочное устройство доступно для горячего подключения. + kind: + description: | + Тип блочного устройства. + name: + description: | + Имя существующего ресурса. + size: + description: | + Размер подключенного блочного устройства. + target: + description: | + Название подключенного блочного устройства. + conditions: + description: | + Состояния во время работы виртуальной машины. + items: + properties: + lastProbeTime: + description: "" + lastTransitionTime: + description: "" + message: + description: "" + reason: + description: "" + status: + description: "" + type: + description: "" + guestOSInfo: + description: | + Информация об гостевой ОС, полученная от агента (QEMU Guest Agent). Агент должен быть предварительно установлен. + + Больше информации об агенте можно прочитать тут: https://www.qemu.org/docs/master/interop/qemu-ga.html. + ipAddress: + description: | + IP-адрес ВМ. + message: + description: | + Детальное описание состояния ВМ. + nodeName: + description: | + Имя узла, на котором в данный момент запущена ВМ. + phase: + description: | + Текущая фаза виртуальной машины: + + * `Scheduling` — ВМ запланирована для размещения на узлах кластера. + * `Pending` — осуществляется процесс запуска ВМ. + * `Running` — ВМ запущенна. + * `Failed` — произошла ошибка в процессе запуска или работы ВМ. + * `Terminating` — в настоящий момент ВМ завершает свою работу. + * `Stopped` — ВМ остановлена. + restartAwaitingChanges: + description: | + Список изменений в конфигурации, требующий перезапуска ВМ. + virtualMachineIPAddressClaimName: + description: | + Имя `virtualMachineIPAddressClaimName`, содержащее IP-адрес виртуальной машины. diff --git a/crds/doc-ru-virtualmachineblockdeviceattachment.yaml b/crds/doc-ru-virtualmachineblockdeviceattachment.yaml index 83c055612..d31bcd1c8 100644 --- a/crds/doc-ru-virtualmachineblockdeviceattachment.yaml +++ b/crds/doc-ru-virtualmachineblockdeviceattachment.yaml @@ -1,43 +1,43 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Ресурс обеспечивает возможность «горячего» подключения диска к ВМ. - properties: - spec: - properties: - virtualMachineName: - description: | - Имя виртуальной машины, к которой подключен диск. - blockDeviceRef: - description: | - Блочное устройство, которое будет подключено к ВМ в качестве диска hotPlug. - properties: - kind: - description: | - Тип блочного устройства. Возможны следующие варианты: + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Ресурс обеспечивает возможность «горячего» подключения диска к ВМ. + properties: + spec: + properties: + blockDeviceRef: + description: | + Блочное устройство, которое будет подключено к ВМ в качестве диска hotPlug. + properties: + kind: + description: | + Тип блочного устройства. Возможны следующие варианты: - * `VirtualDisk` — использовать `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме RW. - name: - description: | - Имя блочного устройства - status: - properties: - virtualMachineName: - description: | - Имя виртуальной машины, к которой подключен этот диск. - phase: - description: | - Фаза ресурса: + * `VirtualDisk` — использовать `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме RW. + name: + description: | + Имя блочного устройства + virtualMachineName: + description: | + Имя виртуальной машины, к которой подключен диск. + status: + properties: + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + phase: + description: | + Фаза ресурса: - * InProgress — диск в процессе подключения к ВМ. - * Attached — диск подключен к ВМ. - * Failed — возникла проблема с подключением диска. Смотрите `.status.failureReason`. - failureReason: - description: | - Краткое описание причины ошибки. - failureMessage: - description: | - Подробное описание ошибки. + * InProgress — диск в процессе подключения к ВМ. + * Attached — диск подключен к ВМ. + * Failed — возникла проблема с подключением диска. Смотрите `.status.failureReason`. + virtualMachineName: + description: | + Имя виртуальной машины, к которой подключен этот диск. diff --git a/crds/doc-ru-virtualmachinecpumodel.yaml b/crds/doc-ru-virtualmachinecpumodel.yaml index 3e68e43df..153127b0c 100644 --- a/crds/doc-ru-virtualmachinecpumodel.yaml +++ b/crds/doc-ru-virtualmachinecpumodel.yaml @@ -1,50 +1,46 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. - properties: - spec: - properties: - features: - description: | - Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) - items: {} - model: - description: | - Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) - type: - description: | - В качестве типа ресурса, поддерживаются следующие варианты: - * Host - использовать физический процессор хоста. - * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. - * Features - необходимый набор поддерживаемых инструкций для процессора. - status: - properties: - features: - description: | - Информация о поддерживаемых наборах инструкций процессора для данной модели. - Отображается только для `type=Features`. - properties: - enabled: - description: | - Список наборов инструкций процессора для данной модели. - items: {} - notEnabledCommon: - description: | - Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. - items: {} - nodes: - description: | - Список узлов, поддерживающих данную модель процессора. - Не отображается для `type=Host`. - items: {} - phase: - description: | - Текущий статус ресурса `VirtualMachineCPUModel`: - * Pending - ресурс находится в очереди на обработку. - * InProgress - ресурс находится в процессе создания. - * Ready - ресурс успешно создан. - * Failed - в процессе создания ресурса произошла ошибка. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. + properties: + spec: + properties: + features: + description: | + Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + model: + description: | + Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + type: + description: | + В качестве типа ресурса, поддерживаются следующие варианты: + * Host - использовать физический процессор хоста. + * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. + * Features - необходимый набор поддерживаемых инструкций для процессора. + status: + properties: + features: + description: | + Информация о поддерживаемых наборах инструкций процессора для данной модели. + Отображается только для `type=Features`. + properties: + enabled: + description: | + Список наборов инструкций процессора для данной модели. + notEnabledCommon: + description: | + Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. + nodes: + description: | + Список узлов, поддерживающих данную модель процессора. + Не отображается для `type=Host`. + phase: + description: | + Текущий статус ресурса `VirtualMachineCPUModel`: + * Pending - ресурс находится в очереди на обработку. + * InProgress - ресурс находится в процессе создания. + * Ready - ресурс успешно создан. + * Failed - в процессе создания ресурса произошла ошибка. diff --git a/crds/doc-ru-virtualmachineipaddressclaim.yaml b/crds/doc-ru-virtualmachineipaddressclaim.yaml index 9a5c7ec83..0fbd97435 100644 --- a/crds/doc-ru-virtualmachineipaddressclaim.yaml +++ b/crds/doc-ru-virtualmachineipaddressclaim.yaml @@ -1,46 +1,46 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Ресурс, определяющий IP-адрес для виртуальной машины. - properties: - spec: - description: | - Настройки `VirtualMachineIPAddressClaim`. - properties: - address: - description: | - Запрашиваемый IP-адрес. Если это значение не задано, будет назначен следующий доступный IP-адрес. - virtualMachineIPAddressLeaseName: - description: | - Имя выданного `VirtualMachineIPAddressLease`, управляется автоматически. - reclaimPolicy: - description: | - Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Ресурс, определяющий IP-адрес для виртуальной машины. + properties: + spec: + description: | + Настройки `VirtualMachineIPAddressClaim`. + properties: + address: + description: | + Запрашиваемый IP-адрес. Если это значение не задано, будет назначен следующий доступный IP-адрес. + reclaimPolicy: + description: | + Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. - * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. + * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. - * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. - status: - description: | - Состояние ресурса `VirtualMachineIPAddressClaim`. - properties: - address: - description: | - Назначенный IP-адрес. - virtualMachineName: - description: | - Имя виртуальной машины, которая в настоящее время использует этот IP-адрес. - phase: - description: | - Представляет текущее состояние ресурса `VirtualMachineIPAddressClaim`. + * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. + virtualMachineIPAddressLeaseName: + description: | + Имя выданного `VirtualMachineIPAddressLease`, управляется автоматически. + status: + description: | + Состояние ресурса `VirtualMachineIPAddressClaim`. + properties: + address: + description: | + Назначенный IP-адрес. + conflictMessage: + description: | + Подробное описание ошибки. + phase: + description: | + Представляет текущее состояние ресурса `VirtualMachineIPAddressClaim`. - * Pending - создание ресурса находится в процессе выполнения. - * Bound - ресурс `VirtualMachineIPAddressClaim` привязан к ресурсу `VirtualMachineIPAddressLease`. - * Lost - ресурс `VirtualMachineIPAddressClaim` потерял свойю связку с `VirtualMachineIPAddressLease`. - * Conflict - `VirtualMachineIPAddressLease` уже привязан к другом ресурсу `VirtualMachineIPAddressClaim`. - conflictMessage: - description: | - Подробное описание ошибки. + * Pending - создание ресурса находится в процессе выполнения. + * Bound - ресурс `VirtualMachineIPAddressClaim` привязан к ресурсу `VirtualMachineIPAddressLease`. + * Lost - ресурс `VirtualMachineIPAddressClaim` потерял свойю связку с `VirtualMachineIPAddressLease`. + * Conflict - `VirtualMachineIPAddressLease` уже привязан к другом ресурсу `VirtualMachineIPAddressClaim`. + virtualMachineName: + description: | + Имя виртуальной машины, которая в настоящее время использует этот IP-адрес. diff --git a/crds/doc-ru-virtualmachineipaddresslease.yaml b/crds/doc-ru-virtualmachineipaddresslease.yaml index 924337f14..3313d35d1 100644 --- a/crds/doc-ru-virtualmachineipaddresslease.yaml +++ b/crds/doc-ru-virtualmachineipaddresslease.yaml @@ -1,39 +1,39 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Ресурс, определяющий факт выданной аренды для `VirtualMachineIPAddressClaim`. - properties: - spec: - description: | - Параметры конфигурации `VirtualMachineIPAddressLease`. - properties: - reclaimPolicy: - description: | - Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Ресурс, определяющий факт выданной аренды для `VirtualMachineIPAddressClaim`. + properties: + spec: + description: | + Параметры конфигурации `VirtualMachineIPAddressLease`. + properties: + claimRef: + description: | + Ссылка на существующие `VirtualMachineIPAddressClaim`. + properties: + name: + description: | + Имя ссылающегося `VirtualMachineIPAddressClaim`. + namespace: + description: | + Пространство имен ссылающегося `VirtualMachineIPAddressClaim`. + reclaimPolicy: + description: | + Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. - * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. + * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. - * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. - claimRef: - description: | - Ссылка на существующие `VirtualMachineIPAddressClaim`. - properties: - name: - description: | - Имя ссылающегося `VirtualMachineIPAddressClaim`. - namespace: - description: | - Пространство имен ссылающегося `VirtualMachineIPAddressClaim`. - status: - description: | - Состояние ресурса `VirtualMachineIPAddressLease`. - properties: - phase: - description: | - Представляет текущее состояние ресурса `VirtualMachineIPAddressLease`. + * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. + status: + description: | + Состояние ресурса `VirtualMachineIPAddressLease`. + properties: + phase: + description: | + Представляет текущее состояние ресурса `VirtualMachineIPAddressLease`. - * Bound - ресурс `VirtualMachineIPAddressLease` привязан к ресурсу `VirtualMachineIPAddressClaim`. - * Released - ресурс `VirtualMachineIPAddressLease` доступен для связки с новым ресурсом `VirtualMachineIPAddressClaim`. + * Bound - ресурс `VirtualMachineIPAddressLease` привязан к ресурсу `VirtualMachineIPAddressClaim`. + * Released - ресурс `VirtualMachineIPAddressLease` доступен для связки с новым ресурсом `VirtualMachineIPAddressClaim`. From 322f4fcad72643d9827ffea1345659bb9c6c372b Mon Sep 17 00:00:00 2001 From: Isteb4k <dmitry.rakitin@flant.com> Date: Mon, 20 May 2024 13:40:06 +0200 Subject: [PATCH 11/13] test(vm): fix vm matching Signed-off-by: Isteb4k <dmitry.rakitin@flant.com> Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- .../pkg/controller/vm_reconciler_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/images/virtualization-artifact/pkg/controller/vm_reconciler_test.go b/images/virtualization-artifact/pkg/controller/vm_reconciler_test.go index b15e7a7d0..657b3a7bd 100644 --- a/images/virtualization-artifact/pkg/controller/vm_reconciler_test.go +++ b/images/virtualization-artifact/pkg/controller/vm_reconciler_test.go @@ -694,14 +694,14 @@ var _ = Describe("Apply VM changes with manual approval", func() { "path": Equal("cpu"), "operation": Equal(string(vmchange.ChangeReplace)), "currentValue": MatchAllKeys(Keys{ - "virtualMachineCPUModel": BeEquivalentTo(vmcpuName), - "cores": BeEquivalentTo(cpuStartingCores), - "coreFraction": Equal(cpuStartingCoreFraction), + "virtualMachineCPUModelName": BeEquivalentTo(vmcpuName), + "cores": BeEquivalentTo(cpuStartingCores), + "coreFraction": Equal(cpuStartingCoreFraction), }), "desiredValue": MatchAllKeys(Keys{ - "virtualMachineCPUModel": BeEquivalentTo(vmcpuName), - "cores": BeEquivalentTo(cpuNewCores), - "coreFraction": Equal(cpuNewCoreFraction), + "virtualMachineCPUModelName": BeEquivalentTo(vmcpuName), + "cores": BeEquivalentTo(cpuNewCores), + "coreFraction": Equal(cpuNewCoreFraction), }), }), "memory.size": MatchAllKeys(Keys{ From 847eaff59d90977c90e9e88f0a6a729d91a47166 Mon Sep 17 00:00:00 2001 From: Isteb4k <dmitry.rakitin@flant.com> Date: Mon, 20 May 2024 13:43:17 +0200 Subject: [PATCH 12/13] docs(api): fix linter warnings Signed-off-by: Isteb4k <dmitry.rakitin@flant.com> Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- crds/doc-ru-clustervirtualimage.yaml | 312 ++--- crds/doc-ru-virtualdisk.yaml | 276 ++--- crds/doc-ru-virtualimage.yaml | 304 ++--- crds/doc-ru-virtualmachine.yaml | 1014 ++++++++--------- ...u-virtualmachineblockdeviceattachment.yaml | 78 +- crds/doc-ru-virtualmachinecpumodel.yaml | 88 +- crds/doc-ru-virtualmachineipaddressclaim.yaml | 82 +- crds/doc-ru-virtualmachineipaddresslease.yaml | 68 +- 8 files changed, 1111 insertions(+), 1111 deletions(-) diff --git a/crds/doc-ru-clustervirtualimage.yaml b/crds/doc-ru-clustervirtualimage.yaml index 105e96c72..c678a9c4e 100644 --- a/crds/doc-ru-clustervirtualimage.yaml +++ b/crds/doc-ru-clustervirtualimage.yaml @@ -1,165 +1,165 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. Этот тип ресурса доступен для всех пространств имен в кластере. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. Этот тип ресурса доступен для всех пространств имен в кластере. - > Этот ресурс не может быть изменен после его создания. + > Этот ресурс не может быть изменен после его создания. - Под капотом этого ресурса создается образ контейнера, который хранится в специальном container registry (DVCR). - properties: - spec: - properties: - dataSource: - description: | - Тип источника, из которого будет создан образ. - properties: - containerImage: - description: | - Использование образа, хранящегося во внешнем реестре контейнеров. - Поддерживаются только реестры контейнеров с включенным TLS. - При необходимости используйте поле caBundle, чтобы предоставить собственную цепочку центров сертификации. - properties: - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - image: - description: | - Путь к образу в container registry. - imagePullSecret: - properties: - name: - description: | - Имя Secret'а, содержащего учетные данные для подключения к container registry. - namespace: - description: | - Пространство имен, в котором находится imagePullSecret. - http: - description: | - Создание образа из файла, опубликованного по URL. Поддерживаемые схемы: + Под капотом этого ресурса создается образ контейнера, который хранится в специальном container registry (DVCR). + properties: + spec: + properties: + dataSource: + description: | + Тип источника, из которого будет создан образ. + properties: + containerImage: + description: | + Использование образа, хранящегося во внешнем реестре контейнеров. + Поддерживаются только реестры контейнеров с включенным TLS. + При необходимости используйте поле caBundle, чтобы предоставить собственную цепочку центров сертификации. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки подключения к container registry. + image: + description: | + Путь к образу в container registry. + imagePullSecret: + properties: + name: + description: | + Имя Secret'а, содержащего учетные данные для подключения к container registry. + namespace: + description: | + Пространство имен, в котором находится imagePullSecret. + http: + description: | + Создание образа из файла, опубликованного по URL. Поддерживаемые схемы: - * HTTP; - * HTTPS. + * HTTP; + * HTTPS. - Для схемы HTTPS есть возможность отключить проверку TLS. - properties: - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. - checksum: - description: | - Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. - properties: - md5: - description: "" - sha256: - description: "" - insecureSkipVerify: - description: | - Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). - url: - description: | - Для образа расположенного по URL, поддерживаются следующие типы образов: - * qcow2; - * vmdk; - * vdi; - * iso; - * raw. + Для схемы HTTPS есть возможность отключить проверку TLS. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. + checksum: + description: | + Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. + properties: + md5: + description: "" + sha256: + description: "" + insecureSkipVerify: + description: | + Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). + url: + description: | + Для образа расположенного по URL, поддерживаются следующие типы образов: + * qcow2; + * vmdk; + * vdi; + * iso; + * raw. - Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: - * gz; - * xz. - objectRef: - description: | - Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. - properties: - kind: - description: | - Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. - name: - description: | - Имя существующего `VirtualImage` или `ClusterVirtualImage`. - namespace: - description: | - Имя namespace'а, гда ресположен `VirtualImage`. - type: - description: | - Доступные типы источников для создания образа: + Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: + * gz; + * xz. + objectRef: + description: | + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. + properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. + name: + description: | + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + namespace: + description: | + Имя namespace'а, гда ресположен `VirtualImage`. + type: + description: | + Доступные типы источников для создания образа: - * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. - * `ContainerImage` — создать образ из образа в container registry. - * `VirtualImage` — создать новый образ из существующего `VirtualImage`. - * `ClusterVirtualImage` — создать новый образ из существующего `ClusterVirtualImage`. - * `Upload` — загрузить образ вручную, через веб-интерфейс. - status: - properties: - attachedToVirtualMachines: - description: | - Список виртуальных машин, использующих этот образ - cdrom: - description: | - Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. - downloadSpeed: - description: | - Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. - properties: - avg: - description: | - Средняя скорость загрузки. - avgBytes: - description: | - Средняя скорость загрузки в байтах в секунду. - current: - description: | - Текущая скорость загрузки. - currentBytes: - description: | - Текущая скорость загрузки в байтах в секунду. - failureMessage: - description: | - Подробное описание ошибки. - failureReason: - description: | - Краткое описание причины ошибки. - format: - description: | - Обнаруженный формат образа. - phase: - description: | - Текущее состояние ресурса `ClusterVirtualImage`: + * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. + * `ContainerImage` — создать образ из образа в container registry. + * `VirtualImage` — создать новый образ из существующего `VirtualImage`. + * `ClusterVirtualImage` — создать новый образ из существующего `ClusterVirtualImage`. + * `Upload` — загрузить образ вручную, через веб-интерфейс. + status: + properties: + attachedToVirtualMachines: + description: | + Список виртуальных машин, использующих этот образ + cdrom: + description: | + Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. + downloadSpeed: + description: | + Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. + properties: + avg: + description: | + Средняя скорость загрузки. + avgBytes: + description: | + Средняя скорость загрузки в байтах в секунду. + current: + description: | + Текущая скорость загрузки. + currentBytes: + description: | + Текущая скорость загрузки в байтах в секунду. + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + format: + description: | + Обнаруженный формат образа. + phase: + description: | + Текущее состояние ресурса `ClusterVirtualImage`: - * Pending - Ресурс был создан и находится в очереди ожидания. - * Provisioning - Идет процесс создания ресурса (копирование/загрузка/создание образа). - * WaitForUserUpload - Ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. - * Ready - Ресурс создан и готов к использованию. - * Failed - При создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. - * NotReady - Невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. - * ImageLost - Дочернее образ ресурса отсутствует. Ресурс не может быть использован. - progress: - description: | - Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. - size: - description: | - Обнаруженные размеры образа. - properties: - stored: - description: | - Размер образа в DVCR или PVC в человекочитаемом формате. - storedBytes: - description: Размер образа в DVCR или PVC в байтах. - unpacked: - description: | - Размер распакованного образа в человекочитаемом формате. - unpackedBytes: - description: | - Размер распакованного образа в байтах. - target: - properties: - registryURL: - description: | - Образ, созданный в DVCR. - uploadCommand: - description: | - Команда для загрузки образа для типа 'Upload'. + * Pending - Ресурс был создан и находится в очереди ожидания. + * Provisioning - Идет процесс создания ресурса (копирование/загрузка/создание образа). + * WaitForUserUpload - Ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. + * Ready - Ресурс создан и готов к использованию. + * Failed - При создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. + * NotReady - Невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. + * ImageLost - Дочернее образ ресурса отсутствует. Ресурс не может быть использован. + progress: + description: | + Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. + size: + description: | + Обнаруженные размеры образа. + properties: + stored: + description: | + Размер образа в DVCR или PVC в человекочитаемом формате. + storedBytes: + description: Размер образа в DVCR или PVC в байтах. + unpacked: + description: | + Размер распакованного образа в человекочитаемом формате. + unpackedBytes: + description: | + Размер распакованного образа в байтах. + target: + properties: + registryURL: + description: | + Образ, созданный в DVCR. + uploadCommand: + description: | + Команда для загрузки образа для типа 'Upload'. diff --git a/crds/doc-ru-virtualdisk.yaml b/crds/doc-ru-virtualdisk.yaml index f64bf85c8..7f6e66f87 100644 --- a/crds/doc-ru-virtualdisk.yaml +++ b/crds/doc-ru-virtualdisk.yaml @@ -1,146 +1,146 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Описывает диск виртуальной машины, который может быть смонтирован в `VirtualMachines`. После создания ресурса изменить можно только размер диска `.spec.persistentVolumeClaim.size`, все остальные поля неизменяемы. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Описывает диск виртуальной машины, который может быть смонтирован в `VirtualMachines`. После создания ресурса изменить можно только размер диска `.spec.persistentVolumeClaim.size`, все остальные поля неизменяемы. - Под капотом ресурса создается PVC, в который заливаются данные из источника. - properties: - spec: - properties: - dataSource: - description: | - Тип источника, из которого будет создан диск. Если источник (.spec.dataSource) отсутствует, то будет создан пустой диск. - properties: - containerImage: - description: | - Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. - properties: - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - image: - description: | - Путь к образу в container registry. - imagePullSecret: - properties: - name: - description: | - Имя Secret'а, содержащего учетные данные для подключения к container registry. - http: - description: | - Создать диск из файла, опубликованного по URL. Поддерживаемые схемы: + Под капотом ресурса создается PVC, в который заливаются данные из источника. + properties: + spec: + properties: + dataSource: + description: | + Тип источника, из которого будет создан диск. Если источник (.spec.dataSource) отсутствует, то будет создан пустой диск. + properties: + containerImage: + description: | + Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки подключения к container registry. + image: + description: | + Путь к образу в container registry. + imagePullSecret: + properties: + name: + description: | + Имя Secret'а, содержащего учетные данные для подключения к container registry. + http: + description: | + Создать диск из файла, опубликованного по URL. Поддерживаемые схемы: - * HTTP; - * HTTPS. + * HTTP; + * HTTPS. - Для схемы HTTPS есть возможность пропустить проверку TLS. - properties: - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. - checksum: - description: | - Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. - properties: - md5: - description: "" - sha256: - description: "" - insecureSkipVerify: - description: | - Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). - url: - description: | - URL с образом. Поддерживаются следующие типы образов: - * qcow2; - * vmdk; - * vdi; - * iso; - * raw. + Для схемы HTTPS есть возможность пропустить проверку TLS. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. + checksum: + description: | + Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. + properties: + md5: + description: "" + sha256: + description: "" + insecureSkipVerify: + description: | + Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). + url: + description: | + URL с образом. Поддерживаются следующие типы образов: + * qcow2; + * vmdk; + * vdi; + * iso; + * raw. - Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: - * gz; - * xz. - objectRef: - description: | - Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. - properties: - kind: - description: | - Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. - name: - description: | - Имя существующего `VirtualImage` или `ClusterVirtualImage`. - type: - description: | - Тип источника, из которого будет создан диск: + Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: + * gz; + * xz. + objectRef: + description: | + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. + properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. + name: + description: | + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + type: + description: | + Тип источника, из которого будет создан диск: - * `HTTP` — создать диск из файла, опубликованного на HTTP/HTTPS-сервере. - * `ContainerImage` — создать диск из образа в container registry. - * `VirtualImage` — создать диск из существующего `VirtualImage`. - * `ClusterVirtualImage` — создать диск из существующего `ClusterVirtualImage`. - * `Upload` — загрузить образ диска вручную, через веб-интерфейс. - persistentVolumeClaim: - description: | - Настройки для создания PVC для хранения диска. - properties: - size: - description: | - Желаемый размер PVC для хранения диска. Если диск создается из образа, то размер должен быть не меньше, чем исходный образ в распакованном состоянии. - storageClassName: - description: | - Имя класса StorageClass, требуемого для PersistentVolumeClaim. Дополнительная информация — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. - status: - properties: - attachedToVirtualMachines: - description: | - Список виртуальных машин, использующих этот диск - capacity: - description: | - Емкость PVC в человекочитаемом формате. - downloadSpeed: - description: | - Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. - properties: - avg: - description: | - Средняя скорость загрузки. - avgBytes: - description: | - Средняя скорость загрузки в байтах в секунду. - current: - description: | - Текущая скорость загрузки. - currentBytes: - description: | - Текущая скорость загрузки в байтах в секунду. - failureMessage: - description: | - Подробное описание ошибки. - failureReason: - description: | - Краткое описание причины ошибки. - phase: - description: | - Текущее состояние ресурса `VirtualDisk`: + * `HTTP` — создать диск из файла, опубликованного на HTTP/HTTPS-сервере. + * `ContainerImage` — создать диск из образа в container registry. + * `VirtualImage` — создать диск из существующего `VirtualImage`. + * `ClusterVirtualImage` — создать диск из существующего `ClusterVirtualImage`. + * `Upload` — загрузить образ диска вручную, через веб-интерфейс. + persistentVolumeClaim: + description: | + Настройки для создания PVC для хранения диска. + properties: + size: + description: | + Желаемый размер PVC для хранения диска. Если диск создается из образа, то размер должен быть не меньше, чем исходный образ в распакованном состоянии. + storageClassName: + description: | + Имя класса StorageClass, требуемого для PersistentVolumeClaim. Дополнительная информация — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. + status: + properties: + attachedToVirtualMachines: + description: | + Список виртуальных машин, использующих этот диск + capacity: + description: | + Емкость PVC в человекочитаемом формате. + downloadSpeed: + description: | + Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. + properties: + avg: + description: | + Средняя скорость загрузки. + avgBytes: + description: | + Средняя скорость загрузки в байтах в секунду. + current: + description: | + Текущая скорость загрузки. + currentBytes: + description: | + Текущая скорость загрузки в байтах в секунду. + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + phase: + description: | + Текущее состояние ресурса `VirtualDisk`: - * Pending — ресурс был создан и находится в очереди ожидания. - * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). - * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. - * Ready — ресурс создан и готов к использованию. - * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. - * PVCLost — дочерний PVC ресурса отсутствует. Ресурс не может быть использован. - progress: - description: | - Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. - target: - properties: - persistentVolumeClaimName: - description: | - Имя созданного PersistentVolumeClaim для хранилища Kubernetes. - uploadCommand: - description: | - Команда для загрузки образа для типа 'Upload'. + * Pending — ресурс был создан и находится в очереди ожидания. + * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). + * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. + * Ready — ресурс создан и готов к использованию. + * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. + * PVCLost — дочерний PVC ресурса отсутствует. Ресурс не может быть использован. + progress: + description: | + Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. + target: + properties: + persistentVolumeClaimName: + description: | + Имя созданного PersistentVolumeClaim для хранилища Kubernetes. + uploadCommand: + description: | + Команда для загрузки образа для типа 'Upload'. diff --git a/crds/doc-ru-virtualimage.yaml b/crds/doc-ru-virtualimage.yaml index 826239729..0e6af2da9 100644 --- a/crds/doc-ru-virtualimage.yaml +++ b/crds/doc-ru-virtualimage.yaml @@ -1,162 +1,162 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Описывает образ диска виртуальной машины, который может использоваться в качестве источника данных для новых `VirtualDisks` или установочный образ (iso), который быть смонтирован в `VirtualMachines` напрямую. - > Этот ресурс не может быть изменен после его создания. + > Этот ресурс не может быть изменен после его создания. - Под капотом этого ресурса создается образ контейнера, хранящийся в специальном container registry (DVCR). - properties: - spec: - properties: - dataSource: - description: | - Тип источника, из которого будет создан образ. - properties: - containerImage: - description: | - Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. - properties: - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки подключения к container registry. - image: - description: | - Путь к образу в container registry. - imagePullSecret: - properties: - name: - description: | - Имя Secret'а, содержащего учетные данные для подключения к container registry. - http: - description: | - Создать образ из файла, опубликованного по URL. Поддерживаемые схемы: + Под капотом этого ресурса создается образ контейнера, хранящийся в специальном container registry (DVCR). + properties: + spec: + properties: + dataSource: + description: | + Тип источника, из которого будет создан образ. + properties: + containerImage: + description: | + Для использования образа, хранящегося во внешнем реестре контейнеров, необходимо убедиться, что используется реестр, работающий по протоколу TLS. При необходимости предоставьте поле caBundle для передачи цепочки сертификатов. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки подключения к container registry. + image: + description: | + Путь к образу в container registry. + imagePullSecret: + properties: + name: + description: | + Имя Secret'а, содержащего учетные данные для подключения к container registry. + http: + description: | + Создать образ из файла, опубликованного по URL. Поддерживаемые схемы: - * HTTP; - * HTTPS. + * HTTP; + * HTTPS. - Для схемы HTTPS есть возможность пропустить проверку TLS. - properties: - caBundle: - description: | - Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. - checksum: - description: | - Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. - properties: - md5: - description: "" - sha256: - description: "" - insecureSkipVerify: - description: | - Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). - url: - description: | - URL с образом. Поддерживаются следующие типы образов: - * qcow2; - * vmdk; - * vdi; - * iso; - * raw. + Для схемы HTTPS есть возможность пропустить проверку TLS. + properties: + caBundle: + description: | + Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается образ. + checksum: + description: | + Контрольная сумма файла для проверки правильности загрузки или отсутствия изменений. Файл должен соответствовать всем указанным контрольным суммам. + properties: + md5: + description: "" + sha256: + description: "" + insecureSkipVerify: + description: | + Отключить проверку TLS-сертификата (небезопасно и не должно использоваться в производственных средах). + url: + description: | + URL с образом. Поддерживаются следующие типы образов: + * qcow2; + * vmdk; + * vdi; + * iso; + * raw. - Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: - * gz; - * xz. - objectRef: - description: | - Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. - properties: - kind: - description: | - Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. - name: - description: | - Имя существующего `VirtualImage` или `ClusterVirtualImage`. - type: - description: | - Тип источника, из которого будет создан образ: + Для всех представленных типов образов поддерживается сжатие образов в следующих форматах: + * gz; + * xz. + objectRef: + description: | + Для создания образа использовать существующий `VirtualImage` или `ClusterVirtualImage`. + properties: + kind: + description: | + Ссылка на существующий `VirtualImage` или `ClusterVirtualImage`. + name: + description: | + Имя существующего `VirtualImage` или `ClusterVirtualImage`. + type: + description: | + Тип источника, из которого будет создан образ: - * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. - * `ContainerImage` — создать образ из образа в container registry. - * `VirtualImage` — создать образ из другого существующего `VirtualImage`. - * `ClusterVirtualImage` — создать образ из другого существующего `ClusterVirtualImage`. - * `Upload` — загрузить образ вручную, через веб-интерфейс. - storage: - description: | - Тип хранилища для хранения образа: + * `HTTP` — создать образ из файла, опубликованного на HTTP/HTTPS-сервере. + * `ContainerImage` — создать образ из образа в container registry. + * `VirtualImage` — создать образ из другого существующего `VirtualImage`. + * `ClusterVirtualImage` — создать образ из другого существующего `ClusterVirtualImage`. + * `Upload` — загрузить образ вручную, через веб-интерфейс. + storage: + description: | + Тип хранилища для хранения образа: - * `ContainerRegistry` — использовать container registry (DVCR). В этом случае образы будут загружаться в контейнер, а затем в DVCR (поставляется с модулем виртуализации). - status: - properties: - attachedToVirtualMachines: - description: | - Список виртуальных машин, использующих этот образ - cdrom: - description: | - Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. - downloadSpeed: - description: | - Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. - properties: - avg: - description: | - Средняя скорость загрузки. - avgBytes: - description: | - Средняя скорость загрузки в байтах в секунду. - current: - description: | - Текущая скорость загрузки. - currentBytes: - description: | - Текущая скорость загрузки в байтах в секунду. - failureMessage: - description: | - Подробное описание ошибки. - failureReason: - description: | - Краткое описание причины ошибки. - format: - description: | - Обнаруженный формат образа. - phase: - description: | - Текущее состояние ресурса `VirtualImage`: + * `ContainerRegistry` — использовать container registry (DVCR). В этом случае образы будут загружаться в контейнер, а затем в DVCR (поставляется с модулем виртуализации). + status: + properties: + attachedToVirtualMachines: + description: | + Список виртуальных машин, использующих этот образ + cdrom: + description: | + Является ли образ форматом, который должен быть смонтирован как cdrom, например iso и т. д. + downloadSpeed: + description: | + Скорость загрузки образа из внешнего источника. Появляется только на этапе `Provisioning`. + properties: + avg: + description: | + Средняя скорость загрузки. + avgBytes: + description: | + Средняя скорость загрузки в байтах в секунду. + current: + description: | + Текущая скорость загрузки. + currentBytes: + description: | + Текущая скорость загрузки в байтах в секунду. + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + format: + description: | + Обнаруженный формат образа. + phase: + description: | + Текущее состояние ресурса `VirtualImage`: - * Pending — ресурс был создан и находится в очереди ожидания. - * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). - * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. - * Ready — ресурс создан и готов к использованию. - * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. - * NotReady — невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. - * ImageLost — дочерний образ ресурса отсутствует. Ресурс не может быть использован. - progress: - description: | - Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. - size: - description: | - Обнаруженные размеры образа. - properties: - stored: - description: | - Размер образа в DVCR в человекочитаемом формате. - storedBytes: - description: Размер образа в DVCR в байтах. - unpacked: - description: | - Размер распакованного образа в человекочитаемом формате. - unpackedBytes: - description: | - Размер распакованного образа в байтах. - target: - properties: - registryURL: - description: | - Образ, созданный в DVCR. - uploadCommand: - description: | - Команда для загрузки образа для типа 'Upload'. + * Pending — ресурс был создан и находится в очереди ожидания. + * Provisioning — идет процесс создания ресурса (копирование/загрузка/создание образа). + * WaitForUserUpload — ожидание загрузки образа пользователем. Путь для загрузки образа указывается в `.status.uploadCommand`. + * Ready — ресурс создан и готов к использованию. + * Failed — при создании ресурса возникла проблема, подробности можно увидеть в `.status.failureReason` и `.status.failureMessage`. + * NotReady — невозможно получить информацию о дочернем образе из-за невозможности подключения к DVCR. Ресурс не может быть использован. + * ImageLost — дочерний образ ресурса отсутствует. Ресурс не может быть использован. + progress: + description: | + Ход копирования образа из источника в DVCR. Отображается только на этапе `Provisioning`. + size: + description: | + Обнаруженные размеры образа. + properties: + stored: + description: | + Размер образа в DVCR в человекочитаемом формате. + storedBytes: + description: Размер образа в DVCR в байтах. + unpacked: + description: | + Размер распакованного образа в человекочитаемом формате. + unpackedBytes: + description: | + Размер распакованного образа в байтах. + target: + properties: + registryURL: + description: | + Образ, созданный в DVCR. + uploadCommand: + description: | + Команда для загрузки образа для типа 'Upload'. diff --git a/crds/doc-ru-virtualmachine.yaml b/crds/doc-ru-virtualmachine.yaml index 219fcdb1f..bc7ef7237 100644 --- a/crds/doc-ru-virtualmachine.yaml +++ b/crds/doc-ru-virtualmachine.yaml @@ -1,596 +1,596 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Конфигурация виртуальной машины (ВМ). - properties: - spec: - properties: - affinity: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity), как и в параметре pods `spec.affinity` в Kubernetes. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Конфигурация виртуальной машины (ВМ). + properties: + spec: + properties: + affinity: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity), как и в параметре pods `spec.affinity` в Kubernetes. - Настройка Affinity полностью аналогична приведенной выше документации, разница лишь в названиях некоторых параметров. Фактически, используются следующие аналоги: - * podAffinity -> virtualMachineAndPodAffinity; - * podAffinityTerm -> virtualMachineAndPodAffinityTerm. - properties: - nodeAffinity: - description: Описывает правила affiniy узлов для ВМ. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: "" - items: + Настройка Affinity полностью аналогична приведенной выше документации, разница лишь в названиях некоторых параметров. Фактически, используются следующие аналоги: + * podAffinity -> virtualMachineAndPodAffinity; + * podAffinityTerm -> virtualMachineAndPodAffinityTerm. + properties: + nodeAffinity: + description: Описывает правила affiniy узлов для ВМ. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: "" + items: + description: "" + properties: + preference: + description: "" + properties: + matchExpressions: + description: "" + items: + description: "" + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + matchFields: + description: "" + items: + description: "" + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + weight: + description: "" + requiredDuringSchedulingIgnoredDuringExecution: description: "" properties: - preference: + nodeSelectorTerms: description: "" - properties: - matchExpressions: - description: "" - items: + items: + description: "" + properties: + matchExpressions: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: description: "" - matchFields: - description: "" - items: + operator: + description: "" + values: + description: "" + items: + description: "" + matchFields: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: description: "" - weight: - description: "" - requiredDuringSchedulingIgnoredDuringExecution: - description: "" - properties: - nodeSelectorTerms: + operator: + description: "" + values: + description: "" + items: + description: "" + virtualMachineAndPodAffinity: + description: Описывает правила affiniy подов и ВМ. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: "" + items: description: "" - items: - description: "" - properties: - matchExpressions: - description: "" - items: + properties: + virtualMachineAndPodAffinityTerm: + description: "" + properties: + labelSelector: description: "" properties: - key: - description: "" - operator: - description: "" - values: + matchExpressions: description: "" items: description: "" - matchFields: - description: "" - items: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + matchLabels: + additionalProperties: + description: "" + description: "" + matchLabelKeys: + description: "" + items: + description: "" + mismatchLabelKeys: + description: "" + items: + description: "" + namespaceSelector: description: "" properties: - key: - description: "" - operator: - description: "" - values: + matchExpressions: description: "" items: description: "" - virtualMachineAndPodAffinity: - description: Описывает правила affiniy подов и ВМ. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: "" - items: - description: "" - properties: - virtualMachineAndPodAffinityTerm: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: - description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + properties: + key: + description: "" + operator: + description: "" + values: description: "" - matchLabels: - additionalProperties: + items: + description: "" + matchLabels: + additionalProperties: + description: "" description: "" + namespaces: + description: "" + items: description: "" - matchLabelKeys: - description: "" - items: + topologyKey: description: "" - mismatchLabelKeys: - description: "" - items: + weight: + description: "" + requiredDuringSchedulingIgnoredDuringExecution: + description: "" + items: + description: "" + properties: + labelSelector: + description: "" + properties: + matchExpressions: description: "" - namespaceSelector: - description: "" - properties: - matchExpressions: + items: description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" + matchLabels: + additionalProperties: description: "" - namespaces: - description: "" - items: description: "" - topologyKey: + matchLabelKeys: + description: "" + items: description: "" - weight: - description: "" - requiredDuringSchedulingIgnoredDuringExecution: - description: "" - items: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: + mismatchLabelKeys: + description: "" + items: description: "" - items: + namespaceSelector: + description: "" + properties: + matchExpressions: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: + description: "" + operator: + description: "" + values: description: "" - matchLabels: - additionalProperties: + items: + description: "" + matchLabels: + additionalProperties: + description: "" description: "" + namespaces: + description: "" + items: description: "" - matchLabelKeys: - description: "" - items: + topologyKey: description: "" - mismatchLabelKeys: - description: "" - items: + virtualMachineAndPodAntiAffinity: + description: Описывает правила anti-affiniy пода и ВМ. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: "" + items: + description: "" + properties: + virtualMachineAndPodAffinityTerm: description: "" - namespaceSelector: - description: "" - properties: - matchExpressions: - description: "" - items: + properties: + labelSelector: description: "" properties: - key: - description: "" - operator: - description: "" - values: + matchExpressions: description: "" items: description: "" - matchLabels: - additionalProperties: - description: "" - description: "" - namespaces: - description: "" - items: - description: "" - topologyKey: - description: "" - virtualMachineAndPodAntiAffinity: - description: Описывает правила anti-affiniy пода и ВМ. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: "" - items: - description: "" - properties: - virtualMachineAndPodAffinityTerm: - description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: - description: "" - items: - description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + properties: + key: + description: "" + operator: + description: "" + values: description: "" - matchLabels: - additionalProperties: + items: + description: "" + matchLabels: + additionalProperties: + description: "" description: "" - description: "" - matchLabelKeys: - description: "" - items: + matchLabelKeys: description: "" - mismatchLabelKeys: - description: "" - items: + items: + description: "" + mismatchLabelKeys: description: "" - namespaceSelector: - description: "" - properties: - matchExpressions: + items: description: "" - items: + namespaceSelector: + description: "" + properties: + matchExpressions: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: + description: "" + operator: + description: "" + values: description: "" - matchLabels: - additionalProperties: + items: + description: "" + matchLabels: + additionalProperties: + description: "" description: "" + namespaces: + description: "" + items: description: "" - namespaces: - description: "" - items: + topologyKey: description: "" - topologyKey: - description: "" - weight: - description: "" - requiredDuringSchedulingIgnoredDuringExecution: - description: "" - items: + weight: + description: "" + requiredDuringSchedulingIgnoredDuringExecution: description: "" - properties: - labelSelector: - description: "" - properties: - matchExpressions: - description: "" - items: + items: + description: "" + properties: + labelSelector: + description: "" + properties: + matchExpressions: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: + description: "" + operator: + description: "" + values: description: "" - matchLabels: - additionalProperties: + items: + description: "" + matchLabels: + additionalProperties: + description: "" description: "" - description: "" - matchLabelKeys: - description: "" - items: + matchLabelKeys: description: "" - mismatchLabelKeys: - description: "" - items: + items: + description: "" + mismatchLabelKeys: description: "" - namespaceSelector: - description: "" - properties: - matchExpressions: + items: description: "" - items: + namespaceSelector: + description: "" + properties: + matchExpressions: description: "" - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: + items: + description: "" + properties: + key: description: "" - matchLabels: - additionalProperties: + operator: + description: "" + values: + description: "" + items: + description: "" + matchLabels: + additionalProperties: + description: "" description: "" + namespaces: + description: "" + items: description: "" - namespaces: - description: "" - items: + topologyKey: description: "" - topologyKey: - description: "" - blockDeviceRefs: - description: | - Список блочных устройств, которые могут быть смонтированы в ВМ. + blockDeviceRefs: + description: | + Список блочных устройств, которые могут быть смонтированы в ВМ. - Порядок загрузки определяется порядком в списке. - items: + Порядок загрузки определяется порядком в списке. + items: + description: | + The reference to block device. + properties: + kind: + description: | + Поддерживаемые типы: + + * `ClusterVirtualImage` — использовать `ClusterVirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. + * `VirtualImage` — использовать `VirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. + * `VirtualDisk` — используйте `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite). + name: + description: | + Имя ресурса заданного типа. + bootloader: description: | - The reference to block device. + Загрузчик для VM: + + * BIOS — использовать BIOS. + * EFI — использовать Unified Extensible Firmware (EFI/UEFI). + * EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot. + cpu: + description: | + Блок определяет настройки ЦП для виртуальной машины. properties: - kind: + coreFraction: + description: | + Гарантированная доля времени ЦП, которая будет выделена ВМ. Указывается в процентах. + cores: description: | - Поддерживаемые типы: + Количество ядер. + virtualMachineCPUModelName: + description: | + Имя ресурса `virtualMachineCPUModelName`, определяющего модель процессора для виртуальной машины. + disruptions: + description: | + Описании политики применения изменений, требующих перезагрузки ВМ. - * `ClusterVirtualImage` — использовать `ClusterVirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. - * `VirtualImage` — использовать `VirtualImage` в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM. - * `VirtualDisk` — используйте `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite). - name: + Изменение некоторых параметров конфигурации ВМ требуют перезагрузки ВМ для их применения. Данная политика позволяет задать поведения, как ВМ будет реагировать на такие изменения. + properties: + restartApprovalMode: description: | - Имя ресурса заданного типа. - bootloader: - description: | - Загрузчик для VM: + Режим одобрения для изменений, требующих перезагрузки ВМ: - * BIOS — использовать BIOS. - * EFI — использовать Unified Extensible Firmware (EFI/UEFI). - * EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot. - cpu: - description: | - Блок определяет настройки ЦП для виртуальной машины. - properties: - coreFraction: - description: | - Гарантированная доля времени ЦП, которая будет выделена ВМ. Указывается в процентах. - cores: - description: | - Количество ядер. - virtualMachineCPUModelName: - description: | - Имя ресурса `virtualMachineCPUModelName`, определяющего модель процессора для виртуальной машины. - disruptions: - description: | - Описании политики применения изменений, требующих перезагрузки ВМ. + - `Manual` — изменения не будут применены, до тех пока пользователь самостоятельно не осуществит перезагрузку ВМ. + - `Автоматический` — ВМ будет перезагружена, сразу, после сохранения параметров, требующих перезагрузки ВМ. + enableParavirtualization: + description: | + Использовать шину `virtio` для подключения виртуальных устройств ВМ. Установите значение false, чтобы отключить `virtio` для этой ВМ. - Изменение некоторых параметров конфигурации ВМ требуют перезагрузки ВМ для их применения. Данная политика позволяет задать поведения, как ВМ будет реагировать на такие изменения. - properties: - restartApprovalMode: - description: | - Режим одобрения для изменений, требующих перезагрузки ВМ: + Внимание: Для использования режима паравиртуализации некоторые ОС требуют установки соответствующих драйверов. + memory: + description: | + Блок определяет настройки оперативной памяти для виртуальной машины. + properties: + size: + description: | + Объем оперативной памяти. + nodeSelector: + description: | + [По аналогии](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes//), как и в параметре pods `spec.nodeSelector` в Kubernetes. + osType: + description: | + Параметр позволяет выбрать тип используемой ОС, для которой будет создана ВМ с оптимальным набором необходимых виртуальных устройств и параметров. + + * Windows — для ОС семейства Microsoft Windows. + * Generic — для других типов ОС. + priorityClassName: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/), как и в параметре pods `spec.priorityClassName` в Kubernetes. + provisioning: + description: | + Блок описания сценария начальной инициализации ВМ. + properties: + sysprepRef: + description: | + Ссылка на существующий ресурс со сценарием автоматизации Windows. - - `Manual` — изменения не будут применены, до тех пока пользователь самостоятельно не осуществит перезагрузку ВМ. - - `Автоматический` — ВМ будет перезагружена, сразу, после сохранения параметров, требующих перезагрузки ВМ. - enableParavirtualization: - description: | - Использовать шину `virtio` для подключения виртуальных устройств ВМ. Установите значение false, чтобы отключить `virtio` для этой ВМ. + Структура ресурса для типа SysprepRef: - Внимание: Для использования режима паравиртуализации некоторые ОС требуют установки соответствующих драйверов. - memory: - description: | - Блок определяет настройки оперативной памяти для виртуальной машины. - properties: - size: - description: | - Объем оперативной памяти. - nodeSelector: - description: | - [По аналогии](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes//), как и в параметре pods `spec.nodeSelector` в Kubernetes. - osType: - description: | - Параметр позволяет выбрать тип используемой ОС, для которой будет создана ВМ с оптимальным набором необходимых виртуальных устройств и параметров. + * `.data.autounattend.xml` + * `.data.unattend.xml` + properties: + kind: + description: | + Тип ресурса. + name: + description: | + Имя ресурса со сценарием автоматизации. + type: + description: | + Поддерживаемые параметры для использования сценария инициализации: - * Windows — для ОС семейства Microsoft Windows. - * Generic — для других типов ОС. - priorityClassName: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/), как и в параметре pods `spec.priorityClassName` в Kubernetes. - provisioning: - description: | - Блок описания сценария начальной инициализации ВМ. - properties: - sysprepRef: - description: | - Ссылка на существующий ресурс со сценарием автоматизации Windows. + * UserData — использовать сценарий cloud-init в секции .spec.provisioning.UserData. + * UserDataRef — использовать сценарий cloud-init, который находится в другом ресурсе. + * SysprepRef — использовать сценарий автоматизации установки Windows, который находится в другом ресурсе. + userData: + description: | + Текст сценария cloud-init. - Структура ресурса для типа SysprepRef: + Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html + userDataRef: + description: | + Ссылка на существующий ресурс со сценарием cloud-init. - * `.data.autounattend.xml` - * `.data.unattend.xml` - properties: - kind: - description: | - Тип ресурса. - name: - description: | - Имя ресурса со сценарием автоматизации. - type: - description: | - Поддерживаемые параметры для использования сценария инициализации: + Структура ресурса для типа userDataRef: - * UserData — использовать сценарий cloud-init в секции .spec.provisioning.UserData. - * UserDataRef — использовать сценарий cloud-init, который находится в другом ресурсе. - * SysprepRef — использовать сценарий автоматизации установки Windows, который находится в другом ресурсе. - userData: - description: | - Текст сценария cloud-init. + * `.data.userData` + properties: + kind: + description: | + Тип ресурса. + name: + description: | + Имя ресурса со сценарием cloud-init. + runPolicy: + description: | + Этот параметр определяет политику запуска ВМ: - Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html - userDataRef: - description: | - Ссылка на существующий ресурс со сценарием cloud-init. + * `AlwaysOn` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС. + * `AlwaysOff` — после создания ВМ всегда находится в выключенном состоянии. + * `Manual` — после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС. + * `AlwaysOnUnlessStoppedManually` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС, ВМ может быть выключена с помощью соответствующего API-сервиса. + terminationGracePeriodSeconds: + description: | + Период ожидания после подачи сигнала (SIGTERM) о прекращении работы ВМ, по истечении которого ВМ принудительно завершается. + tolerations: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/), как и в параметре pods `spec.tolerations` в Kubernetes. + items: + description: "" + properties: + effect: + description: "" + key: + description: "" + operator: + description: "" + tolerationSeconds: + description: "" + value: + description: "" + topologySpreadConstraints: + description: | + [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/), как и в параметре pods `spec.topologySpreadConstraints` в Kubernetes. + items: + properties: + labelSelector: + description: "" + properties: + matchExpressions: + description: "" + items: + properties: + key: + description: "" + operator: + description: "" + values: + description: "" + items: + description: "" + matchLabels: + additionalProperties: + description: "" + description: "" + maxSkew: + description: "" + topologyKey: + description: "" + whenUnsatisfiable: + description: "" + virtualMachineIPAddressClaimName: + description: | + Имя для связанного ресурса `virtualMachineIPAddressClaim`. - Структура ресурса для типа userDataRef: + Указывается при необходимости использования ранее созданного IP-адреса ВМ. - * `.data.userData` + Если не указано явно, по умолчанию для ВМ создается ресурс `virtualMachineIPAddressClaim` с именем аналогичным ресурсу ВМ (`.metadata.name`). + status: + properties: + blockDeviceRefs: + description: | + Список блочных устройств, подключенных к ВМ. + items: properties: + hotpluggable: + description: | + Блочное устройство доступно для горячего подключения. kind: description: | - Тип ресурса. + Тип блочного устройства. name: description: | - Имя ресурса со сценарием cloud-init. - runPolicy: - description: | - Этот параметр определяет политику запуска ВМ: - - * `AlwaysOn` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС. - * `AlwaysOff` — после создания ВМ всегда находится в выключенном состоянии. - * `Manual` — после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС. - * `AlwaysOnUnlessStoppedManually` — после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС, ВМ может быть выключена с помощью соответствующего API-сервиса. - terminationGracePeriodSeconds: - description: | - Период ожидания после подачи сигнала (SIGTERM) о прекращении работы ВМ, по истечении которого ВМ принудительно завершается. - tolerations: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/), как и в параметре pods `spec.tolerations` в Kubernetes. - items: - description: "" - properties: - effect: - description: "" - key: - description: "" - operator: - description: "" - tolerationSeconds: - description: "" - value: - description: "" - topologySpreadConstraints: - description: | - [По аналогии](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/), как и в параметре pods `spec.topologySpreadConstraints` в Kubernetes. - items: - properties: - labelSelector: - description: "" - properties: - matchExpressions: - description: "" - items: - properties: - key: - description: "" - operator: - description: "" - values: - description: "" - items: - description: "" - matchLabels: - additionalProperties: - description: "" - description: "" - maxSkew: - description: "" - topologyKey: - description: "" - whenUnsatisfiable: - description: "" - virtualMachineIPAddressClaimName: - description: | - Имя для связанного ресурса `virtualMachineIPAddressClaim`. - - Указывается при необходимости использования ранее созданного IP-адреса ВМ. - - Если не указано явно, по умолчанию для ВМ создается ресурс `virtualMachineIPAddressClaim` с именем аналогичным ресурсу ВМ (`.metadata.name`). - status: - properties: - blockDeviceRefs: - description: | - Список блочных устройств, подключенных к ВМ. - items: - properties: - hotpluggable: - description: | - Блочное устройство доступно для горячего подключения. - kind: - description: | - Тип блочного устройства. - name: - description: | - Имя существующего ресурса. - size: - description: | - Размер подключенного блочного устройства. - target: - description: | - Название подключенного блочного устройства. - conditions: - description: | - Состояния во время работы виртуальной машины. - items: - properties: - lastProbeTime: - description: "" - lastTransitionTime: - description: "" - message: - description: "" - reason: - description: "" - status: - description: "" - type: - description: "" - guestOSInfo: - description: | - Информация об гостевой ОС, полученная от агента (QEMU Guest Agent). Агент должен быть предварительно установлен. + Имя существующего ресурса. + size: + description: | + Размер подключенного блочного устройства. + target: + description: | + Название подключенного блочного устройства. + conditions: + description: | + Состояния во время работы виртуальной машины. + items: + properties: + lastProbeTime: + description: "" + lastTransitionTime: + description: "" + message: + description: "" + reason: + description: "" + status: + description: "" + type: + description: "" + guestOSInfo: + description: | + Информация об гостевой ОС, полученная от агента (QEMU Guest Agent). Агент должен быть предварительно установлен. - Больше информации об агенте можно прочитать тут: https://www.qemu.org/docs/master/interop/qemu-ga.html. - ipAddress: - description: | - IP-адрес ВМ. - message: - description: | - Детальное описание состояния ВМ. - nodeName: - description: | - Имя узла, на котором в данный момент запущена ВМ. - phase: - description: | - Текущая фаза виртуальной машины: + Больше информации об агенте можно прочитать тут: https://www.qemu.org/docs/master/interop/qemu-ga.html. + ipAddress: + description: | + IP-адрес ВМ. + message: + description: | + Детальное описание состояния ВМ. + nodeName: + description: | + Имя узла, на котором в данный момент запущена ВМ. + phase: + description: | + Текущая фаза виртуальной машины: - * `Scheduling` — ВМ запланирована для размещения на узлах кластера. - * `Pending` — осуществляется процесс запуска ВМ. - * `Running` — ВМ запущенна. - * `Failed` — произошла ошибка в процессе запуска или работы ВМ. - * `Terminating` — в настоящий момент ВМ завершает свою работу. - * `Stopped` — ВМ остановлена. - restartAwaitingChanges: - description: | - Список изменений в конфигурации, требующий перезапуска ВМ. - virtualMachineIPAddressClaimName: - description: | - Имя `virtualMachineIPAddressClaimName`, содержащее IP-адрес виртуальной машины. + * `Scheduling` — ВМ запланирована для размещения на узлах кластера. + * `Pending` — осуществляется процесс запуска ВМ. + * `Running` — ВМ запущенна. + * `Failed` — произошла ошибка в процессе запуска или работы ВМ. + * `Terminating` — в настоящий момент ВМ завершает свою работу. + * `Stopped` — ВМ остановлена. + restartAwaitingChanges: + description: | + Список изменений в конфигурации, требующий перезапуска ВМ. + virtualMachineIPAddressClaimName: + description: | + Имя `virtualMachineIPAddressClaimName`, содержащее IP-адрес виртуальной машины. diff --git a/crds/doc-ru-virtualmachineblockdeviceattachment.yaml b/crds/doc-ru-virtualmachineblockdeviceattachment.yaml index d31bcd1c8..7ef2b16aa 100644 --- a/crds/doc-ru-virtualmachineblockdeviceattachment.yaml +++ b/crds/doc-ru-virtualmachineblockdeviceattachment.yaml @@ -1,43 +1,43 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Ресурс обеспечивает возможность «горячего» подключения диска к ВМ. - properties: - spec: - properties: - blockDeviceRef: - description: | - Блочное устройство, которое будет подключено к ВМ в качестве диска hotPlug. - properties: - kind: - description: | - Тип блочного устройства. Возможны следующие варианты: + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Ресурс обеспечивает возможность «горячего» подключения диска к ВМ. + properties: + spec: + properties: + blockDeviceRef: + description: | + Блочное устройство, которое будет подключено к ВМ в качестве диска hotPlug. + properties: + kind: + description: | + Тип блочного устройства. Возможны следующие варианты: - * `VirtualDisk` — использовать `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме RW. - name: - description: | - Имя блочного устройства - virtualMachineName: - description: | - Имя виртуальной машины, к которой подключен диск. - status: - properties: - failureMessage: - description: | - Подробное описание ошибки. - failureReason: - description: | - Краткое описание причины ошибки. - phase: - description: | - Фаза ресурса: + * `VirtualDisk` — использовать `VirtualDisk` в качестве диска. Этот тип всегда монтируется в режиме RW. + name: + description: | + Имя блочного устройства + virtualMachineName: + description: | + Имя виртуальной машины, к которой подключен диск. + status: + properties: + failureMessage: + description: | + Подробное описание ошибки. + failureReason: + description: | + Краткое описание причины ошибки. + phase: + description: | + Фаза ресурса: - * InProgress — диск в процессе подключения к ВМ. - * Attached — диск подключен к ВМ. - * Failed — возникла проблема с подключением диска. Смотрите `.status.failureReason`. - virtualMachineName: - description: | - Имя виртуальной машины, к которой подключен этот диск. + * InProgress — диск в процессе подключения к ВМ. + * Attached — диск подключен к ВМ. + * Failed — возникла проблема с подключением диска. Смотрите `.status.failureReason`. + virtualMachineName: + description: | + Имя виртуальной машины, к которой подключен этот диск. diff --git a/crds/doc-ru-virtualmachinecpumodel.yaml b/crds/doc-ru-virtualmachinecpumodel.yaml index 153127b0c..a1c1743ec 100644 --- a/crds/doc-ru-virtualmachinecpumodel.yaml +++ b/crds/doc-ru-virtualmachinecpumodel.yaml @@ -1,46 +1,46 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. - properties: - spec: - properties: - features: - description: | - Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) - model: - description: | - Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) - type: - description: | - В качестве типа ресурса, поддерживаются следующие варианты: - * Host - использовать физический процессор хоста. - * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. - * Features - необходимый набор поддерживаемых инструкций для процессора. - status: - properties: - features: - description: | - Информация о поддерживаемых наборах инструкций процессора для данной модели. - Отображается только для `type=Features`. - properties: - enabled: - description: | - Список наборов инструкций процессора для данной модели. - notEnabledCommon: - description: | - Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. - nodes: - description: | - Список узлов, поддерживающих данную модель процессора. - Не отображается для `type=Host`. - phase: - description: | - Текущий статус ресурса `VirtualMachineCPUModel`: - * Pending - ресурс находится в очереди на обработку. - * InProgress - ресурс находится в процессе создания. - * Ready - ресурс успешно создан. - * Failed - в процессе создания ресурса произошла ошибка. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Неизменяемый ресурс описывает модель процессора для использования в ВМ. Ресурс не может быть удален, пока он используется в одной из ВМ. + properties: + spec: + properties: + features: + description: | + Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + model: + description: | + Название модели процессора. Дополнительная информация о моделях [здесь](https://libvirt.org/formatdomain.html#cpu-model-and-topology) + type: + description: | + В качестве типа ресурса, поддерживаются следующие варианты: + * Host - использовать физический процессор хоста. + * Модель - модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора. + * Features - необходимый набор поддерживаемых инструкций для процессора. + status: + properties: + features: + description: | + Информация о поддерживаемых наборах инструкций процессора для данной модели. + Отображается только для `type=Features`. + properties: + enabled: + description: | + Список наборов инструкций процессора для данной модели. + notEnabledCommon: + description: | + Список неиспользуемых инструкций процессора, дополнительно доступных для данной группы узлов. + nodes: + description: | + Список узлов, поддерживающих данную модель процессора. + Не отображается для `type=Host`. + phase: + description: | + Текущий статус ресурса `VirtualMachineCPUModel`: + * Pending - ресурс находится в очереди на обработку. + * InProgress - ресурс находится в процессе создания. + * Ready - ресурс успешно создан. + * Failed - в процессе создания ресурса произошла ошибка. diff --git a/crds/doc-ru-virtualmachineipaddressclaim.yaml b/crds/doc-ru-virtualmachineipaddressclaim.yaml index 0fbd97435..045ec57ba 100644 --- a/crds/doc-ru-virtualmachineipaddressclaim.yaml +++ b/crds/doc-ru-virtualmachineipaddressclaim.yaml @@ -1,46 +1,46 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Ресурс, определяющий IP-адрес для виртуальной машины. - properties: - spec: - description: | - Настройки `VirtualMachineIPAddressClaim`. - properties: - address: - description: | - Запрашиваемый IP-адрес. Если это значение не задано, будет назначен следующий доступный IP-адрес. - reclaimPolicy: - description: | - Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Ресурс, определяющий IP-адрес для виртуальной машины. + properties: + spec: + description: | + Настройки `VirtualMachineIPAddressClaim`. + properties: + address: + description: | + Запрашиваемый IP-адрес. Если это значение не задано, будет назначен следующий доступный IP-адрес. + reclaimPolicy: + description: | + Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. - * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. + * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. - * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. - virtualMachineIPAddressLeaseName: - description: | - Имя выданного `VirtualMachineIPAddressLease`, управляется автоматически. - status: - description: | - Состояние ресурса `VirtualMachineIPAddressClaim`. - properties: - address: - description: | - Назначенный IP-адрес. - conflictMessage: - description: | - Подробное описание ошибки. - phase: - description: | - Представляет текущее состояние ресурса `VirtualMachineIPAddressClaim`. + * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. + virtualMachineIPAddressLeaseName: + description: | + Имя выданного `VirtualMachineIPAddressLease`, управляется автоматически. + status: + description: | + Состояние ресурса `VirtualMachineIPAddressClaim`. + properties: + address: + description: | + Назначенный IP-адрес. + conflictMessage: + description: | + Подробное описание ошибки. + phase: + description: | + Представляет текущее состояние ресурса `VirtualMachineIPAddressClaim`. - * Pending - создание ресурса находится в процессе выполнения. - * Bound - ресурс `VirtualMachineIPAddressClaim` привязан к ресурсу `VirtualMachineIPAddressLease`. - * Lost - ресурс `VirtualMachineIPAddressClaim` потерял свойю связку с `VirtualMachineIPAddressLease`. - * Conflict - `VirtualMachineIPAddressLease` уже привязан к другом ресурсу `VirtualMachineIPAddressClaim`. - virtualMachineName: - description: | - Имя виртуальной машины, которая в настоящее время использует этот IP-адрес. + * Pending - создание ресурса находится в процессе выполнения. + * Bound - ресурс `VirtualMachineIPAddressClaim` привязан к ресурсу `VirtualMachineIPAddressLease`. + * Lost - ресурс `VirtualMachineIPAddressClaim` потерял свойю связку с `VirtualMachineIPAddressLease`. + * Conflict - `VirtualMachineIPAddressLease` уже привязан к другом ресурсу `VirtualMachineIPAddressClaim`. + virtualMachineName: + description: | + Имя виртуальной машины, которая в настоящее время использует этот IP-адрес. diff --git a/crds/doc-ru-virtualmachineipaddresslease.yaml b/crds/doc-ru-virtualmachineipaddresslease.yaml index 3313d35d1..1acdf9e6c 100644 --- a/crds/doc-ru-virtualmachineipaddresslease.yaml +++ b/crds/doc-ru-virtualmachineipaddresslease.yaml @@ -1,39 +1,39 @@ spec: versions: - - name: v1alpha2 - schema: - openAPIV3Schema: - description: | - Ресурс, определяющий факт выданной аренды для `VirtualMachineIPAddressClaim`. - properties: - spec: - description: | - Параметры конфигурации `VirtualMachineIPAddressLease`. - properties: - claimRef: - description: | - Ссылка на существующие `VirtualMachineIPAddressClaim`. - properties: - name: - description: | - Имя ссылающегося `VirtualMachineIPAddressClaim`. - namespace: - description: | - Пространство имен ссылающегося `VirtualMachineIPAddressClaim`. - reclaimPolicy: - description: | - Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. + - name: v1alpha2 + schema: + openAPIV3Schema: + description: | + Ресурс, определяющий факт выданной аренды для `VirtualMachineIPAddressClaim`. + properties: + spec: + description: | + Параметры конфигурации `VirtualMachineIPAddressLease`. + properties: + claimRef: + description: | + Ссылка на существующие `VirtualMachineIPAddressClaim`. + properties: + name: + description: | + Имя ссылающегося `VirtualMachineIPAddressClaim`. + namespace: + description: | + Пространство имен ссылающегося `VirtualMachineIPAddressClaim`. + reclaimPolicy: + description: | + Политика Reclaim, определяющая поведение `VirtualMachineIPAddressLease` при удалении `VirtualMachineIPAddressClaim`. - * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. + * `Delete` означает, что `VirtualMachineIPAddressLease` автоматически удаляется, когда пользователь удаляет соответствующий `VirtualMachineIPAddressClaim`. - * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. - status: - description: | - Состояние ресурса `VirtualMachineIPAddressLease`. - properties: - phase: - description: | - Представляет текущее состояние ресурса `VirtualMachineIPAddressLease`. + * `Retain` — если пользователь удаляет `VirtualMachineIPAddressClaim`, соответствующий `VirtualMachineIPAddressLease` не будет удален. Вместо этого он переходит в фазу Released, где его IP-адрес может быть переиспользован вручную. + status: + description: | + Состояние ресурса `VirtualMachineIPAddressLease`. + properties: + phase: + description: | + Представляет текущее состояние ресурса `VirtualMachineIPAddressLease`. - * Bound - ресурс `VirtualMachineIPAddressLease` привязан к ресурсу `VirtualMachineIPAddressClaim`. - * Released - ресурс `VirtualMachineIPAddressLease` доступен для связки с новым ресурсом `VirtualMachineIPAddressClaim`. + * Bound - ресурс `VirtualMachineIPAddressLease` привязан к ресурсу `VirtualMachineIPAddressClaim`. + * Released - ресурс `VirtualMachineIPAddressLease` доступен для связки с новым ресурсом `VirtualMachineIPAddressClaim`. From ff32d55fb55e2f7b93dbc278659edd1dd10c7c17 Mon Sep 17 00:00:00 2001 From: Pavel Tishkov <pavel.tishkov@flant.com> Date: Mon, 20 May 2024 18:58:38 +0300 Subject: [PATCH 13/13] feat(module): rename core resources (#104) Signed-off-by: Pavel Tishkov <pavel.tishkov@flant.com> --- images/pre-delete-hook/entrypoint.sh | 8 ++++---- templates/cdi/cdi.yaml | 2 +- templates/kubevirt/kubevirt.yaml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/images/pre-delete-hook/entrypoint.sh b/images/pre-delete-hook/entrypoint.sh index b0a404abc..edf626322 100644 --- a/images/pre-delete-hook/entrypoint.sh +++ b/images/pre-delete-hook/entrypoint.sh @@ -3,12 +3,12 @@ set -eu -o pipefail KUBEVIRT_RESOURCE="dvpinternalkubevirts.internal.virtualization.deckhouse.io" echo "Delete Kubevirt configuration ..." -kubectl delete -n d8-virtualization ${KUBEVIRT_RESOURCE} kubevirt || true +kubectl delete -n d8-virtualization ${KUBEVIRT_RESOURCE} config || true echo "Wait for Kubevirt deletion ..." -kubectl wait --for=delete -n d8-virtualization ${KUBEVIRT_RESOURCE} kubevirt --timeout=180s || true +kubectl wait --for=delete -n d8-virtualization ${KUBEVIRT_RESOURCE} config --timeout=180s || true CDI_RESOURCE="dvpinternalcdis.internal.virtualization.deckhouse.io" echo "Delete CDI configuration ..." -kubectl delete ${CDI_RESOURCE} cdi || true +kubectl delete ${CDI_RESOURCE} config || true echo "Wait for CDI deletion ..." -kubectl wait --for=delete ${CDI_RESOURCE} cdi --timeout=180s || true +kubectl wait --for=delete ${CDI_RESOURCE} config --timeout=180s || true diff --git a/templates/cdi/cdi.yaml b/templates/cdi/cdi.yaml index 065505e9e..ebb56659f 100644 --- a/templates/cdi/cdi.yaml +++ b/templates/cdi/cdi.yaml @@ -9,7 +9,7 @@ apiVersion: internal.virtualization.deckhouse.io/v1beta1 kind: DVPInternalCDI metadata: - name: cdi + name: config namespace: d8-{{ .Chart.Name }} {{- include "helm_lib_module_labels" (list .) | nindent 2 }} spec: diff --git a/templates/kubevirt/kubevirt.yaml b/templates/kubevirt/kubevirt.yaml index e82359c1a..f15556e2f 100644 --- a/templates/kubevirt/kubevirt.yaml +++ b/templates/kubevirt/kubevirt.yaml @@ -9,7 +9,7 @@ apiVersion: internal.virtualization.deckhouse.io/v1 kind: DVPInternalKubeVirt metadata: - name: kubevirt + name: config namespace: d8-{{ .Chart.Name }} {{- include "helm_lib_module_labels" (list .) | nindent 2 }} spec: