HuaweiCloudClusterConfiguration

Version: deckhouse.io/v1

Describes the configuration of a cloud cluster in Huawei Cloud.

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: HuaweiCloudClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
zones:
- eu-3a
standard:
  externalNetworkName: external-network
provider:
  domainName: "<DOMAIN_NAME>"
  region: eu-3
  accessKey: "<USERNAME>"
  secretKey: "<PASSWORD>"
masterNodeGroup:
  replicas: 1
  instanceClass:
    rootDiskSize: 50
    imageName: debian-11-genericcloud-amd64-20220911-1135
nodeGroups:
- name: front
  replicas: 2
  instanceClass:
    flavorName: m1.large
    imageName: debian-11-genericcloud-amd64-20220911-1135
    rootDiskSize: 50
    configDrive: false
    floatingIPPools:
    - public
    - shared
    additionalSecurityGroups:
    - sec_group_1
    - sec_group_2
  zones:
  - eu-1a
  - eu-1b
  • apiVersion
    string

    Required value

    Allowed values: deckhouse.io/v1

  • kind
    string

    Required value

    Allowed values: HuaweiCloudClusterConfiguration

  • layout
    string

    Required value

    The layout name.

    For details about possible provider layouts, refer to Layouts.

  • masterNodeGroup

    Required value

    The definition of a NodeGroup for master nodes.

    For the changes to take effect, run dhctl converge after modifying the parameters of the masterNodeGroup section.

    • masterNodeGroup.instanceClass
      object

      Required value

      Partial contents of the fields of the HuaweiCloudInstanceClass.

      • masterNodeGroup.instanceClass.etcdDiskSizeGb
        integer

        Etcd disk size in gigabytes.

        Default: 10

        Example:

        etcdDiskSizeGb: 10
        
      • masterNodeGroup.instanceClass.flavorName
        string

        Required value

        The flavor of Huawei Cloud servers.

      • masterNodeGroup.instanceClass.imageName
        string

        Required value

        The image to use while provisioning Huawei Cloud servers.

        For the list of operating systems and specific versions supported by Deckhouse, refer to Supported Kubernetes and OS versions (take into account the Deckhouse version you use).

      • masterNodeGroup.instanceClass.rootDiskSize
        integer

        The size of a root disk in gigabytes.

        This parameter also affects the type of a root disk.

    • masterNodeGroup.replicas
      integer

      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.serverGroup
      object

      The ServerGroup object groups instances together. The instances in the group are placed on the same hypervisor (affinity) or different hypervisors (anti-affinity). This allows you to increase the fault tolerance of the cluster.

      • masterNodeGroup.serverGroup.policy
        string

        Required value

        The policy that determines how instances are distributed among hypervisors.

        • AntiAffinity: Instances are placed on different hypervisors. This policy is managed by Deckhouse.

        Allowed values: AntiAffinity

    • masterNodeGroup.volumeTypeMap
      object

      Required value

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

      Format of dictionary elements: <AVAILABILITY ZONE>: <DISK TYPE> (see the example).

      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 fast-eu-1a disk type, while master-1, master-3 will have the fast-eu-1b disk type.

      Example:

      volumeTypeMap:
        eu-1a: fast-eu-1a
        eu-1b: fast-eu-1b
      
  • nodeGroups
    array of objects

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

    • nodeGroups.instanceClass
      object

      Required value

      Partial contents of the fields.

      • nodeGroups.instanceClass.etcdDiskSizeGb
        integer

        Etcd disk size in gigabytes.

        Default: 10

        Example:

        etcdDiskSizeGb: 10
        
      • nodeGroups.instanceClass.flavorName
        string

        Required value

        The flavor of Huawei Cloud servers.

      • nodeGroups.instanceClass.imageName
        string

        Required value

        The image to use while provisioning Huawei Cloud servers.

        For the list of operating systems and specific versions supported by Deckhouse, refer to Supported Kubernetes and OS versions (take into account the Deckhouse version you use).

      • nodeGroups.instanceClass.rootDiskSize
        integer

        The size of a root disk in gigabytes.

        This parameter also affects the type of a root disk.

    • nodeGroups.name
      string

      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
        object

        Example:

        annotations:
          ai.fleet.com/discombobulate: 'true'
        
      • nodeGroups.nodeTemplate.labels
        object

        A list of labels to attach to all cluster resources, if they support it.

        The same as the metadata.labels standard field.

        If you change a label on a running cluster, recreate all virtual machines after the changes come into effect.

        Example:

        labels:
          environment: production
          app: warp-drive-ai
        
      • nodeGroups.nodeTemplate.taints
        array of objects

        The same as the .spec.taints field of the Node object.

        Available fields: effect, key, and values.

        Example:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • nodeGroups.nodeTemplate.taints.effect
          string

          Allowed values: NoSchedule, PreferNoSchedule, NoExecute

        • nodeGroups.nodeTemplate.taints.key
          string
        • nodeGroups.nodeTemplate.taints.value
          string
    • nodeGroups.replicas
      integer

      Required value

      The number of nodes to create.

  • provider
    object

    Required value

    Huawei Cloud API connection settings.

    These settings match the ones in the connection field of the cloud-provider-huaweicloud module.

    • provider.accessKey
      string

      Required value

      The Huawei Cloud access key.

    • provider.authURL
      string

      The identity authentication URL.

    • provider.cloud
      string

      Required value

      The endpoint of the cloud provider.

    • provider.domainName
      string

      The account name of IAM to scope to.

    • provider.insecure
      boolean

      Trust self-signed SSL certificates.

    • provider.projectID
      string

      The project ID.

    • provider.region
      string

      Required value

      The Huawei Cloud region where the cluster will be deployed.

    • provider.secretKey
      string

      Required value

      The Huawei Cloud secret key.

  • sshPublicKey
    string

    Required value

    A public key for accessing nodes.

  • standard
    object

    Settings for the Standard layout.

    • standard.enableEIP
      boolean

      Enable Elastic IP for the master nodes.

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

    • standard.internalNetworkCIDR
      string

      Required value

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

    • standard.internalNetworkDNSServers
      array of strings

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

      • Element of the array
        string

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

    • standard.internalNetworkSecurity
      boolean

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

      Default: true

  • vpcPeering
    object

    Settings for the VpcPeering layout.

    • vpcPeering.internalNetworkCIDR
      string

      Required value

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

    • vpcPeering.internalNetworkDNSServers
      array of strings

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

      • Element of the array
        string

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

    • vpcPeering.internalNetworkSecurity
      boolean

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

      Default: true

    • vpcPeering.subnet
      string

      The name of the subnet in the VPC.

  • zones
    array of strings

    Not required value.

    The globally restricted set of zones that this cloud provider works with.