YandexClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в Yandex Cloud.
Используется облачным провайдером, если управляющий слой (control plane) кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration
После изменения параметров узлов необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.
Пример:
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: fd8nb7ecsbvj76dfaa8b
nodeGroups:
- name: worker
replicas: 1
zones:
- ru-central1-a
instanceClass:
cores: 4
memory: 8192
imageID: fd8nb7ecsbvj76dfaa8b
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"
}
- apiVersion
Обязательный параметр
Допустимые значения:
deckhouse.io/v1
,deckhouse.io/v1alpha1
- dhcpOptions
Список DHCP-опций, которые будут установлены на все подсети.
Возможные проблемы при использовании.
- dhcpOptions.domainName
Search-домен.
- dhcpOptions.domainNameServers
Список адресов рекурсивных DNS.
- Элемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- existingNetworkID
ID существующей VPC Network.
- existingZoneToSubnetIDMap
Одна или несколько ранее существовавших подсетей, сопоставленных с соответствующей зоной.
Внимание! Deckhouse создаст таблицу маршрутизации, которую необходимо вручную привязать к указанным подсетям.
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
Пример:
existingZoneToSubnetIDMap: ru-central1-a: e2lu8r1tbbtryhdpa9ro ru-central1-b: e2lu8r1tbbtryhdpa9ro ru-central1-d: e2lu8r1tbbtryhdpa9ro
- kind
Обязательный параметр
Допустимые значения:
YandexClusterConfiguration
- labels
Лейблы, проставляемые на ресурсы, создаваемые в Yandex Cloud.
Если поменять лейблы в рабочем кластере, после применения изменений необходимо пересоздать все машины.
- layout
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
Допустимые значения:
Standard
,WithoutNAT
,WithNATInstance
- masterNodeGroup
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Внимание! После изменения параметров секции
masterNodeGroup
необходимо выполнить командуdhctl converge
, чтобы изменения вступили в силу.- masterNodeGroup.instanceClass
Обязательный параметр
Частичное содержимое полей YandexInstanceClass.
- masterNodeGroup.instanceClass.additionalLabels
Дополнительные лейблы, которые будут присвоены созданным инстансам.
Пример:
project: cms-production severity: critical
- masterNodeGroup.instanceClass.cores
Обязательный параметр
Количество ядер у создаваемых инстансов.
- masterNodeGroup.instanceClass.diskSizeGB
Размер диска у инстансов. Значение указывается в
ГиБ
.По умолчанию:
50
Пример:
diskSizeGB: 0
- masterNodeGroup.instanceClass.diskType
Тип диска у создаваемых инстансов.
По умолчанию:
"network-ssd"
Допустимые значения:
network-ssd
,network-ssd-io-m3
,network-ssd-nonreplicated
Пример:
diskType: network-ssd-io-m3
- masterNodeGroup.instanceClass.etcdDiskSizeGb
Размер диска для etcd. Значение указывается в
ГиБ
.При изменении этого параметра необходимо вручную расширить каждый диск для etcd в интерфейсе Yandex Cloud (причина такого поведения — в issue).
По умолчанию:
10
Пример:
etcdDiskSizeGb: 10
- masterNodeGroup.instanceClass.externalIPAddresses
Список внешних IP-адресов, перечисленных в порядке зон, в которых будут создаваться узлы.
В списке можно указывать следующие значения:
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
externalSubnetIDs
); - зарезервированный публичный IP-адрес, если список дополнительных внешних сетей не определен (параметр
externalSubnetIDs
); Auto
, для заказа публичного IP-адреса в соответствующей зоне.
Обратите внимание:
-
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы.Например:
- <RU-CENTRAL1-A-IP-ADDRESS> - <RU-CENTRAL1-B-IP-ADDRESS> - <RU-CENTRAL1-D-IP-ADDRESS>
- Количество элементов массива в параметре
externalIPAddresses
должно быть равно количеству узлов в группе (параметраreplicas
). Для автоматического заказа публичных IP-адресов в зоне, используйте значениеAuto
в списке в параметреexternalIPAddresses
на соответствующем месте (соответствующему порядку зон). - Если не указать externalIPAddresses, то узлы в группе будут заказаны без внешних IP-адресов.
- Элемент массива
Шаблон:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
- masterNodeGroup.instanceClass.externalSubnetIDПараметр устарел
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
- masterNodeGroup.instanceClass.externalSubnetIDs
Список дополнительных внешних сетей, подключаемых к узлам.
Интерфейс узла, находящийся в сети из списка, будет назначен шлюзом по умолчанию.
Также будет добавлен маршрут для интерфейса внутренней сети узла на всю подсеть, указанную в nodeNetworkCIDR.
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы. Например:- <RU-CENTRAL1-A-SUBNET-ID> - <RU-CENTRAL1-B-SUBNET-ID> - <RU-CENTRAL1-D-SUBNET-ID>
- masterNodeGroup.instanceClass.imageID
Обязательный параметр
Идентификатор образа, который будет установлен в заказанные инстансы.
Пример:
imageID: fd8nb7ecsbvj76dfaa8b
- masterNodeGroup.instanceClass.memory
Обязательный параметр
Количество оперативной памяти (в мегабайтах) у создаваемых инстансов.
Пример:
memory: 8192
- masterNodeGroup.instanceClass.networkType
Тип сети.
По умолчанию:
"Standard"
Допустимые значения:
Standard
,SoftwareAccelerated
- masterNodeGroup.instanceClass.platform
Платформа виртуальной машины.
По умолчанию:
"standard-v2"
- masterNodeGroup.replicas
Обязательный параметр
Количество создаваемых master-узлов. Для обеспечения кворума важно, чтобы оно было нечетным.
Допустимые значения:
1 <= X
- masterNodeGroup.zones
Необязательный параметр.
Список зон, в которых допустимо создавать узлы.
- Элемент массива
Допустимые значения:
ru-central1-a
,ru-central1-b
,ru-central1-d
- nodeGroups
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- nodeGroups.instanceClass.additionalLabels
Дополнительные лейблы, которые будут присвоены созданным инстансам.
Пример:
project: cms-production severity: critical
- nodeGroups.instanceClass.coreFraction
Базовый уровень производительности каждого ядра CPU у создаваемых инстансов. Подробнее…
По умолчанию:
100
Допустимые значения:
5
,20
,50
,100
Пример:
coreFraction: 20
- nodeGroups.instanceClass.cores
Обязательный параметр
Количество ядер у создаваемых инстансов.
- nodeGroups.instanceClass.diskSizeGB
Размер диска у инстансов. Значение указывается в
ГиБ
.По умолчанию:
50
Пример:
diskSizeGB: 0
- nodeGroups.instanceClass.diskType
Тип диска у создаваемых инстансов.
По умолчанию:
"network-ssd"
Допустимые значения:
network-ssd
,network-ssd-io-m3
,network-ssd-nonreplicated
Пример:
diskType: network-ssd-io-m3
- nodeGroups.instanceClass.externalIPAddresses
Список внешних IP-адресов, перечисленных в порядке зон, в которых будут создаваться узлы.
В списке можно указывать следующие значения:
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
externalSubnetIDs
); - зарезервированный публичный IP-адрес, если список дополнительных внешних сетей не определен (параметр
externalSubnetIDs
); Auto
, для заказа публичного IP-адреса в соответствующей зоне.
Обратите внимание:
-
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы.Например:
- <RU-CENTRAL1-A-IP-ADDRESS> - <RU-CENTRAL1-B-IP-ADDRESS> - <RU-CENTRAL1-D-IP-ADDRESS>
- Количество элементов массива в параметре
externalIPAddresses
должно быть равно количеству узлов в группе (параметраreplicas
). Для автоматического заказа публичных IP-адресов в зоне, используйте значениеAuto
в списке в параметреexternalIPAddresses
на соответствующем месте (соответствующему порядку зон). - Если не указать externalIPAddresses, то узлы в группе будут заказаны без внешних IP-адресов.
- Элемент массива
Шаблон:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
- nodeGroups.instanceClass.externalSubnetIDПараметр устарел
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
- nodeGroups.instanceClass.externalSubnetIDs
Список дополнительных внешних сетей, подключаемых к узлам.
Интерфейс узла, находящийся в сети из списка, будет назначен шлюзом по умолчанию.
Также будет добавлен маршрут для интерфейса внутренней сети узла на всю подсеть, указанную в nodeNetworkCIDR.
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы. Например:- <RU-CENTRAL1-A-SUBNET-ID> - <RU-CENTRAL1-B-SUBNET-ID> - <RU-CENTRAL1-D-SUBNET-ID>
- nodeGroups.instanceClass.imageID
Обязательный параметр
Идентификатор образа, который будет установлен в заказанные инстансы.
Пример:
imageID: fd8nb7ecsbvj76dfaa8b
- nodeGroups.instanceClass.memory
Обязательный параметр
Количество оперативной памяти (в мегабайтах) у создаваемых инстансов.
Пример:
memory: 8192
- nodeGroups.instanceClass.networkType
Тип сети.
По умолчанию:
"Standard"
Допустимые значения:
Standard
,SoftwareAccelerated
- nodeGroups.instanceClass.platform
Платформа виртуальной машины.
По умолчанию:
"standard-v2"
- nodeGroups.name
Обязательный параметр
Имя NodeGroup, которое будет использоваться для генерации имен узлов.
- nodeGroups.nodeTemplate
Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла.
- nodeGroups.nodeTemplate.annotations
Аналогично стандартному полю
metadata.annotations
.Пример:
annotations: ai.fleet.com/discombobulate: "true"
- nodeGroups.nodeTemplate.labels
Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).
Аналогично стандартному полю
metadata.labels
.Если поменять теги в рабочем кластере, после применения изменений необходимо пересоздать все машины.
Пример:
labels: environment: production app: warp-drive-ai
- nodeGroups.nodeTemplate.taints
Аналогично полю
.spec.taints
из объекта Node.Внимание! Доступны только поля
effect
,key
,values
.Пример:
taints: - effect: NoExecute key: ship-class value: frigate
- nodeGroups.nodeTemplate.taints.effect
Допустимые значения:
NoSchedule
,PreferNoSchedule
,NoExecute
- nodeGroups.nodeTemplate.taints.key
- nodeGroups.nodeTemplate.taints.value
- nodeGroups.replicas
Обязательный параметр
Количество узлов.
- nodeGroups.zones
Список зон, в которых допустимо создавать узлы.
- Элемент массива
Допустимые значения:
ru-central1-a
,ru-central1-b
,ru-central1-d
- nodeNetworkCIDR
Обязательный параметр
Данная подсеть будет разделена на три равные части и использована для создания подсетей в трех зонах Yandex Cloud.
- provider.cloudID
Обязательный параметр
Идентификатор облака.
- provider.folderID
Обязательный параметр
Идентификатор директории.
- provider.serviceAccountJSON
Обязательный параметр
Ключ к service account’у в JSON-формате.
Получить его можно с помощью команды
[yc iam key create](environment.html)
.Шаблон:
^[ \t\n]*\{(.|\n)*\}[ \t\n]*$
Пример:
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" }
- sshPublicKey
Обязательный параметр
Публичный ключ для доступа на узлы.
- withNATInstance.exporterAPIKey
API-ключ для экспортера метрик Yandex Cloud.
- Если значение ключа — пустая строка, экспортер не будет развернут в кластере.
- Если значение ключа —
Auto
, Deckhouse создаст service account c рольюmonitoring.viewer
и API-ключ для него. Для основного service account’а требуется рольadmin
. - Любое другое значение ключа считается допустимым API-ключем. Используйте инструкцию для создания API-ключа.
Service account’у, для которого будет создан ключ, необходимо назначить роль
monitoring.viewer
.
По умолчанию:
""
- withNATInstance.externalSubnetID
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
- withNATInstance.internalSubnetID
ID подсети для внутреннего интерфейса.
- withNATInstance.natInstanceExternalAddress
Внешний зарезервированный IP-адрес или адрес из
externalSubnetID
при указании опции.Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- withNATInstance.natInstanceInternalAddressПараметр устарел
Лучше не использовать эту опцию, а использовать автоматически назначаемые адреса.
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- withNATInstance.natInstanceResources
Вычислительные ресурсы, выделяемые для NAT-инстанса. Если параметр не указан, будут использоваться значения по умолчанию.
- withNATInstance.natInstanceResources.cores
Количество ядер у создаваемого NAT-инстанса.
По умолчанию:
2
- withNATInstance.natInstanceResources.memory
Количество оперативной памяти (в мегабайтах) у создаваемого NAT-инстанса.
По умолчанию:
2048
- zones
Глобальное ограничение набора зон, с которыми работает данный cloud-провайдер.
- Элемент массива
Допустимые значения:
ru-central1-a
,ru-central1-b
,ru-central1-d