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-vspheremodule in the Deckhouse configuration. Otherwise, if the cluster control plane is hosted in a cloud, the cloud provider uses the VsphereClusterConfiguration structure for configuration.Additional info about Vsphere Cloud Load Balancers.
VsphereClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in vSphere.
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 p 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: VsphereClusterConfiguration
sshPublicKey: "<SSH_PUBLIC_KEY>"
layout: Standard
vmFolderPath: folder/prefix
regionTagCategory: k8s-region
zoneTagCategory: k8s-zone
region: region2
zones:
- region2-a
externalNetworkNames:
- net3-k8s
internalNetworkNames:
- K8S_3
internalNetworkCIDR: 172.16.2.0/24
baseResourcePool: kubernetes/cloud
masterNodeGroup:
replicas: 1
instanceClass:
numCPUs: 4
memory: 8192
template: Templates/ubuntu-focal-20.04
mainNetwork: net3-k8s
additionalNetworks:
- K8S_3
datastore: lun10
rootDiskSize: 50
runtimeOptions:
nestedHardwareVirtualization: false
nodeGroups:
- name: worker
replicas: 1
zones:
- ru-central1-a
instanceClass:
numCPUs: 4
memory: 8192
template: Templates/ubuntu-focal-20.04
datastore: lun10
mainNetwork: net3-k8s
provider:
server: "<SERVER>"
username: "<USERNAME>"
password: "<PASSWORD>"
insecure: true
- stringapiVersion
Required value
Allowed values:
deckhouse.io/v1,deckhouse.io/v1alpha1 - stringbaseResourcePool
A path (relative to vSphere Cluster) to the existing parent
resourcePoolfor allresourcePoolcreated in each zone. - booleandisableTimesync
Disable time synchronization on the vSphere side.
Caution! This parameter will not disable the NTP daemons in the guest OS, but only disable the time correction on the part of ESXi.
Default:
true - array of stringsexternalNetworkNames
Names of networks (just the name and not the full path) connected to
VirtualMachinesand used byvsphere-cloud-controller-managerto insert ExternalIP into the.status.addressesfield in the Node API object.Example:
externalNetworkNames: - MAIN-1 - public - stringinternalNetworkCIDR
Subnet for master nodes in the internal network.
Addresses are allocated starting with the tenth address. E.g., if you have the
192.168.199.0/24subnet, addresses will be allocated starting with192.168.199.10.The
internalNetworkCIDRis used ifadditionalNetworksare defined inmasterInstanceClass.Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - array of stringsinternalNetworkNames
Names of networks (just the name and not the full path) connected to
VirtualMachinesand used byvsphere-cloud-controller-managerto insert InternalIP into the.status.addressesfield in the Node API object.Example:
internalNetworkNames: - KUBE-3 - devops-internal - stringkind
Required value
Allowed values:
VsphereClusterConfiguration - stringlayout
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
- objectmasterNodeGroup
Required value
The definition of the master’s NodeGroup.
For the changes to take effect, run
dhctl convergeafter modifying the parameters of themasterNodeGroupsection.- objectmasterNodeGroup.instanceClass
Required value
Partial contents of the fields of the VsphereInstanceClass.
- array of stringsmasterNodeGroup.instanceClass.additionalNetworks
Paths to networks that VirtualMachines’ secondary NICs will connect to. Relative to the datacenter.
Example:
additionalNetworks: - DEVOPS_32 - DEVOPS_50 - stringmasterNodeGroup.instanceClass.datastore
Required value
Path to a Datastore in which VirtualMachines will be cloned. Relative to the datacenter.
Example:
datastore: lun-1201 - stringmasterNodeGroup.instanceClass.mainNetwork
Required value
Path to the network that VirtualMachines’ primary NICs will connect to (default gateway). Relative to the datacenter.
Example:
mainNetwork: k8s-msk-178 - array of objectsmasterNodeGroup.instanceClass.mainNetworkIPAddresses
A list of static IP addresses (with a CIDR prefix) sequentially allocated to nodes in the
mainNetwork.By default, the DHCP client is enabled.
Example:
mainNetworkIPAddresses: - address: 10.1.14.20/24 gateway: 10.1.14.254 nameservers: addresses: - 8.8.8.8 - 8.8.4.4- stringmasterNodeGroup.instanceClass.mainNetworkIPAddresses.address
Required value
An IP address with a CIDR prefix.
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - stringmasterNodeGroup.instanceClass.mainNetworkIPAddresses.gateway
Required value
The IP address of the default gateway.
It must be located in the subnet specified in the
addressparameterPattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ - objectmasterNodeGroup.instanceClass.mainNetworkIPAddresses.nameservers
Required value
- array of stringsmasterNodeGroup.instanceClass.mainNetworkIPAddresses.nameservers.addresses
A list of DNS servers.
Example:
addresses: - 8.8.8.8 - 8.8.4.4- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
- array of stringsmasterNodeGroup.instanceClass.mainNetworkIPAddresses.nameservers.search
A list of DNS search domains.
Example:
search: - tech.lan
- integermasterNodeGroup.instanceClass.memory
Required value
Memory in MiB to allocate to vSphere VirtualMachines.
Example:
memory: 8192 - integermasterNodeGroup.instanceClass.numCPUs
Required value
Count of vCPUs to allocate to vSphere VirtualMachines.
Example:
numCPUs: 2 - stringmasterNodeGroup.instanceClass.resourcePool
Path to a Resource Pool in which VirtualMachines will be cloned. Relative to the zone (vSphere Cluster).
Example:
resourcePool: rp-2012 - integermasterNodeGroup.instanceClass.rootDiskSize
Root disk size in GiB to use in vSphere VirtualMachines.
The disk will be automatically enlarged if its size in the template is less than specified.
Example:
rootDiskSize: 50 - objectmasterNodeGroup.instanceClass.runtimeOptions
Additional VM’s parameters.
- integermasterNodeGroup.instanceClass.runtimeOptions.cpuLimit
CPU limit in MHz.
- integermasterNodeGroup.instanceClass.runtimeOptions.cpuReservation
CPU reservation in MHz.
- integer
The relative amount of CPU Shares for VMs to be created.
- integermasterNodeGroup.instanceClass.runtimeOptions.memoryLimit
Memory limit in MB.
- integermasterNodeGroup.instanceClass.runtimeOptions.memoryReservation
VM memory reservation in percent (relative to
.spec.memory).Allowed values:
0 <= X <= 100 - integer
The relative amount of Memory Shares for VMs to be created.
Allowed values:
0 <= X <= 100 - booleanmasterNodeGroup.instanceClass.runtimeOptions.nestedHardwareVirtualization
Whether to enable or disable nested Hardware Assisted Virtualization.
- stringmasterNodeGroup.instanceClass.template
Required value
Path to the template to be cloned. Relative to the datacenter.
Example:
template: dev/golden_image
- integermasterNodeGroup.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 - array of stringsmasterNodeGroup.zones
A limited set of zones in which master nodes can be created.
The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone.
- array of objectsnodeGroups
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- objectnodeGroups.instanceClass
Required value
Partial contents of the fields of the VsphereInstanceClass.
- array of stringsnodeGroups.instanceClass.additionalNetworks
Paths to networks that VirtualMachines’ secondary NICs will connect to. Relative to the datacenter.
Example:
additionalNetworks: - DEVOPS_32 - DEVOPS_50 - stringnodeGroups.instanceClass.datastore
Required value
Path to a Datastore in which VirtualMachines will be cloned. Relative to the datacenter.
Example:
datastore: lun-1201 - stringnodeGroups.instanceClass.mainNetwork
Required value
Path to the network that VirtualMachines’ primary NICs will connect to (default gateway). Relative to the datacenter.
Example:
mainNetwork: k8s-msk-178 - array of objectsnodeGroups.instanceClass.mainNetworkIPAddresses
A list of static IP addresses (with a CIDR prefix) sequentially allocated to nodes in the
mainNetwork.By default, the DHCP client is enabled.
Example:
mainNetworkIPAddresses: - address: 10.1.14.20/24 gateway: 10.1.14.254 nameservers: addresses: - 8.8.8.8 - 8.8.4.4- stringnodeGroups.instanceClass.mainNetworkIPAddresses.address
Required value
An IP address with a CIDR prefix.
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - stringnodeGroups.instanceClass.mainNetworkIPAddresses.gateway
Required value
The IP address of the default gateway.
It must be located in the subnet specified in the
addressparameterPattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ - objectnodeGroups.instanceClass.mainNetworkIPAddresses.nameservers
Required value
- array of stringsnodeGroups.instanceClass.mainNetworkIPAddresses.nameservers.addresses
A list of DNS servers.
Example:
addresses: - 8.8.8.8 - 8.8.4.4- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
- array of stringsnodeGroups.instanceClass.mainNetworkIPAddresses.nameservers.search
A list of DNS search domains.
Example:
search: - tech.lan
- integernodeGroups.instanceClass.memory
Required value
Memory in MiB to allocate to vSphere VirtualMachines.
Example:
memory: 8192 - integernodeGroups.instanceClass.numCPUs
Required value
Count of vCPUs to allocate to vSphere VirtualMachines.
Example:
numCPUs: 2 - stringnodeGroups.instanceClass.resourcePool
Path to a Resource Pool in which VirtualMachines will be cloned. Relative to the zone (vSphere Cluster).
Example:
resourcePool: rp-2012 - integernodeGroups.instanceClass.rootDiskSize
Root disk size in GiB to use in vSphere VirtualMachines.
The disk will be automatically enlarged if its size in the template is less than specified.
Example:
rootDiskSize: 50 - objectnodeGroups.instanceClass.runtimeOptions
Additional VM’s parameters.
- integernodeGroups.instanceClass.runtimeOptions.cpuLimit
CPU limit in MHz.
- integernodeGroups.instanceClass.runtimeOptions.cpuReservation
CPU reservation in MHz.
- integer
The relative amount of CPU Shares for VMs to be created.
- integernodeGroups.instanceClass.runtimeOptions.memoryLimit
Memory limit in MB.
- integernodeGroups.instanceClass.runtimeOptions.memoryReservation
VM memory reservation in percent (relative to
.spec.memory).Allowed values:
0 <= X <= 100 - integer
The relative amount of Memory Shares for VMs to be created.
Allowed values:
0 <= X <= 100 - booleannodeGroups.instanceClass.runtimeOptions.nestedHardwareVirtualization
Whether to enable or disable nested Hardware Assisted Virtualization.
- stringnodeGroups.instanceClass.template
Required value
Path to the template to be cloned. Relative to the datacenter.
Example:
template: dev/golden_image
- stringnodeGroups.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.
- objectnodeGroups.nodeTemplate.annotations
The same as the
metadata.annotationsstandard field.Example:
annotations: ai.fleet.com/discombobulate: 'true' - objectnodeGroups.nodeTemplate.labels
A list of labels to attach to cluster resources.
The same as the
metadata.labelsstandard field.Example:
labels: environment: production app: warp-drive-ai - array of objectsnodeGroups.nodeTemplate.taints
The same as the
.spec.taintsfield of the Node object.Available fields:
effect,key, andvalues.Example:
taints: - effect: NoExecute key: ship-class value: frigate- stringnodeGroups.nodeTemplate.taints.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringnodeGroups.nodeTemplate.taints.key
- stringnodeGroups.nodeTemplate.taints.value
- integernodeGroups.replicas
Required value
The number of nodes to create.
- array of stringsnodeGroups.zones
A limited set of zones in which nodes can be created.
- objectnsxt
Kubernetes load balancer support using NSX-T for the vSphere cloud controller manager.
- stringnsxt.defaultIpPoolName
Required value
Name of the default IP pool used for the SVC’s without
loadbalancer.vmware.io/classannotation set.Example:
defaultIpPoolName: pool1 - stringnsxt.defaultTcpAppProfileName
Name of default NSX-T application profile used for TCP connections.
Default:
default-tcp-lb-app-profileExamples:
defaultTcpAppProfileName: default-tcp-lb-app-profiledefaultTcpAppProfileName: tcp-profile1 - stringnsxt.defaultUdpAppProfileName
Name of default NSX-T application profile used for UDP connections.
Default:
default-udp-lb-app-profileExamples:
defaultUdpAppProfileName: default-udp-lb-app-profiledefaultUdpAppProfileName: udp-profile1 - stringnsxt.host
Required value
NSX-T host.
Example:
host: 1.2.3.4 - booleannsxt.insecureFlag
To be set to true if NSX-T uses self-signed certificate.
Examples:
insecureFlag: trueinsecureFlag: false - arraynsxt.loadBalancerClass
Additional section to define Load Balancer Classes (set annotation
loadbalancer.vmware.io/class: <CLASS NAME>to SVC to use the class).Examples:
loadBalancerClass: []loadBalancerClass: name: LBC1 ipPoolName: pool2loadBalancerClass: name: LBC1 ipPoolName: pool2 tcpAppProfileName: profile2 udpAppProfileName: profile3- stringnsxt.loadBalancerClass.ipPoolName
Required value
Name of the IP pool.
- stringnsxt.loadBalancerClass.name
Required value
Load Balancer Class name to use in SVC annotation
loadbalancer.vmware.io/class: <CLASS NAME>. - stringnsxt.loadBalancerClass.tcpAppProfileName
Name of application profile used for TCP connections.
Default:
defaultTcpAppProfileName - stringnsxt.loadBalancerClass.udpAppProfileName
Name of application profile used for UDP connections.
Default:
defaultUdpAppProfileName
- stringnsxt.password
Required value
NSX-T password.
Example:
password: password - stringnsxt.size
Size of load balancer service.
Default:
MEDIUMAllowed values:
SMALL,MEDIUM,LARGE,XLARGEExample:
size: SMALL - stringnsxt.tier1GatewayPath
Required value
Policy path for the NSX-T tier1 gateway.
Example:
tier1GatewayPath: "/path/tier1" - stringnsxt.user
Required value
NSX-T user name.
Example:
user: user
- objectprovider
Required value
Parameters for connecting to the vCenter.
- booleanprovider.insecure
Set to
trueif vCenter has a self-signed certificate.Default:
false - stringprovider.password
Required value
The user’s password.
- stringprovider.server
Required value
The host or the IP address of the vCenter server.
- stringprovider.username
Required value
The login ID.
- stringregion
Required value
Is a tag added to the vSphere Datacenter where all actions will occur: provisioning VirtualMachines, storing virtual disks on datastores, connecting to the network.
- stringregionTagCategory
Required value
The name of the tag category used to identify the region (vSphere Datacenter).
Default:
k8s-region - stringsshPublicKey
Required value
A public key for accessing nodes.
- stringstoragePolicyID
ID of the SPBM (Storage Policy Based Management) storage policy.
- booleanuseNestedResourcePool
Create nested resource pool (
true) or use main resource pool (false).Default:
true - booleanvmFolderExists
Set the value to
trueif the path specified invmFolderPathexists. Installing more than one cluster in a folder is not possible.Default:
false - stringvmFolderPath
Required value
The path to the VirtualMachine Folder where the cloned VMs will be created.
Example:
vmFolderPath: dev/test - stringzoneTagCategory
Required value
The name of the tag category used to identify the zone (vSphere Cluster).
Default:
k8s-zone - array of stringszones
Required value
The globally restricted set of zones that this Cloud Provider works with.