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
Required value
Allowed values:
deckhouse.io/v1
- kind
Required value
Allowed values:
HuaweiCloudClusterConfiguration
- layout
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 themasterNodeGroup
section.- masterNodeGroup.instanceClass
Required value
Partial contents of the fields of the HuaweiCloudInstanceClass.
- masterNodeGroup.instanceClass.etcdDiskSizeGb
Etcd disk size in gigabytes.
Default:
10
Example:
etcdDiskSizeGb: 10
- masterNodeGroup.instanceClass.flavorName
Required value
The flavor of Huawei Cloud servers.
- masterNodeGroup.instanceClass.imageName
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
The size of a root disk in gigabytes.
This parameter also affects the type of a root disk.
- 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
- masterNodeGroup.serverGroup
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
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
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, ifreplicas: 5
, then master-0, master-2, master-4 will have thefast-eu-1a
disk type, while master-1, master-3 will have thefast-eu-1b
disk type.Example:
volumeTypeMap: eu-1a: fast-eu-1a eu-1b: fast-eu-1b
- nodeGroups
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- nodeGroups.instanceClass
Required value
Partial contents of the fields.
- nodeGroups.instanceClass.etcdDiskSizeGb
Etcd disk size in gigabytes.
Default:
10
Example:
etcdDiskSizeGb: 10
- nodeGroups.instanceClass.flavorName
Required value
The flavor of Huawei Cloud servers.
- nodeGroups.instanceClass.imageName
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
The size of a root disk in gigabytes.
This parameter also affects the type of a root disk.
- 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 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
The same as the
.spec.taints
field of the Node object.Available fields:
effect
,key
, andvalues
.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.
- provider
Required value
Huawei Cloud API connection settings.
These settings match the ones in the
connection
field of the cloud-provider-huaweicloud module.- provider.accessKey
Required value
The Huawei Cloud access key.
- provider.authURL
The identity authentication URL.
- provider.cloud
Required value
The endpoint of the cloud provider.
- provider.domainName
The account name of IAM to scope to.
- provider.insecure
Trust self-signed SSL certificates.
- provider.projectID
The project ID.
- provider.region
Required value
The Huawei Cloud region where the cluster will be deployed.
- provider.secretKey
Required value
The Huawei Cloud secret key.
- sshPublicKey
Required value
A public key for accessing nodes.
- standard.enableEIP
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
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
A list of addresses of the recursive DNSs for the internal cluster node network.
- Element 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])$
- standard.internalNetworkSecurity
Defines whether SecurityGroups must be configured for the internal network ports.
Default:
true
- vpcPeering.internalNetworkCIDR
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
A list of addresses of the recursive DNSs for the internal cluster node network.
- Element 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])$
- vpcPeering.internalNetworkSecurity
Defines whether SecurityGroups must be configured for the internal network ports.
Default:
true
- vpcPeering.subnet
The name of the subnet in the VPC.
- zones
Not required value.
The globally restricted set of zones that this cloud provider works with.