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-vcd
module in the Deckhouse configuration. Otherwise, if the cluster control plane is hosted in a cloud, the cloud provider uses the VCDClusterConfiguration structure for configuration.
VCDClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in VCD.
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: VCDClusterConfiguration
sshPublicKey: "<SSH_PUBLIC_KEY>"
organization: My_Org
virtualDataCenter: My_Org
virtualApplicationName: Cloud
mainNetwork: internal
layout: Standard
internalNetworkCIDR: 172.16.2.0/24
masterNodeGroup:
replicas: 1
instanceClass:
template: Templates/ubuntu-focal-20.04
sizingPolicy: 4cpu8ram
rootDiskSizeGb: 20
etcdDiskSizeGb: 20
storageProfile: nvme
nodeGroups:
- name: worker
replicas: 1
instanceClass:
template: Templates/ubuntu-focal-20.04
sizingPolicy: 16cpu32ram
storageProfile: ssd
provider:
server: "<SERVER>"
username: "<USERNAME>"
password: "<PASSWORD>"
insecure: true
- apiVersionstring
Required value
Allowed values:
deckhouse.io/v1
- internalNetworkCIDRstring
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/24
subnet, addresses will be allocated starting with192.168.199.10
.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]))$
- kindstring
Required value
Allowed values:
VCDClusterConfiguration
- layoutstring
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
- mainNetworkstring
Required value
Path to the network that VirtualMachines’ primary NICs will connect to (default gateway).
Example:
mainNetwork: internal
- 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 VCDInstanceClass.
- masterNodeGroup.instanceClass.etcdDiskSizeGbinteger
Etcd disk size in gigabytes.
Default:
10
Example:
etcdDiskSizeGb: 10
- masterNodeGroup.instanceClass.mainNetworkIPAddressesarray of strings
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: - 10.1.14.20 - 10.1.4.21
- Element of the arraystring
An IP address with a CIDR prefix.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- Element of the arraystring
- masterNodeGroup.instanceClass.placementPolicystring
PlacementPolicy is the placement policy to be used on this machine. If no placement policy is specified, default placement policy will be used to create the nodes.
Example:
placementPolicy: Hypervisor1
- masterNodeGroup.instanceClass.rootDiskSizeGbinteger
root disk size in gigabytes.
Default:
20
Example:
rootDiskSizeGb: 20
- masterNodeGroup.instanceClass.sizingPolicystring
Required value
SizingPolicy is the sizing policy to be used on this machine. If no sizing policy is specified, default sizing policy will be used to create the nodes.
Example:
sizingPolicy: 4Cpu8Memory
- masterNodeGroup.instanceClass.storageProfilestring
Required value
StorageProfile is the storage profile to be used on this machine.
Example:
storageProfile: ssd
- masterNodeGroup.instanceClass.templatestring
Required value
Path of the template OVA that is to be used. Consists of catalog and template path.
Example:
template: Linux/ubuntu2204-cloud-ova
- masterNodeGroup.instanceClass.etcdDiskSizeGbinteger
- 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
- masterNodeGroup.instanceClassobject
- 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 VCDInstanceClass.
- nodeGroups.instanceClass.mainNetworkIPAddressesarray of strings
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: - 10.1.14.20 - 10.1.4.21
- Element of the arraystring
An IP address with a CIDR prefix.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- Element of the arraystring
- nodeGroups.instanceClass.placementPolicystring
PlacementPolicy is the placement policy to be used on this machine. If no placement policy is specified, default placement policy will be used to create the nodes.
Example:
placementPolicy: Hypervisor1
- nodeGroups.instanceClass.rootDiskSizeGbinteger
root disk size in gigabytes.
Default:
20
Example:
rootDiskSizeGb: 20
- nodeGroups.instanceClass.sizingPolicystring
Required value
SizingPolicy is the sizing policy to be used on this machine. If no sizing policy is specified, default sizing policy will be used to create the nodes.
Example:
sizingPolicy: 4Cpu8Memory
- nodeGroups.instanceClass.storageProfilestring
Required value
StorageProfile is the storage profile to be used on this machine.
Example:
storageProfile: ssd
- nodeGroups.instanceClass.templatestring
Required value
Path of the template OVA that is to be used. Consists of catalog and template path.
Example:
template: Linux/ubuntu2204-cloud-ova
- nodeGroups.instanceClass.mainNetworkIPAddressesarray of strings
- 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.nodeTemplate.taints.effectstring
- nodeGroups.nodeTemplate.annotationsobject
- nodeGroups.replicasinteger
Required value
The number of nodes to create.
- nodeGroups.instanceClassobject
- organizationstring
Required value
Vcloud Director Organization name.
- providerobject
Required value
Parameters for connecting to the VCD.
- provider.insecureboolean
Set to
true
if VCD has a self-signed certificate.Default:
false
- provider.passwordstring
Required value
The user’s password.
- provider.serverstring
Required value
The host or the IP address of the VCD server.
- provider.usernamestring
Required value
The login ID.
- provider.insecureboolean
- sshPublicKeystring
Required value
A public key for accessing nodes.
- virtualApplicationNamestring
Required value
Vcloud Director Virtual Application name (belongs to Virtual Data Center).
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- virtualDataCenterstring
Required value
Vcloud Director Virtual Data Center name (belongs to Organization).