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-vcdmodule 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:
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: 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
- stringapiVersion
Required value
Allowed values:
deckhouse.io/v1 - objectbastion
Parameters for the bastion host, which is used to access the cluster’s nodes.
- objectbastion.instanceClass.additionalMetadata
Custom string key-value pairs to be stored in the Metadata of the bastion, useful for organizing and categorizing your virtualization inventory.
The properties in this field will be merged with the existing metadata stored in the
metadatafield at the root of the spec. This field will take precedence over the existing metadata in cases of duplicate keys. - stringbastion.instanceClass.mainNetworkIPAddress
The IP address of the bastion host in the
mainNetwork. If not set, the DHCP client will be enabled.Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ - stringbastion.instanceClass.placementPolicy
Placement policy to be used on this machine.
If no placement policy is specified, the default placement policy will be used to create the bastion host.
Length:
1..128 - integerbastion.instanceClass.rootDiskSizeGb
Root disk size in gigabytes.
Default:
50Allowed values:
0 <= XExample:
rootDiskSizeGb: 50 - stringbastion.instanceClass.sizingPolicy
Required value
Sizing policy to be used on this machine.
If no sizing policy is specified, the default sizing policy will be used to create the bastion host.
Length:
1..128 - stringbastion.instanceClass.storageProfile
Required value
Storage profile to be used on this machine.
Length:
1..128 - bastion.instanceClass.template
Required value
Path of the template OVA that is to be used.
Consists of organization (optional), catalog, template name or template identifier. If a shared catalog is used, the organization name must be specified (it may differ from the value of
provider.organization).If you have templates with the same name in multiple catalogs with the same name, you should specify the identifier of the template.
You can find the template identifier in the URL when you open the template in the VCD UI. For example, if the URL is
https://vcd.example.com/tenant/MyOrg/libraries/catalogs/1032506a-4555-43e1-8589-77b0c0522c75/catalog-vapp-templates/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7/general, then the template identifier is5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7.Length:
1..128
- booleancreateDefaultFirewallRules
If enabled, configures the following default firewall rules for the cluster’s main network (mainNetwork):
- Allows all outgoing connections from mainNetwork.
- Allows all incoming ICMP packets to mainNetwork.
- Allows all incoming TCP connections to mainNetwork on port 22 (SSH).
- Allows all incoming TCP and UDP connections to mainNetwork for NodePorts in the range 30000–32767.
Attention! Using this option together with an Edge Gateway of type NSX-T implies that only one cluster should be deployed per Edge Gateway, because in this case all existing firewall rules will be overwritten.
Default:
false - objectedgeGateway
VMware Cloud Director Edge Gateway parameters (belongs to Virtual Data Center).
- objectedgeGateway.NSX-V
Additional parameters required if
typeis NSX-V.- stringedgeGateway.NSX-V.externalNetworkName
External network name for build DNAT rule for master node. The external network is the one connected to the Edge Gateway in
Gateway Interfaceand has an external IP address.Length:
1..128 - stringedgeGateway.NSX-V.externalNetworkType
External network type for build DNAT rule for master node (one of “org” or “ext”).
Allowed values:
org,ext
- stringedgeGateway.externalIP
Required value
The IP address accessible from external networks through which incoming SSH connections are forwarded to the master node using DNAT.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ - integeredgeGateway.externalPort
The external port mapped by the DNAT rule to forward incoming SSH connections to the master node.
Default:
22Allowed values:
1 <= X <= 65535Example:
externalPort: 22 - stringedgeGateway.name
Required value
VMware Cloud Director Edge Gateway name.
Length:
1..128 - stringedgeGateway.type
Required value
Network virtualization platform type providing the VMware Cloud Director Edge Gateway (one of “NSX-V” or “NSX-T”). The type can be obtained from your administrator.
Allowed values:
NSX-V,NSX-T
- stringinternalNetworkCIDR
Subnet for master nodes in the internal network.
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]))$ - integerinternalNetworkDHCPPoolStartAddress
Specifies the starting address number in the internal network from which the DHCP address pool will begin. Addresses below this number will not be assigned automatically by DHCP and are available for manual allocation. If not set, the default start address is 30.
For example, in a network 192.168.100.128/27, a value of 10 means the DHCP pool will start with the IP address 192.168.100.138. The pool will end at the address immediately before the broadcast address (192.168.100.159), i.e., the last assignable host address.
Allowed values:
2 <= X - array of stringsinternalNetworkDNSServers
A list of addresses of the recursive DNSs servers.
- 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])$
- stringkind
Required value
Allowed values:
VCDClusterConfiguration - stringlayout
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
- booleanlegacyMode
Support for outdated versions of the VCD API.
If set to
true, the API version below37.2will be used.The parameter has an effect only when installing a cluster. In the working cluster, the need to enable the support for outdated versions of the VCD API is determined automatically.
Default:
false - stringmainNetwork
Required value
Path to the network that VirtualMachines’ primary NICs will connect to (default gateway).
Example:
mainNetwork: internal - 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 VCDInstanceClass.
- objectmasterNodeGroup.instanceClass.additionalMetadata
Custom string key-value pairs to be stored in the Metadata of every master node VM, useful for organizing and categorizing your virtualization inventory.
The properties in this field will be merged with the existing metadata stored in the
metadatafield at the root of the spec. This field will take precedence over the existing metadata in cases of duplicate keys. - integermasterNodeGroup.instanceClass.etcdDiskSizeGb
Etcd disk size in gigabytes.
Default:
10Example:
etcdDiskSizeGb: 10 - array of stringsmasterNodeGroup.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- stringElement 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}$
- stringmasterNodeGroup.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 - integermasterNodeGroup.instanceClass.rootDiskSizeGb
Root disk size in gigabytes.
Default:
50Example:
rootDiskSizeGb: 50 - stringmasterNodeGroup.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 - stringmasterNodeGroup.instanceClass.storageProfile
Required value
StorageProfile is the storage profile to be used on this machine.
Example:
storageProfile: ssd - stringmasterNodeGroup.instanceClass.template
Required value
Path of the template OVA that is to be used.
Consists of organization (optional), catalog, template name or template identifier. If a shared catalog is used, the organization name must be specified (it may differ from the value of
provider.organization).If you have templates with the same name in multiple catalogs with the same name, you should specify the identifier of the template.
You can find the template identifier in the URL when you open the template in the VCD UI. For example, if the URL is
https://vcd.example.com/tenant/MyOrg/libraries/catalogs/1032506a-4555-43e1-8589-77b0c0522c75/catalog-vapp-templates/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7/general, then the template identifier is5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7.Examples:
template: Linux/ubuntu2204-cloud-ovatemplate: MyOrg/Linux/ubuntu2204-cloud-ovatemplate: Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7template: MyOrg/Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7
- 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
- objectmetadata
Custom metadata entries to be stored in cluster objects such as virtual machines, disks and network.
Clearing the
metadataandadditionalMetadatafields, if they contain any keys, will result in all metadata no longer being tracked except for nodes of the CloudEphemeral type. This means that if you need to remove metadata entirely, you will have to do it manually.Warning. Changing the metadata will cause the recreation of CloudEphemeral nodes.
- array of objectsnodeGroups
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- objectnodeGroups.instanceClass.additionalMetadata
Custom string key-value pairs to be stored in the Metadata of every node VM, useful for organizing and categorizing your virtualization inventory.
The properties in this field will be merged with the existing metadata stored in the
metadatafield at the root of the spec. This field will take precedence over the existing metadata in cases of duplicate keys. - array of stringsnodeGroups.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- stringElement 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}$
- stringnodeGroups.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 - integernodeGroups.instanceClass.rootDiskSizeGb
Root disk size in gigabytes.
Default:
50Example:
rootDiskSizeGb: 50 - stringnodeGroups.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 - stringnodeGroups.instanceClass.storageProfile
Required value
StorageProfile is the storage profile to be used on this machine.
Example:
storageProfile: ssd - stringnodeGroups.instanceClass.template
Required value
Path of the template OVA that is to be used.
Consists of organization (optional), catalog, template name or template identifier. If a shared catalog is used, the organization name must be specified (it may differ from the value of
provider.organization).If you have templates with the same name in multiple catalogs with the same name, you should specify the identifier of the template.
You can find the template identifier in the URL when you open the template in the VCD UI. For example, if the URL is
https://vcd.example.com/tenant/MyOrg/libraries/catalogs/1032506a-4555-43e1-8589-77b0c0522c75/catalog-vapp-templates/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7/general, then the template identifier is5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7.Examples:
template: Linux/ubuntu2204-cloud-ovatemplate: MyOrg/Linux/ubuntu2204-cloud-ovatemplate: Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7template: MyOrg/Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7
- 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.
- stringorganization
Required value
VMware Cloud Director Organization name.
- objectprovider
Required value
Parameters for connecting to the VCD.
- stringprovider.apiToken
The token for authentication.
Caution! When using
apiToken, leaveusernameandpasswordempty. - booleanprovider.insecure
Set to
trueif VCD has a self-signed certificate.Default:
false - stringprovider.password
The user’s password.
- stringprovider.server
Required value
The host or the IP address of the VCD server.
- stringprovider.username
The login ID.
- stringsshPublicKey
Required value
A public key for accessing nodes.
- stringvirtualApplicationName
Required value
VMware Cloud Director Virtual Application name (belongs to Virtual Data Center).
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - stringvirtualDataCenter
Required value
VMware Cloud Director Virtual Data Center name (belongs to Organization).