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
    string

    Required value

    Allowed values: deckhouse.io/v1

  • kind
    string

    Required value

    Allowed values: DVPClusterConfiguration

  • layout
    string

    Required value

    Allowed values: Standard

  • masterNodeGroup
    object

    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
      object

      Required value

      Configuration for the virtual machine’s root disk.

      • masterNodeGroup.instanceClass.additionalLabels
        object

        Additional labels.

        Example:

        project: cms-production
        severity: critical
        
      • masterNodeGroup.instanceClass.etcdDisk
        object

        Required value

        Specifies settings for the etcd data disk.

        • masterNodeGroup.instanceClass.etcdDisk.size
          string

          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
          string

          Name of the existing StorageClass will be used to create the etcd data disk.

      • masterNodeGroup.instanceClass.rootDisk
        object

        Required value

        Specifies settings for the root disk of the virtual machine.

        • masterNodeGroup.instanceClass.rootDisk.image
          object

          Required value

          Image parameters that will be used to create the virtual machine’s root disk.

          • masterNodeGroup.instanceClass.rootDisk.image.kind
            string

            Required value

            The kind of the image source.

            Allowed values: ClusterVirtualImage, VirtualImage

          • masterNodeGroup.instanceClass.rootDisk.image.name
            string

            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
          string

          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
          string

          Name of the existing StorageClass will be used to create the virtual machine’s root disk.

      • masterNodeGroup.instanceClass.virtualMachine
        object

        Required value

        Virtual machine settings for the created master node.

        • masterNodeGroup.instanceClass.virtualMachine.additionalAnnotations
          object

          Additional annotations for a virtual machine resource.

          Example:

          cluster-owner: user
          
        • masterNodeGroup.instanceClass.virtualMachine.additionalLabels
          object

          Additional labels for a virtual machine resource.

          Example:

          cluster-owner: user
          
        • masterNodeGroup.instanceClass.virtualMachine.bootloader
          string

          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
          object

          Required value

          CPU settings for the virtual machine.

          • masterNodeGroup.instanceClass.virtualMachine.cpu.coreFraction
            string

            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
            integer

            Required value

            Number of CPU cores for the virtual machine.

            Allowed values: 1 <= X

        • masterNodeGroup.instanceClass.virtualMachine.ipAddresses
          array of strings

          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
            string

            Pattern: ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$

        • masterNodeGroup.instanceClass.virtualMachine.memory
          object

          Required value

          Specifies the memory settings for the virtual machine.

          • masterNodeGroup.instanceClass.virtualMachine.memory.size
            string

            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
          object

          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
          string

          The same as in the spec.priorityClassName parameter for Kubernetes Pods.

        • masterNodeGroup.instanceClass.virtualMachine.tolerations
          array of objects

          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
            string
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.key
            string
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.operator
            string
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.tolerationSeconds
            integer
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.value
            string
        • masterNodeGroup.instanceClass.virtualMachine.virtualMachineClassName
          string

          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
      integer

      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
      array of strings

      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 objects

    Array of additional NodeGroups for creating static nodes (for example, for dedicated frontend nodes or gateways).

    • nodeGroups.instanceClass
      object

      Required value

      Configuration of the virtual machine and its disk for the created static node.

      • nodeGroups.instanceClass.rootDisk
        object

        Required value

        Specifies settings for the root disk of the virtual machine.

        • nodeGroups.instanceClass.rootDisk.image
          object

          Required value

          Image parameters that will be used to create the virtual machine’s root disk.

          • nodeGroups.instanceClass.rootDisk.image.kind
            string

            Required value

            The kind of the image source.

            Allowed values: ClusterVirtualImage, VirtualImage

          • nodeGroups.instanceClass.rootDisk.image.name
            string

            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
          string

          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
          string

          Name of the existing StorageClass will be used to create the virtual machine’s root disk.

      • nodeGroups.instanceClass.virtualMachine
        object

        Required value

        Virtual machine settings for the created master node.

        • nodeGroups.instanceClass.virtualMachine.additionalAnnotations
          object

          Additional annotations for a virtual machine resource.

          Example:

          cluster-owner: user
          
        • nodeGroups.instanceClass.virtualMachine.additionalLabels
          object

          Additional labels for a virtual machine resource.

          Example:

          cluster-owner: user
          
        • nodeGroups.instanceClass.virtualMachine.bootloader
          string

          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
          object

          Required value

          CPU settings for the virtual machine.

          • nodeGroups.instanceClass.virtualMachine.cpu.coreFraction
            string

            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
            integer

            Required value

            Number of CPU cores for the virtual machine.

            Allowed values: 1 <= X

        • nodeGroups.instanceClass.virtualMachine.ipAddresses
          array of strings

          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
            string

            Pattern: ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$

        • nodeGroups.instanceClass.virtualMachine.memory
          object

          Required value

          Specifies the memory settings for the virtual machine.

          • nodeGroups.instanceClass.virtualMachine.memory.size
            string

            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
          object

          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
          string

          The same as in the spec.priorityClassName parameter for Kubernetes Pods.

        • nodeGroups.instanceClass.virtualMachine.tolerations
          array of objects

          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
            string
          • nodeGroups.instanceClass.virtualMachine.tolerations.key
            string
          • nodeGroups.instanceClass.virtualMachine.tolerations.operator
            string
          • nodeGroups.instanceClass.virtualMachine.tolerations.tolerationSeconds
            integer
          • nodeGroups.instanceClass.virtualMachine.tolerations.value
            string
        • nodeGroups.instanceClass.virtualMachine.virtualMachineClassName
          string

          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
      string

      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
        object

        Example:

        annotations:
          ai.fleet.com/discombobulate: "true"
        
      • nodeGroups.nodeTemplate.labels
        object

        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
        array of objects

        The same as the .spec.taints field of the Node object.

        Only the effect, key, and values fields are available.

        Example:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • nodeGroups.nodeTemplate.taints.effect
          string

          Allowed values: NoSchedule, PreferNoSchedule, NoExecute

        • nodeGroups.nodeTemplate.taints.key
          string
        • nodeGroups.nodeTemplate.taints.value
          string
    • nodeGroups.replicas
      integer

      Required value

      Number of nodes to create.

    • nodeGroups.zones
      array of strings

      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
    object

    Required value

    Contains settings to connect to the Deckhouse Kubernetes Platform API.

    • provider.kubeconfigDataBase64
      string

      Required value

      Kubeconfig to connect to Deckhouse Kubernetes Platform API, Base64-encoded.

      Pattern: ^[A-Za-z0-9+/]+[=]{0,2}$

    • provider.namespace
      string

      Required value

      Namespace in which DKP cluster resources will be created.

      If not explicitly specified, the default namespace for kubeconfig will be used.

  • region
    string

    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
    string

    Required value

    A public key for accessing nodes.

  • zones
    array of strings

    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.