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
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
Required value
Allowed values:
deckhouse.io/v1
- clusterID
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
Required value
Allowed values:
ZvirtClusterConfiguration
- layout
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
- masterNodeGroup
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
Required value
Partial contents of the fields of the ZvirtInstanceClass.
- masterNodeGroup.instanceClass.etcdDiskSizeGb
Etcd disk size in GiB.
Default:
10
Example:
etcdDiskSizeGb: 10
- masterNodeGroup.instanceClass.memory
Required value
Memory in MiB to allocate to the VM.
Allowed values:
1 <= X
Example:
memory: 8192
- masterNodeGroup.instanceClass.numCPUs
Required value
Number of vCPUs to allocate to the VM.
Allowed values:
1 <= X
Example:
numCPUs: 2
- masterNodeGroup.instanceClass.rootDiskSizeGb
Root disk size in GiB to use in zVirt VirtualMachines.
Default:
50
Example:
rootDiskSizeGb: 50
- masterNodeGroup.instanceClass.storageDomainID
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
Required value
Template name to be cloned.
Example:
template: debian-bookworm
- masterNodeGroup.instanceClass.vnicProfileID
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
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
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- nodeGroups.instanceClass
Required value
Partial contents of the fields of the.
- nodeGroups.instanceClass.etcdDiskSizeGb
Etcd disk size in GiB.
Default:
10
Example:
etcdDiskSizeGb: 10
- nodeGroups.instanceClass.memory
Required value
Memory in MiB to allocate to the VM.
Allowed values:
1 <= X
Example:
memory: 8192
- nodeGroups.instanceClass.numCPUs
Required value
Number of vCPUs to allocate to the VM.
Allowed values:
1 <= X
Example:
numCPUs: 2
- nodeGroups.instanceClass.rootDiskSizeGb
Root disk size in GiB to use in zVirt VirtualMachines.
Default:
50
Example:
rootDiskSizeGb: 50
- nodeGroups.instanceClass.storageDomainID
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
Required value
Template name to be cloned.
Example:
template: debian-bookworm
- nodeGroups.instanceClass.vnicProfileID
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
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
The same as the
metadata.annotations
standard field.Example:
annotations: ai.fleet.com/discombobulate: 'true'
- nodeGroups.nodeTemplate.labels
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
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
Allowed values:
NoSchedule
,PreferNoSchedule
,NoExecute
- nodeGroups.nodeTemplate.taints.key
- nodeGroups.nodeTemplate.taints.value
- nodeGroups.replicas
Required value
The number of nodes to create.
- provider
Required value
Parameters for connecting to the Zvirt.
- provider.caBundle
CA certificate in base64.
Default:
""
- provider.insecure
Set to
true
if Zvirt has a self-signed certificate.Default:
false
- provider.password
Required value
The user’s password.
- provider.server
Required value
The URL to the Zvirt API endpoint.
- provider.username
Required value
The login ID.
- sshPublicKey
Required value
a public key for accessing nodes.