If the cluster control plane is hosted on a virtual machines or bare-metal servers, the cloud provider uses the settings from the cloud-provider-zvirt module in the Deckhouse configuration. Otherwise, if the cluster control plane is hosted in a cloud, the cloud provider uses the ZvirtClusterConfiguration structure for configuration.

ZvirtClusterConfiguration

Version: deckhouse.io/v1

Describes the configuration of a cloud cluster in zVirt.

Used by the cloud provider if a cluster’s control plane is hosted in the cloud.

Run the following command to change the configuration in a running cluster:

d8 system edit provider-cluster-configuration

After updating the node parameters, you need to run the dhctl converge command for the changes to take effect. For more information about changing the cluster configuration, see Adding and managing cloud nodes.

Example:

apiVersion: deckhouse.io/v1
kind: ZvirtClusterConfiguration
layout: Standard
clusterID: b46372e7-0d52-40c7-9bbf-fda31e187088
masterNodeGroup:
  replicas: 1
  instanceClass:
    numCPUs: 4
    memory: 8192
    template: debian-bookworm
    vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
    storageDomainID: c4bf82a5-b803-40c3-9f6c-b9398378f424
nodeGroups:
- name: worker
  replicas: 1
  instanceClass:
    numCPUs: 4
    memory: 8192
    template: debian-bookworm
    vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
provider:
  server: "<SERVER>"
  username: "<USERNAME>"
  password: "<PASSWORD>"
  insecure: true
  • apiVersion
    string

    Required value

    Allowed values: deckhouse.io/v1

  • clusterID
    string

    Required value

    Cluster ID with shared storage domains and CPUs of the same type to create virtual machines.

    Pattern: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

    Example:

    clusterID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
    
  • kind
    string

    Required value

    Allowed values: ZvirtClusterConfiguration

  • layout
    string

    Required value

    The way resources are located in the cloud.

    Read more about possible provider layouts.

  • masterNodeGroup
    object

    Required value

    The definition of the master’s NodeGroup.

    For the changes to take effect, run dhctl converge after modifying the parameters of the masterNodeGroup section.

    • masterNodeGroup.instanceClass
      object

      Required value

      Partial contents of the fields of the ZvirtInstanceClass.

      • masterNodeGroup.instanceClass.etcdDiskSizeGb
        integer

        Etcd disk size in GiB.

        Default: 10

        Example:

        etcdDiskSizeGb: 10
        
      • masterNodeGroup.instanceClass.memory
        integer

        Required value

        Memory in MiB to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        memory: 8192
        
      • masterNodeGroup.instanceClass.numCPUs
        integer

        Required value

        Number of vCPUs to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        numCPUs: 2
        
      • masterNodeGroup.instanceClass.rootDiskSizeGb
        integer

        Root disk size in GiB to use in zVirt VirtualMachines.

        Default: 50

        Example:

        rootDiskSizeGb: 50
        
      • masterNodeGroup.instanceClass.storageDomainID
        string

        Required value

        Storage domain id which contains the shared resources that must be available to all datacenter hosts.

        Pattern: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Example:

        storageDomainID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
      • masterNodeGroup.instanceClass.template
        string

        Required value

        Template name to be cloned.

        Example:

        template: debian-bookworm
        
      • masterNodeGroup.instanceClass.vnicProfileID
        string

        Required value

        Virtual NIC profile ID on the basis of which the virtual NIC will be created.

        Pattern: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Example:

        vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
    • 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

  • nodeGroups
    array of objects

    An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).

    • nodeGroups.instanceClass
      object

      Required value

      Partial contents of the fields of the.

      • nodeGroups.instanceClass.etcdDiskSizeGb
        integer

        Etcd disk size in GiB.

        Default: 10

        Example:

        etcdDiskSizeGb: 10
        
      • nodeGroups.instanceClass.memory
        integer

        Required value

        Memory in MiB to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        memory: 8192
        
      • nodeGroups.instanceClass.numCPUs
        integer

        Required value

        Number of vCPUs to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        numCPUs: 2
        
      • nodeGroups.instanceClass.rootDiskSizeGb
        integer

        Root disk size in GiB to use in zVirt VirtualMachines.

        Default: 50

        Example:

        rootDiskSizeGb: 50
        
      • nodeGroups.instanceClass.storageDomainID
        string

        Storage domain id which contains the shared resources that must be available to all datacenter hosts.

        Pattern: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Example:

        storageDomainID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
      • nodeGroups.instanceClass.template
        string

        Required value

        Template name to be cloned.

        Example:

        template: debian-bookworm
        
      • nodeGroups.instanceClass.vnicProfileID
        string

        Required value

        Virtual NIC profile ID on the basis of which the virtual NIC will be created.

        Pattern: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Example:

        vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
    • nodeGroups.name
      string

      Required value

      The 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

        The same as the metadata.annotations standard field.

        Example:

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

        A list of labels to attach to cluster resources.

        The same as the metadata.labels standard field.

        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.

        Available fields: effect, key, and values.

        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

      The number of nodes to create.

  • provider
    object

    Required value

    Parameters for connecting to the Zvirt.

    • provider.caBundle
      string

      CA certificate in base64.

      Default:

    • provider.insecure
      boolean

      Set to true if Zvirt has a self-signed certificate.

      Default: false

    • provider.password
      string

      Required value

      The user’s password.

    • provider.server
      string

      Required value

      The URL to the Zvirt API endpoint.

    • provider.username
      string

      Required value

      The login ID.

  • sshPublicKey
    string

    Required value

    a public key for accessing nodes.