This feature is available in Enterprise Edition only.

OpenStackClusterConfiguration

Version: deckhouse.io/v1

  • apiVersion (string)

    Allowed values: deckhouse.io/v1, deckhouse.io/v1alpha1

    Required value.

  • kind (string)

    Allowed values: OpenStackClusterConfiguration

    Required value.

  • layout (string)

    The way resources are located in the cloud.

    Read more about possible provider layouts.

    Required value.

  • masterNodeGroup

    The definition of the master’s NodeGroup.

    Required value.

    • instanceClass (object)

      Partial contents of the fields of the OpenStackInstanceClass.

      Required value.

      • additionalSecurityGroups (array of strings)

        Security groups that will be applied to VM’s network ports in addition to security groups set in a cloud provider configuration.

        They allow you to set firewall rules for provisioned instances.

        The SecurityGroups may not be supported by the cloud provider.

      • additionalTags (object)

        The additional tags to attach to the instances created (in addition to those specified in the cloud provider configuration).

        Example:

        project: cms-production
        severity: critical
        
      • flavorName (string)

        Flavor of OpenStack servers.

        Get a list of all available flavors: openstack flavor list.

        Required value.

      • imageName (string)

        Image to use while provisioning OpenStack servers.

        Use this command to get a list of available images: openstack image list.

        Caution! Currently, only Ubuntu 18.04, Ubuntu 20.04, Centos 7 are supported and tested to work.

        Required value.

      • rootDiskSize (integer)

        The size of a root disk (in gigabytes).

        If the parameter is not set, a local disk with the size specified in flavor is used for the instance. If the parameter is set, the instance will use the Cinder volume provisioned by OpenStack as a root disk (of the standard cluster type and the specified size).

        If there are several types of disks in cloud provider, you can set a default disk type for the image in order to select a specific VM’s disk type; to do this, specify the name of a disk type in the image metadata. Also, you may need to create a custom OpenStack image; the “How do I create an image in OpenStack” section describes how to do it

        openstack volume type list
        openstack image set ubuntu-18-04-cloud-amd64 --property cinder_img_volume_type=VOLUME_NAME
        
    • replicas (integer)

      The number of master nodes to create.

      Allowed values: 1 <= X

      Required value.

    • volumeTypeMap (object)

      A dictionary of disk types for storing etcd data and Kubernetes configuration files.

      If the rootDiskSize parameter is specified, the same disk type will be used for the VM’s boot drive.

      We recommend using the fastest disks provided by the provider in all cases.

      If the value specified in replicas exceeds the number of elements in the dictionary, the master nodes whose number exceeds the length of the dictionary get the values starting from the beginning of the dictionary. For example, if replicas: 5, then master-0, master-2, master-4 will have the ru-1a disk type, while master-1, master-3 will have the ru-1b disk type

      The format ia a dictionary where the key is the name of the zone, value - disk type.

      Example:

      ru-1a: fast-ru-1a
      ru-1b: fast-ru-1b
      

      Required value.

  • nodeGroups (array of objects)

    An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).

    • instanceClass (object)

      Partial contents of the fields of the OpenStackInstanceClass.

      Required value.

      • additionalNetworks (array of strings)

        Paths to networks that VirtualMachines’ secondary NICs will connect to.

        Example: "BGP-network-VLAN-3894", "External-VLAN-3699"

      • additionalSecurityGroups (array of strings)

        Security groups that will be applied to VM’s network ports in addition to security groups set in a cloud provider configuration.

        They allow you to set firewall rules for provisioned instances.

        The SecurityGroups may not be supported by the cloud provider.

      • additionalTags (object)

        The additional tags to attach to the instances created (in addition to those specified in the cloud provider configuration).

        Example:

        project: cms-production
        severity: critical
        
      • configDrive (boolean)

        Specifies whether an additional disk containing the bootstrapping configuration will be mounted to the node.

        You must set it if DHCP is disabled in the mainNetwork.

        Default: false

        Not required value.

      • flavorName (string)

        Flavor of OpenStack servers.

        Get a list of all available flavors: openstack flavor list.

        Required value.

      • floatingIPPools (array of strings)

        A list of networks to assign Floating IPs to nodes.

      • imageName (string)

        Image to use while provisioning OpenStack servers.

        Use this command to get a list of available images: openstack image list.

        Caution! Currently, only Ubuntu 18.04, Ubuntu 20.04, Centos 7 are supported and tested to work.

        Required value.

      • mainNetwork (string)

        Path to the network that VirtualMachines’ primary NICs will connect to (default gateway).

        Required value.

      • networksWithSecurityDisabled (array of strings)

        A list of mainNetwork and additionalNetworks in which SecurityGroups and AllowedAddressPairs on ports CANNOT be configured.

      • rootDiskSize (integer)

        The size of a root disk (in gigabytes).

        If the parameter is not set, a local disk with the size specified in flavor is used for the instance. If the parameter is set, the instance will use the Cinder volume provisioned by OpenStack as a root disk (of the standard cluster type and the specified size).

        If there are several types of disks in cloud provider, you can set a default disk type for the image in order to select a specific VM’s disk type; to do this, specify the name of a disk type in the image metadata. Also, you may need to create a custom OpenStack image; the “How do I create an image in OpenStack” section describes how to do it

        openstack volume type list
        openstack image set ubuntu-18-04-cloud-amd64 --property cinder_img_volume_type=VOLUME_NAME
        
    • name (string)

      The name of the NodeGroup to use for generating node names.

      Required value.

    • nodeTemplate

      Parameters of Node objects in Kubernetes to add after registering the node.

      • annotations (object)

        The same as the metadata.annotations standard field.

        Example:

        annotations:
          ai.fleet.com/discombobulate: "true"
        
      • labels (object)

        A list of labels to attach to cluster resources.

        The same as the metadata.labels standard field.

        Note that you have to re-create all the machines to add new tags if tags were modified in the running cluster.

        Format — key: value.

        Example:

        labels:
          environment: production
          app: warp-drive-ai
        
      • taints (array 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
        
        • effect (string)

          Allowed values: NoSchedule, PreferNoSchedule, NoExecute

        • key (string)
        • value (string)
    • replicas (integer)

      The number of nodes to create.

      Required value.

    • zones (array of strings)

      A limited set of zones in which nodes can be created.

      Not required value.

  • provider (object)

    Contains settings to connect to the OpenStack API.

    These settings are the same as those in the connection field of the cloud-provider-openstack module.

    Required value.

    • authURL (string)

      An OpenStack Identity API URL.

    • caCert (string)

      Specify the CA x509 certificate used for signing if the OpenStack API has a self-signed certificate. Certificate should be passed in PEM format as multiline string.

      Example:

      caCert: |
        -----BEGIN CERTIFICATE-----
        MIIFyDCCBLCgAwIBAgIQBwDIWH1asdaKNaALUa4NUzANBgkqhkiG9w0BAQsFADBc
        ...
        -----END CERTIFICATE-----
      
    • domainName (string)

      The domain name.

    • password (string)

      The user’s password.

    • region (string)

      The OpenStack region where the cluster will be deployed.

    • tenantID (string)

      The project id.

      Cannot be used together with tenantName.

    • tenantName (string)

      The project name.

      Cannot be used together with tenantID.

    • username (string)

      The name of the user that has full project privileges.

  • simple (object)

    Settings for the Simple layout.

    • externalNetworkDHCP (boolean)

      This parameter defines if DHCP is enabled in the external network.

      Default: true

    • externalNetworkName (string)

      The name of the network for external connections.

      Required value.

    • podNetworkMode (string)

      Sets the traffic mode for the network that the pods use to communicate with each other (usually, it is an internal network; however, there can be exceptions).

      • DirectRouting — nodes are directly routed (SecurityGroups are disabled in this mode).
      • VXLAN — direct routing does NOT work between nodes, VXLAN must be used (SecurityGroups are disabled in this mode).

      Caution! After changing this parameter, you need to run dhctl converge. Caution! All cluster nodes must be rebooted after switching work mode from/to VXLAN.

      Default: "VXLAN"

      Allowed values: VXLAN, DirectRouting

  • simpleWithInternalNetwork (object)

    Settings for the SimpleWithInternalNetwork layout.

    • externalNetworkName (string)

      The name of the network for external connections.

    • internalSubnetName (string)

      The name of the subnet in which the cluster nodes will run.

      Required value.

    • masterWithExternalFloatingIP (boolean)

      Defines if floating IP must be assigned to master nodes.

      Default: true

    • podNetworkMode (string)

      Sets the traffic mode for the network that the pods use to communicate with each other (usually, it is an internal network; however, there can be exceptions).

      • DirectRouting — nodes are directly routed (SecurityGroups are disabled in this mode).
      • DirectRoutingWithPortSecurityEnabled — direct routing is enabled between the nodes, but only if the range of addresses of the internal network is explicitly allowed in OpenStack for Ports.
        • Caution! Make sure that the username can edit AllowedAddressPairs on Ports connected to the internalNetworkName network. Usually, an OpenStack user doesn’t have such a privilege if the network has the shared flag set.
      • VXLAN — direct routing does NOT work between nodes, VXLAN must be used (SecurityGroups are disabled in this mode).

      Caution! After changing this parameter, you need to run dhctl converge. Caution! All cluster nodes must be rebooted after switching work mode from/to VXLAN.

      Default: "DirectRoutingWithPortSecurityEnabled"

      Allowed values: VXLAN, DirectRouting, DirectRoutingWithPortSecurityEnabled

  • sshPublicKey (string)

    A public key for accessing nodes.

    Required value.

  • standard (object)

    Settings for the Standard layout.

    • externalNetworkName (string)

      The name of the network for external connections.

      Required value.

    • internalNetworkCIDR (string)

      Routing for the internal cluster 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]))$

      Required value.

    • internalNetworkDNSServers (array of strings)

      A list of addresses of the recursive DNSs of the internal cluster network.

      Required value.

      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])$

    • internalNetworkSecurity (boolean)

      Defines whether SecurityGroups and AllowedAddressPairs must be configured for ports of the internal network.

      Default: true

  • standardWithNoRouter (object)

    Settings for the StandardWithNoRouter layout.

    • externalNetworkDHCP (boolean)

      This parameter defines if DHCP is enabled in the external network.

      Default: true

    • externalNetworkName (string)

      The name of the network for external connections.

      Required value.

    • internalNetworkCIDR (string)

      Routing for the internal cluster 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]))$

      Required value.

    • internalNetworkSecurity (boolean)

      Defines whether SecurityGroups and AllowedAddressPairs must be configured for ports of the internal network.

      Default: true

  • tags (object)

    A dictionary of tags to create on all resources that support this feature.

    You have to re-create all the machines to add new tags if tags were modified in the running cluster.

    Not required value.

  • zones (array of strings)

    The globally restricted set of zones that this Cloud Provider works with.

    Not required value.