This feature is available in Enterprise Edition only.
This feature is actively developed. It might significantly change in the future.

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 with 192.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}$

      • 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.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

  • 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}$

      • 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.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.replicasinteger

      Required value

      The number of nodes to create.

  • organizationstring

    Required value

    VMware Cloud 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.

  • sshPublicKeystring

    Required value

    A public key for accessing nodes.

  • virtualApplicationNamestring

    Required value

    VMware Cloud Director Virtual Application name (belongs to Virtual Data Center).

    Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

  • virtualDataCenterstring

    Required value

    VMware Cloud Director Virtual Data Center name (belongs to Organization).