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 svc/deckhouse-leader -c 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: Org/Templates/ubuntu-focal-20.04
sizingPolicy: 16cpu32ram
storageProfile: ssd
provider:
server: "<SERVER>"
username: "<USERNAME>"
password: "<PASSWORD>"
insecure: true
- apiVersion
Required value
Allowed values:
deckhouse.io/v1
- internalNetworkCIDR
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]))$
- kind
Required value
Allowed values:
VCDClusterConfiguration
- layout
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
- mainNetwork
Required value
Path to the network that VirtualMachines’ primary NICs will connect to (default gateway).
Example:
mainNetwork: internal
- 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 VCDInstanceClass.
- masterNodeGroup.instanceClass.etcdDiskSizeGb
Etcd disk size in gigabytes.
Default:
10
Example:
etcdDiskSizeGb: 10
- masterNodeGroup.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: - 10.1.14.20 - 10.1.4.21
- Element of the array
An IP address with a CIDR prefix.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- masterNodeGroup.instanceClass.placementPolicy
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.rootDiskSizeGb
root disk size in gigabytes.
Default:
50
Example:
rootDiskSizeGb: 50
- masterNodeGroup.instanceClass.sizingPolicy
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.storageProfile
Required value
StorageProfile is the storage profile to be used on this machine.
Example:
storageProfile: ssd
- masterNodeGroup.instanceClass.template
Required value
Path of the template OVA that is to be used.
Consists of organization (optional), catalog, template path. Organization may not match with provider.organization (in case of shared templates).
Example:
template: Linux/ubuntu2204-cloud-ova
- 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.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: - 10.1.14.20 - 10.1.4.21
- Element of the array
An IP address with a CIDR prefix.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- nodeGroups.instanceClass.placementPolicy
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.rootDiskSizeGb
root disk size in gigabytes.
Default:
50
Example:
rootDiskSizeGb: 50
- nodeGroups.instanceClass.sizingPolicy
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.storageProfile
Required value
StorageProfile is the storage profile to be used on this machine.
Example:
storageProfile: ssd
- nodeGroups.instanceClass.template
Required value
Path of the template OVA that is to be used.
Consists of organization (optional), catalog, template path. Organization may not match with provider.organization (in case of shared templates).
Example:
template: Linux/ubuntu2204-cloud-ova
- 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.
- organization
Required value
VMware Cloud Director Organization name.
- provider
Required value
Parameters for connecting to the VCD.
- provider.apiToken
The token for authentication.
Caution! When using
apiToken
, leaveusername
andpassword
empty. - provider.insecure
Set to
true
if VCD has a self-signed certificate.Default:
false
- provider.password
The user’s password.
- provider.server
Required value
The host or the IP address of the VCD server.
- provider.username
The login ID.
- sshPublicKey
Required value
A public key for accessing nodes.
- virtualApplicationName
Required value
VMware Cloud Director Virtual Application name (belongs to Virtual Data Center).
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- virtualDataCenter
Required value
VMware Cloud Director Virtual Data Center name (belongs to Organization).