DVPClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in Deckhouse Virtualization Platform (DVP).
Used by the cloud provider if a cluster’s control plane is hosted in the DVP cloud.
Run the following command to change the configuration in a running cluster:
d8 system edit provider-cluster-configuration
Once you modify the node configuration, run
dhctl convergefor changes to take effect.
Example:
apiVersion: deckhouse.io/v1
kind: DVPClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
zones:
- zone-a
- zone-b
- zone-c
region: r1
masterNodeGroup:
replicas: 3
zones:
- zone-a
- zone-b
- zone-c
instanceClass:
virtualMachine:
cpu:
cores: 1
coreFraction: 100%
memory:
size: 4Gi
virtualMachineClassName: generic
ipAddresses:
- 10.66.30.100
- 10.66.30.101
- 10.66.30.102
additionalLabels:
additional-vm-label: label-value
additionalAnnotations:
additional-vm-annotation: annotation-value
tolerations:
- key: dedicated.deckhouse.io
operator: Equal
value: system
nodeSelector:
beta.kubernetes.io/os: linux
rootDisk:
size: 10Gi
storageClass: linstor-thin-r1
image:
kind: ClusterVirtualImage
name: ubuntu-2204
etcdDisk:
size: 10Gi
storageClass: linstor-thin-r1
additionalDisks:
- size: 10Gi
storageClass: linstor-thin-r1
- size: 1Gi
storageClass: linstor-thin-r1
nodeGroups:
- name: worker
zones:
- zone-a
- zone-b
- zone-c
replicas: 1
instanceClass:
virtualMachine:
cpu:
cores: 4
coreFraction: 100%
memory:
size: 8Gi
virtualMachineClassName: generic
rootDisk:
size: 10Gi
image:
kind: ClusterVirtualImage
name: ubuntu-2204
additionalDisks:
- size: 10Gi
storageClass: linstor-thin-r1
- size: 1Gi
storageClass: linstor-thin-r1
provider:
kubeconfigDataBase64: ZXhhbXBsZQo=
namespace: default
- stringapiVersion
Required value
Allowed values:
deckhouse.io/v1 - stringkind
Required value
Allowed values:
DVPClusterConfiguration - stringlayout
Required value
Layout name.
Allowed values:
Standard - objectmasterNodeGroup
Required value
The definition of the master’s NodeGroup.
Once you modify the
masterNodeGroupconfiguration, run [dhctl converge] for changes to take effect.- objectmasterNodeGroup.instanceClass
Required value
Configuration for the virtual machine’s root disk.
- array of objectsmasterNodeGroup.instanceClass.additionalDisks
Parameters for additional virtual machine disks.
Each item in the array describes one additional disk. Both
sizeandstorageClassparameters must be specified for each disk.- stringmasterNodeGroup.instanceClass.additionalDisks.size
Required value
Size of the additional disk.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 10Gi - stringmasterNodeGroup.instanceClass.additionalDisks.storageClass
Required value
Name of the existing StorageClass that will be used to create the additional disk.
Example:
storageClass: ceph-pool-r2-csi-rbd-immediate
- objectmasterNodeGroup.instanceClass.additionalLabels
Additional labels.
Example:
project: cms-production severity: critical - objectmasterNodeGroup.instanceClass.etcdDisk
Required value
Specifies settings for the etcd data disk.
- stringmasterNodeGroup.instanceClass.etcdDisk.size
Required value
Etcd disk size.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 10Gi - stringmasterNodeGroup.instanceClass.etcdDisk.storageClass
Name of the existing StorageClass will be used to create the etcd data disk.
If the value is not specified, the StorageClass will be used according to the global storageClass parameter setting.
- objectmasterNodeGroup.instanceClass.rootDisk
Required value
Specifies settings for the root disk of the virtual machine.
- objectmasterNodeGroup.instanceClass.rootDisk.image
Required value
Image parameters that will be used to create the virtual machine’s root disk.
- stringmasterNodeGroup.instanceClass.rootDisk.image.kind
Required value
The kind of the image source.
Allowed values:
ClusterVirtualImage,VirtualImage - stringmasterNodeGroup.instanceClass.rootDisk.image.name
Required value
The name of the image that will be used to create the root disk.
The installation requires Linux OS images with cloud-init pre-installed.
- stringmasterNodeGroup.instanceClass.rootDisk.size
Required value
Root disk size.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 10Gi - stringmasterNodeGroup.instanceClass.rootDisk.storageClass
Name of the existing StorageClass will be used to create the virtual machine’s root disk.
If the value is not specified, the StorageClass will be used according to the global storageClass parameter setting.
- objectmasterNodeGroup.instanceClass.virtualMachine
Required value
Virtual machine settings for the created master node.
- objectmasterNodeGroup.instanceClass.virtualMachine.additionalAnnotations
Additional annotations for a virtual machine resource.
Example:
cluster-owner: user - objectmasterNodeGroup.instanceClass.virtualMachine.additionalLabels
Additional labels for a virtual machine resource.
Example:
cluster-owner: user - stringmasterNodeGroup.instanceClass.virtualMachine.bootloader
Defines a bootloader for the virtual machine.
BIOS: Use BIOS.EFI: Use Unified Extensible Firmware (EFI/UEFI).EFIWithSecureBoot: Use UEFI/EFI with Secure Boot support.
Default:
EFIAllowed values:
BIOS,EFI,EFIWithSecureBoot - objectmasterNodeGroup.instanceClass.virtualMachine.cpu
Required value
CPU settings for the virtual machine.
- stringmasterNodeGroup.instanceClass.virtualMachine.cpu.coreFraction
Guaranteed share of CPU that will be allocated to the virtual machine.
Default:
100%Pattern:
^100%$|^[1-9][0-9]?%$Example:
coreFraction: 100% - integermasterNodeGroup.instanceClass.virtualMachine.cpu.cores
Required value
Number of CPU cores for the virtual machine.
Allowed values:
1 <= X
- array of stringsmasterNodeGroup.instanceClass.virtualMachine.ipAddresses
Static IP addresses to be assigned to the network interfaces of the virtual machines. The number of addresses must match the number of replicas being created — each IP address will be assigned to a specific virtual machine replica. For example, if 3 replicas are specified and the IP addresses provided are: ip1, ip2, and ip3, then ip1 will be assigned to the first replica, ip2 to the second, and ip3 to the third.
These addresses must belong to the address range specified in the virtualization module configuration in the
virtualMachineCIDRsparameter.- stringElement of the array
Pattern:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- objectmasterNodeGroup.instanceClass.virtualMachine.memory
Required value
Specifies the memory settings for the virtual machine.
- stringmasterNodeGroup.instanceClass.virtualMachine.memory.size
Required value
Amount of memory resources allowed for the virtual machine.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 4Gi
- objectmasterNodeGroup.instanceClass.virtualMachine.nodeSelector
Allows a virtual machine to be assigned to specified DVP nodes. The same as in the
spec.nodeSelectorparameter for Kubernetes Pods. - stringmasterNodeGroup.instanceClass.virtualMachine.priorityClassName
The same as in the
spec.priorityClassNameparameter for Kubernetes Pods. - array of objectsmasterNodeGroup.instanceClass.virtualMachine.tolerations
Allows setting tolerations for virtual machines for a DVP node. The same as in the
spec.tolerationsparameter in Kubernetes Pods.- stringmasterNodeGroup.instanceClass.virtualMachine.tolerations.effect
- stringmasterNodeGroup.instanceClass.virtualMachine.tolerations.key
- stringmasterNodeGroup.instanceClass.virtualMachine.tolerations.operator
- integermasterNodeGroup.instanceClass.virtualMachine.tolerations.tolerationSeconds
- stringmasterNodeGroup.instanceClass.virtualMachine.tolerations.value
- stringmasterNodeGroup.instanceClass.virtualMachine.virtualMachineClassName
Required value
The name of the VirtualMachineClass.
Intended for centralized configuration of preferred virtual machine parameters. It allows you to specify CPU instruction sets, resource configuration policies for CPU and memory, and define the ratio between these resources.
- integermasterNodeGroup.replicas
Required value
The number of master nodes to create.
It is important to have an odd number of masters to ensure a quorum.
Allowed values:
1 <= X - array of stringsmasterNodeGroup.zones
A set of zones in which nodes can be created.
To use this setting, the
topology.kubernetes.io/zonelabel must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.
- array of objectsnodeGroups
Array of additional NodeGroups for creating static nodes (for example, for dedicated frontend nodes or gateways).
- objectnodeGroups.instanceClass
Required value
Configuration of the virtual machine and its disk for the created static node.
- array of objectsnodeGroups.instanceClass.additionalDisks
Parameters for additional virtual machine disks.
Each item in the array describes one additional disk. Both
sizeandstorageClassparameters must be specified for each disk.- stringnodeGroups.instanceClass.additionalDisks.size
Required value
Size of the additional disk.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 10Gi - stringnodeGroups.instanceClass.additionalDisks.storageClass
Required value
Name of the existing StorageClass that will be used to create the additional disk.
Example:
storageClass: ceph-pool-r2-csi-rbd-immediate
- objectnodeGroups.instanceClass.rootDisk
Required value
Specifies settings for the root disk of the virtual machine.
- objectnodeGroups.instanceClass.rootDisk.image
Required value
Image parameters that will be used to create the virtual machine’s root disk.
- stringnodeGroups.instanceClass.rootDisk.image.kind
Required value
The kind of the image source.
Allowed values:
ClusterVirtualImage,VirtualImage - stringnodeGroups.instanceClass.rootDisk.image.name
Required value
The name of the image that will be used to create the root disk.
The installation requires Linux OS images with cloud-init pre-installed.
- stringnodeGroups.instanceClass.rootDisk.size
Required value
Root disk size.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 10Gi - stringnodeGroups.instanceClass.rootDisk.storageClass
Name of the existing StorageClass will be used to create the virtual machine’s root disk.
If the value is not specified, the StorageClass will be used according to the global storageClass parameter setting.
- objectnodeGroups.instanceClass.virtualMachine
Required value
Virtual machine settings for the created master node.
- objectnodeGroups.instanceClass.virtualMachine.additionalAnnotations
Additional annotations for a virtual machine resource.
Example:
cluster-owner: user - objectnodeGroups.instanceClass.virtualMachine.additionalLabels
Additional labels for a virtual machine resource.
Example:
cluster-owner: user - stringnodeGroups.instanceClass.virtualMachine.bootloader
Defines a bootloader for the virtual machine.
BIOS: Use BIOS.EFI: Use Unified Extensible Firmware (EFI/UEFI).EFIWithSecureBoot: Use UEFI/EFI with Secure Boot support.
Default:
EFIAllowed values:
BIOS,EFI,EFIWithSecureBoot - objectnodeGroups.instanceClass.virtualMachine.cpu
Required value
CPU settings for the virtual machine.
- stringnodeGroups.instanceClass.virtualMachine.cpu.coreFraction
Guaranteed share of CPU that will be allocated to the virtual machine.
Default:
100%Pattern:
^100%$|^[1-9][0-9]?%$Example:
coreFraction: 100% - integernodeGroups.instanceClass.virtualMachine.cpu.cores
Required value
Number of CPU cores for the virtual machine.
Allowed values:
1 <= X
- array of stringsnodeGroups.instanceClass.virtualMachine.ipAddresses
Static IP addresses to be assigned to the network interfaces of the virtual machines. The number of addresses must match the number of replicas being created — each IP address will be assigned to a specific virtual machine replica. For example, if 3 replicas are specified and the IP addresses provided are: ip1, ip2, and ip3, then ip1 will be assigned to the first replica, ip2 to the second, and ip3 to the third.
These addresses must belong to the address range specified in the virtualization module configuration in the
virtualMachineCIDRsparameter.- stringElement of the array
Pattern:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- objectnodeGroups.instanceClass.virtualMachine.memory
Required value
Specifies the memory settings for the virtual machine.
- stringnodeGroups.instanceClass.virtualMachine.memory.size
Required value
Amount of memory resources allowed for the virtual machine.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Example:
size: 4Gi
- objectnodeGroups.instanceClass.virtualMachine.nodeSelector
Allows a virtual machine to be assigned to specified DVP nodes. The same as in the
spec.nodeSelectorparameter for Kubernetes Pods. - stringnodeGroups.instanceClass.virtualMachine.priorityClassName
The same as in the
spec.priorityClassNameparameter for Kubernetes Pods. - array of objectsnodeGroups.instanceClass.virtualMachine.tolerations
Allows setting tolerations for virtual machines for a DVP node. The same as in the
spec.tolerationsparameter in Kubernetes Pods.- stringnodeGroups.instanceClass.virtualMachine.tolerations.effect
- stringnodeGroups.instanceClass.virtualMachine.tolerations.key
- stringnodeGroups.instanceClass.virtualMachine.tolerations.operator
- integernodeGroups.instanceClass.virtualMachine.tolerations.tolerationSeconds
- stringnodeGroups.instanceClass.virtualMachine.tolerations.value
- stringnodeGroups.instanceClass.virtualMachine.virtualMachineClassName
Required value
The name of the VirtualMachineClass.
Intended for centralized configuration of preferred virtual machine parameters. It allows you to specify CPU instruction sets, resource configuration policies for CPU and memory, and define the ratio between these resources.
- stringnodeGroups.name
Required value
Name of the NodeGroup to use for generating node names.
- nodeGroups.nodeTemplate
Parameters of node objects in Kubernetes to add after registering the node.
- objectnodeGroups.nodeTemplate.annotations
The same as the standard
metadata.annotationsfield.Example:
annotations: ai.fleet.com/discombobulate: "true" - objectnodeGroups.nodeTemplate.labels
A list of labels to attach to all cluster resources (if supported by the resources).
The same as the standard
metadata.labelsfield.When modifying labels in the running cluster, make sure re-create all the machines to apply the new labels.
Example:
labels: environment: production app: warp-drive-ai - array of objectsnodeGroups.nodeTemplate.taints
The same as the
.spec.taintsfield of the Node object.Only the
effect,key, andvaluesfields are available.Example:
taints: - effect: NoExecute key: ship-class value: frigate- stringnodeGroups.nodeTemplate.taints.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringnodeGroups.nodeTemplate.taints.key
- stringnodeGroups.nodeTemplate.taints.value
- integernodeGroups.replicas
Required value
Number of nodes to create.
- array of stringsnodeGroups.zones
A set of zones in which nodes can be created.
To use this setting, the
topology.kubernetes.io/zonelabel must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.
- objectprovider
Required value
Contains settings to connect to the Deckhouse Kubernetes Platform API.
- stringprovider.kubeconfigDataBase64
Required value
Kubeconfig to connect to Deckhouse Kubernetes Platform API, Base64-encoded.
Pattern:
^[A-Za-z0-9+/]+[=]{0,2}$ - stringprovider.namespace
Required value
Namespace in which DKP cluster resources will be created.
If not explicitly specified, the default namespace for kubeconfig will be used.
- stringregion
Region name.
To use this setting, the
topology.kubernetes.io/regionlabel must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.
- stringsshPublicKey
Required value
A public key for accessing nodes.
- array of stringszones
A set of zones in which nodes can be created.
To use this setting, the
topology.kubernetes.io/zonelabel must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.