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:

kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration

After updating the node parameters, you need to run the dhctl converge command to apply the changes.

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}\-4[\da-fA-F]{3}\-[\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.

    Caution! After changing the parameters of the section, you need to run dhctl converge for the changes to take effect.

    • 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}\-4[\da-fA-F]{3}\-[\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}\-4[\da-fA-F]{3}\-[\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}\-4[\da-fA-F]{3}\-[\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}\-4[\da-fA-F]{3}\-[\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.

        Caution! Only the effect, key, 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

      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.