Experimental version. The functionality may undergo significant changes. Compatibility with future versions is not guaranteed.
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:
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration
Once you modify the node configuration, run
dhctl converge
for 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
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
provider:
kubeconfigDataBase64: ZXhhbXBsZQo=
namespace: default
- apiVersion
Required value
Allowed values:
deckhouse.io/v1
- kind
Required value
Allowed values:
DVPClusterConfiguration
- layout
Required value
Layout name.
Allowed values:
Standard
- masterNodeGroup
Required value
The definition of the master’s NodeGroup.
Once you modify the
masterNodeGroup
configuration, run [dhctl converge
] for changes to take effect.- masterNodeGroup.instanceClass
Required value
Configuration for the virtual machine’s root disk.
- masterNodeGroup.instanceClass.additionalLabels
Additional labels.
Example:
project: cms-production severity: critical
- masterNodeGroup.instanceClass.etcdDisk
Required value
Specifies settings for the etcd data disk.
- masterNodeGroup.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
- masterNodeGroup.instanceClass.etcdDisk.storageClass
Name of the existing StorageClass will be used to create the etcd data disk.
- masterNodeGroup.instanceClass.rootDisk
Required value
Specifies settings for the root disk of the virtual machine.
- masterNodeGroup.instanceClass.rootDisk.image
Required value
Image parameters that will be used to create the virtual machine’s root disk.
- masterNodeGroup.instanceClass.rootDisk.image.kind
Required value
The kind of the image source.
Allowed values:
ClusterVirtualImage
,VirtualImage
- masterNodeGroup.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.
- masterNodeGroup.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
- masterNodeGroup.instanceClass.rootDisk.storageClass
Name of the existing StorageClass will be used to create the virtual machine’s root disk.
- masterNodeGroup.instanceClass.virtualMachine
Required value
Virtual machine settings for the created master node.
- masterNodeGroup.instanceClass.virtualMachine.additionalAnnotations
Additional annotations for a virtual machine resource.
Example:
cluster-owner: user
- masterNodeGroup.instanceClass.virtualMachine.additionalLabels
Additional labels for a virtual machine resource.
Example:
cluster-owner: user
- masterNodeGroup.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:
"EFI"
Allowed values:
BIOS
,EFI
,EFIWithSecureBoot
- masterNodeGroup.instanceClass.virtualMachine.cpu
Required value
CPU settings for the virtual machine.
- masterNodeGroup.instanceClass.virtualMachine.cpu.coreFraction
Guaranteed share of CPU that will be allocated to the virtual machine.
Default:
"100%"
Allowed values:
5%
,10%
,25%
,50%
,100%
Example:
coreFraction: 100%
- masterNodeGroup.instanceClass.virtualMachine.cpu.cores
Required value
Number of CPU cores for the virtual machine.
Allowed values:
1 <= X
- masterNodeGroup.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
virtualMachineCIDRs
parameter.- Element of the array
Pattern:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- masterNodeGroup.instanceClass.virtualMachine.memory
Required value
Specifies the memory settings for the virtual machine.
- masterNodeGroup.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
- masterNodeGroup.instanceClass.virtualMachine.nodeSelector
Allows a virtual machine to be assigned to specified DVP nodes. The same as in the
spec.nodeSelector
parameter for Kubernetes Pods. - masterNodeGroup.instanceClass.virtualMachine.priorityClassName
The same as in the
spec.priorityClassName
parameter for Kubernetes Pods. - masterNodeGroup.instanceClass.virtualMachine.tolerations
Allows setting tolerations for virtual machines for a DVP node. The same as in the
spec.tolerations
parameter in Kubernetes Pods.- masterNodeGroup.instanceClass.virtualMachine.tolerations.effect
- masterNodeGroup.instanceClass.virtualMachine.tolerations.key
- masterNodeGroup.instanceClass.virtualMachine.tolerations.operator
- masterNodeGroup.instanceClass.virtualMachine.tolerations.tolerationSeconds
- masterNodeGroup.instanceClass.virtualMachine.tolerations.value
- masterNodeGroup.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.
- masterNodeGroup.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
- masterNodeGroup.zones
A set of zones in which nodes can be created.
To use this setting, the
topology.kubernetes.io/zone
label must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.
- nodeGroups
Array of additional NodeGroups for creating static nodes (for example, for dedicated frontend nodes or gateways).
- nodeGroups.instanceClass
Required value
Configuration of the virtual machine and its disk for the created static node.
- nodeGroups.instanceClass.rootDisk
Required value
Specifies settings for the root disk of the virtual machine.
- nodeGroups.instanceClass.rootDisk.image
Required value
Image parameters that will be used to create the virtual machine’s root disk.
- nodeGroups.instanceClass.rootDisk.image.kind
Required value
The kind of the image source.
Allowed values:
ClusterVirtualImage
,VirtualImage
- nodeGroups.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.
- nodeGroups.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
- nodeGroups.instanceClass.rootDisk.storageClass
Name of the existing StorageClass will be used to create the virtual machine’s root disk.
- nodeGroups.instanceClass.virtualMachine
Required value
Virtual machine settings for the created master node.
- nodeGroups.instanceClass.virtualMachine.additionalAnnotations
Additional annotations for a virtual machine resource.
Example:
cluster-owner: user
- nodeGroups.instanceClass.virtualMachine.additionalLabels
Additional labels for a virtual machine resource.
Example:
cluster-owner: user
- nodeGroups.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:
"EFI"
Allowed values:
BIOS
,EFI
,EFIWithSecureBoot
- nodeGroups.instanceClass.virtualMachine.cpu
Required value
CPU settings for the virtual machine.
- nodeGroups.instanceClass.virtualMachine.cpu.coreFraction
Guaranteed share of CPU that will be allocated to the virtual machine.
Default:
"100%"
Allowed values:
5%
,10%
,25%
,50%
,100%
Example:
coreFraction: 100%
- nodeGroups.instanceClass.virtualMachine.cpu.cores
Required value
Number of CPU cores for the virtual machine.
Allowed values:
1 <= X
- nodeGroups.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
virtualMachineCIDRs
parameter.- Element of the array
Pattern:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- nodeGroups.instanceClass.virtualMachine.memory
Required value
Specifies the memory settings for the virtual machine.
- nodeGroups.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
- nodeGroups.instanceClass.virtualMachine.nodeSelector
Allows a virtual machine to be assigned to specified DVP nodes. The same as in the
spec.nodeSelector
parameter for Kubernetes Pods. - nodeGroups.instanceClass.virtualMachine.priorityClassName
The same as in the
spec.priorityClassName
parameter for Kubernetes Pods. - nodeGroups.instanceClass.virtualMachine.tolerations
Allows setting tolerations for virtual machines for a DVP node. The same as in the
spec.tolerations
parameter in Kubernetes Pods.- nodeGroups.instanceClass.virtualMachine.tolerations.effect
- nodeGroups.instanceClass.virtualMachine.tolerations.key
- nodeGroups.instanceClass.virtualMachine.tolerations.operator
- nodeGroups.instanceClass.virtualMachine.tolerations.tolerationSeconds
- nodeGroups.instanceClass.virtualMachine.tolerations.value
- nodeGroups.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.
- nodeGroups.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.
- nodeGroups.nodeTemplate.annotations
The same as the standard
metadata.annotations
field.Example:
annotations: ai.fleet.com/discombobulate: "true"
- nodeGroups.nodeTemplate.labels
A list of labels to attach to all cluster resources (if supported by the resources).
The same as the standard
metadata.labels
field.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
- nodeGroups.nodeTemplate.taints
The same as the
.spec.taints
field of the Node object.Only the
effect
,key
, andvalues
fields are available.Example:
taints: - effect: NoExecute key: ship-class value: frigate
- nodeGroups.nodeTemplate.taints.effect
Allowed values:
NoSchedule
,PreferNoSchedule
,NoExecute
- nodeGroups.nodeTemplate.taints.key
- nodeGroups.nodeTemplate.taints.value
- nodeGroups.replicas
Required value
Number of nodes to create.
- nodeGroups.zones
A set of zones in which nodes can be created.
To use this setting, the
topology.kubernetes.io/zone
label must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.
- provider
Required value
Contains settings to connect to the Deckhouse Kubernetes Platform API.
- provider.kubeconfigDataBase64
Required value
Kubeconfig to connect to Deckhouse Kubernetes Platform API, Base64-encoded.
Pattern:
^[A-Za-z0-9+/]+[=]{0,2}$
- provider.namespace
Required value
Namespace in which DKP cluster resources will be created.
If not explicitly specified, the default namespace for kubeconfig will be used.
- region
Region name.
To use this setting, the
topology.kubernetes.io/region
label must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.
- sshPublicKey
Required value
A public key for accessing nodes.
- zones
A set of zones in which nodes can be created.
To use this setting, the
topology.kubernetes.io/zone
label must be set on DVP nodes. Read more about topological labels.To set the required label for a DVP node, follow the NodeGroup documentation.