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 deploy/deckhouse -- deckhouse-controller edit provider-cluster-configuration

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
  • apiVersionstring

    Required value

    Allowed values: deckhouse.io/v1

  • clusterIDstring

    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
    
  • kindstring

    Required value

    Allowed values: ZvirtClusterConfiguration

  • layoutstring

    Required value

    The way resources are located in the cloud.

    Read more about possible provider layouts.

  • masterNodeGroupobject

    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.instanceClassobject

      Required value

      Partial contents of the fields of the ZvirtInstanceClass.

      • masterNodeGroup.instanceClass.etcdDiskSizeGbinteger

        Etcd disk size in GiB.

        Default: 10

        Example:

        etcdDiskSizeGb: 10
        
      • masterNodeGroup.instanceClass.memoryinteger

        Required value

        Memory in MiB to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        memory: 8192
        
      • masterNodeGroup.instanceClass.numCPUsinteger

        Required value

        Number of vCPUs to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        numCPUs: 2
        
      • masterNodeGroup.instanceClass.rootDiskSizeGbinteger

        Root disk size in GiB to use in zVirt VirtualMachines.

        Default: 30

        Example:

        rootDiskSizeGb: 30
        
      • masterNodeGroup.instanceClass.storageDomainIDstring

        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.templatestring

        Required value

        Template name to be cloned.

        Example:

        template: debian-bookworm
        
      • masterNodeGroup.instanceClass.vnicProfileIDstring

        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.replicasinteger

      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

  • nodeGroupsarray of objects

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

    • nodeGroups.instanceClassobject

      Required value

      Partial contents of the fields of the.

      • nodeGroups.instanceClass.etcdDiskSizeGbinteger

        Etcd disk size in GiB.

        Default: 10

        Example:

        etcdDiskSizeGb: 10
        
      • nodeGroups.instanceClass.memoryinteger

        Required value

        Memory in MiB to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        memory: 8192
        
      • nodeGroups.instanceClass.numCPUsinteger

        Required value

        Number of vCPUs to allocate to the VM.

        Allowed values: 1 <= X

        Example:

        numCPUs: 2
        
      • nodeGroups.instanceClass.rootDiskSizeGbinteger

        Root disk size in GiB to use in zVirt VirtualMachines.

        Default: 30

        Example:

        rootDiskSizeGb: 30
        
      • nodeGroups.instanceClass.storageDomainIDstring

        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.templatestring

        Required value

        Template name to be cloned.

        Example:

        template: debian-bookworm
        
      • nodeGroups.instanceClass.vnicProfileIDstring

        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.namestring

      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.annotationsobject

        The same as the metadata.annotations standard field.

        Example:

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

        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.taintsarray 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.effectstring

          Allowed values: NoSchedule, PreferNoSchedule, NoExecute

        • nodeGroups.nodeTemplate.taints.keystring
        • nodeGroups.nodeTemplate.taints.valuestring
    • nodeGroups.replicasinteger

      Required value

      The number of nodes to create.

  • providerobject

    Required value

    Parameters for connecting to the Zvirt.

    • provider.caBundlestring

      CA certificate in base64.

      Default: ""

    • provider.insecureboolean

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

      Default: false

    • provider.passwordstring

      Required value

      The user’s password.

    • provider.serverstring

      Required value

      The URL to the Zvirt API endpoint.

    • provider.usernamestring

      Required value

      The login ID.

  • sshPublicKeystring

    Required value

    a public key for accessing nodes.