YandexClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in Yandex 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:
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: YandexClusterConfiguration
layout: Standard
nodeNetworkCIDR: 127.0.0.1/8
labels:
label-2: b
sshPublicKey: "<SSH_PUBLIC_KEY>"
masterNodeGroup:
replicas: 1
instanceClass:
cores: 4
memory: 8192
imageID: fd85m9q2qspfnsv055rh
nodeGroups:
- name: worker
replicas: 1
zones:
- ru-central1-a
instanceClass:
cores: 4
memory: 8192
imageID: fd85m9q2qspfnsv055rh
coreFraction: 50
externalIPAddresses:
- 198.51.100.5
- Auto
provider:
cloudID: "<CLOUD_ID>"
folderID: "<FOLDER_ID>"
serviceAccountJSON: |
{
"id": "id",
"service_account_id": "service_account_id",
"key_algorithm": "RSA_2048",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIwID....AQAB\n-----END PUBLIC KEY-----\n",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIE....1ZPJeBLt+\n-----END PRIVATE KEY-----\n"
}
- stringapiVersion
Required value
Allowed values:
deckhouse.io/v1,deckhouse.io/v1alpha1 - objectdhcpOptions
A list of DHCP parameters to use for all subnets.
Note that setting dhcpOptions may lead to problems.
- stringdhcpOptions.domainName
The name of the search domain.
- array of stringsdhcpOptions.domainNameServers
A list of recursive DNS addresses.
- stringElement of the array
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- stringexistingNetworkID
The ID of the existing VPC Network.
- objectexistingZoneToSubnetIDMap
One or more pre-existing subnets mapped to respective zone.
Warning! Deckhouse will create a route table that must be manually attached to these subnets. You can only associate one routing table with a given subnet. This means you cannot run multiple clusters using
cni-simple-bridgein the same subnets. To run multiple clusters in the same network ranges, usecni-ciliuminstead.Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$Example:
existingZoneToSubnetIDMap: ru-central1-a: e2lu8r1tbbtryhdpa9ro ru-central1-b: e2lu8r1tbbtryhdpa9ro ru-central1-d: e2lu8r1tbbtryhdpa9ro - stringkind
Required value
Allowed values:
YandexClusterConfiguration - objectlabels
Labels to attach to resources created in the Yandex Cloud.
Note that you have to re-create all the machines to add new labels if labels were modified in the running cluster.
- stringlayout
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
Allowed values:
Standard,WithoutNAT,WithNATInstance - 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 YandexInstanceClass.
- objectmasterNodeGroup.instanceClass.additionalLabels
Additional labels.
Example:
project: cms-production severity: critical - integermasterNodeGroup.instanceClass.cores
Required value
Amount of CPU cores to provision on a Yandex Compute Instance.
- integermasterNodeGroup.instanceClass.diskSizeGB
Yandex Compute Instance disk size in gibibytes.
Default:
50Example:
diskSizeGB: 0 - stringmasterNodeGroup.instanceClass.diskType
Yandex Compute Instance disk type. Size of
network-ssd-nonreplicatedandnetwork-ssd-io-m3disks must be a multiple of 93 GB.Default:
network-ssdAllowed values:
network-ssd,network-ssd-io-m3,network-ssd-nonreplicatedExample:
diskType: network-ssd-io-m3 - integermasterNodeGroup.instanceClass.etcdDiskSizeGb
etcd disk size in gibibytes.
If this parameter is changed, each etcd disk must be manually expanded in the Yandex Cloud interface (the reason for this behavior is in the issue).
Default:
10Example:
etcdDiskSizeGb: 10 - array of stringsmasterNodeGroup.instanceClass.externalIPAddresses
A list of external IP addresses, listed in the order of the zones where nodes will be created.
The following values can be specified in the list:
- IP address from an additional external network for the corresponding zone (parameter
externalSubnetIDs); - reserved public IP address, if the list of additional external networks is not defined (parameter
externalSubnetIDs); Auto, to order a public IP address in the corresponding zone.
Please note:
-
The array elements must be listed according to the order of zones (parameter
zones) in which the nodes will be created.For example:
- <RU-CENTRAL1-A-IP-ADDRESS> - <RU-CENTRAL1-B-IP-ADDRESS> - <RU-CENTRAL1-D-IP-ADDRESS> - The number of elements in the
externalIPAddressesarray must equal the number of nodes in the group (thereplicasparameter). To automatically order public IP addresses in the zone, use the valueAutoin the list of theexternalIPAddressesparameter at the corresponding position (matching the order of zones). - If
externalIPAddressesis not specified, the nodes in the group will be ordered without external IP addresses.
- stringElement of the array
Pattern:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- IP address from an additional external network for the corresponding zone (parameter
- stringmasterNodeGroup.instanceClass.externalSubnetIDDeprecated
If specified, an additional network interface will be added to the node (the latter will use it as a default route).
- array of stringsmasterNodeGroup.instanceClass.externalSubnetIDs
List of additional external networks connected to the nodes.
The node interface that is in the list will be assigned as the default gateway.
Also, a route for the node’s internal network interface will be added for the entire subnet specified in nodeNetworkCIDR.
The array elements must be listed in the same order as the zones (parameter
zones) in which the nodes will be created. For example:- <RU-CENTRAL1-A-SUBNET-ID> - <RU-CENTRAL1-B-SUBNET-ID> - <RU-CENTRAL1-D-SUBNET-ID> - stringmasterNodeGroup.instanceClass.imageID
Required value
Image ID to use while provisioning Yandex Compute Instances.
Example:
imageID: fd85m9q2qspfnsv055rh - integermasterNodeGroup.instanceClass.memory
Required value
Amount of primary memory in MB provision on a Yandex Compute Instance.
Example:
memory: 8192 - stringmasterNodeGroup.instanceClass.networkType
Network type.
Default:
StandardAllowed values:
Standard,SoftwareAccelerated - stringmasterNodeGroup.instanceClass.platform
The type of virtual machine to create.
Default:
standard-v2
- 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 - arraymasterNodeGroup.zones
Not required value.
A limited set of zones in which master nodes can be created.
The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone.
- Element of the array
Allowed values:
ru-central1-a,ru-central1-b,ru-central1-d
- array of objectsnodeGroups
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- objectnodeGroups.instanceClass
Required value
Partial contents of the fields of the YandexInstanceClass.
- objectnodeGroups.instanceClass.additionalLabels
Additional labels.
Example:
project: cms-production severity: critical - integernodeGroups.instanceClass.coreFraction
Percent of reserved CPU capacity on a Yandex Compute Instance. Details…
Default:
100Allowed values:
5,20,50,100Example:
coreFraction: 20 - integernodeGroups.instanceClass.cores
Required value
Amount of CPU cores to provision on a Yandex Compute Instance.
- integernodeGroups.instanceClass.diskSizeGB
Yandex Compute Instance disk size in gibibytes.
Default:
50Example:
diskSizeGB: 0 - stringnodeGroups.instanceClass.diskType
Yandex Compute Instance disk type. Size of
network-ssd-nonreplicatedandnetwork-ssd-io-m3disks must be a multiple of 93 GB.Default:
network-ssdAllowed values:
network-ssd,network-ssd-io-m3,network-ssd-nonreplicatedExample:
diskType: network-ssd-io-m3 - array of stringsnodeGroups.instanceClass.externalIPAddresses
A list of external IP addresses, listed in the order of the zones where nodes will be created.
The following values can be specified in the list:
- IP address from an additional external network for the corresponding zone (parameter
externalSubnetIDs); - reserved public IP address, if the list of additional external networks is not defined (parameter
externalSubnetIDs); Auto, to order a public IP address in the corresponding zone.
Please note:
-
The array elements must be listed according to the order of zones (parameter
zones) in which the nodes will be created.For example:
- <RU-CENTRAL1-A-IP-ADDRESS> - <RU-CENTRAL1-B-IP-ADDRESS> - <RU-CENTRAL1-D-IP-ADDRESS> - The number of elements in the
externalIPAddressesarray must equal the number of nodes in the group (thereplicasparameter). To automatically order public IP addresses in the zone, use the valueAutoin the list of theexternalIPAddressesparameter at the corresponding position (matching the order of zones). - If
externalIPAddressesis not specified, the nodes in the group will be ordered without external IP addresses.
- stringElement of the array
Pattern:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- IP address from an additional external network for the corresponding zone (parameter
- stringnodeGroups.instanceClass.externalSubnetIDDeprecated
If specified, an additional network interface will be added to the node (the latter will use it as a default route).
- array of stringsnodeGroups.instanceClass.externalSubnetIDs
List of additional external networks connected to the nodes.
The node interface that is in the list will be assigned as the default gateway.
Also, a route for the node’s internal network interface will be added for the entire subnet specified in nodeNetworkCIDR.
The array elements must be listed in the same order as the zones (parameter
zones) in which the nodes will be created. For example:- <RU-CENTRAL1-A-SUBNET-ID> - <RU-CENTRAL1-B-SUBNET-ID> - <RU-CENTRAL1-D-SUBNET-ID> - stringnodeGroups.instanceClass.imageID
Required value
Image ID to use while provisioning Yandex Compute Instances.
Example:
imageID: fd85m9q2qspfnsv055rh - integernodeGroups.instanceClass.memory
Required value
Amount of primary memory in MB provision on a Yandex Compute Instance.
Example:
memory: 8192 - stringnodeGroups.instanceClass.networkType
Network type.
Default:
StandardAllowed values:
Standard,SoftwareAccelerated - stringnodeGroups.instanceClass.platform
The type of virtual machine to create.
Default:
standard-v2
- 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.Note that you have to re-create all the machines to add new tags if tags were modified in the running cluster.
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.
- arraynodeGroups.zones
A limited set of zones in which nodes can be created.
The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone.
- Element of the array
Allowed values:
ru-central1-a,ru-central1-b,ru-central1-d
- stringnodeNetworkCIDR
Required value
This subnet will be split into three equal parts.
They will serve as a basis for subnets in three Yandex Cloud zones.
- stringprovider.cloudID
Required value
The cloud ID.
- stringprovider.folderID
Required value
ID of the directory.
- stringprovider.serviceAccountJSON
Required value
A key to the Service Account in the JSON format.
You can get it by using
[yc iam key create](environment.html)command.Pattern:
^[ \t\n]*\{(.|\n)*\}[ \t\n]*$Example:
serviceAccountJSON: | { "id": "...", "service_account_id": "...", "created_at": "2022-08-04T05:38:34.756137618Z", "key_algorithm": "RSA_2048", "public_key": "-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\n", "private_key": "-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n" }
- stringsshPublicKey
Required value
A public key for accessing nodes.
- stringwithNATInstance.exporterAPIKey
API-key for cloud metrics exporter.
- If parameter is empty, cloud metrics exporter will not be deployed in the cluster.
- If parameter is
Auto, Deckhouse will create service account with themonitoring.viewerrole and create API-key manually. Provider service account should have theadminrole. - Any other value is considered a valid API-key. See this instruction for creating API-key.
Service account should have
monitoring.viewerrole.
Default:
- stringwithNATInstance.externalSubnetID
If specified, an additional network interface will be added to the node (the node will use it as a default route).
- withNATInstance.internalSubnetCIDR
CIDR of an automatically created subnet for the internal interface. Overrides
internalSubnetIDparameter. - stringwithNATInstance.internalSubnetID
ID of a subnet for the internal interface.
- stringwithNATInstance.natInstanceExternalAddress
A reserved external IP address (or
externalSubnetIDaddress if specified).Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ - stringwithNATInstance.natInstanceInternalAddressDeprecated
Consider using automatically generated address instead.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ - objectwithNATInstance.natInstanceResources
Computing resources that are allocated to the NAT instance. If not specified, the default values will be used.
Warning. If these parameters are changed,
terraform-auto-convergerwill automatically restart NAT-instance if autoConvergerEnabled is set totrue. This may result in a temporary interruption of network traffic in the cluster.- integerwithNATInstance.natInstanceResources.cores
Amount of CPU cores to provision on the NAT instance.
Default:
2 - integerwithNATInstance.natInstanceResources.memory
Amount of primary memory in MB provision on the NAT instance.
Default:
2048 - stringwithNATInstance.natInstanceResources.platform
Processor platform type on the NAT instance.
Default:
standard-v2
- arrayzones
The globally restricted set of zones that this cloud provider works with.
- Element of the array
Allowed values:
ru-central1-a,ru-central1-b,ru-central1-d