YandexClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в Yandex Cloud.
Используется cloud-провайдером если control plane кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
kubectl -n d8-system exec -ti deploy/deckhouse -- deckhouse-controller edit provider-cluster-configuration
Пример:
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}$
- Элемент массивастрока
- dhcpOptions.domainNameстрока
- 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-c: 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: 20
- masterNodeGroup.instanceClass.etcdDiskSizeGbцелочисленный
Размер диска для etcd. Значение указывается в
ГиБ
.При изменении этого параметра необходимо вручную расширить каждый диск для etcd в интерфейсе Yandex Cloud (причина такого поведения — в issue).
По умолчанию:
10
Пример:
etcdDiskSizeGb: 10
- masterNodeGroup.instanceClass.externalIPAddressesмассив строк
Список внешних IP-адресов.
При отсутствии опции
externalSubnetID
необходимо использовать или зарезервированные публичные IP-адреса или константуAuto
.При наличии опции
externalSubnetID
необходимо выбрать конкретные свободные IP-адреса из указанной подсети.Количество элементов массива должно соответствовать количеству узлов в группе (значение параметра
replicas
). Если используется значениеAuto
, то в списке все равно необходимо указать столько элементов со значениемAuto
, сколько создается узлов в группе.- Элемент массивастрока
Шаблон:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- Элемент массивастрока
- masterNodeGroup.instanceClass.externalSubnetIDПараметр устарелстрока
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
- masterNodeGroup.instanceClass.externalSubnetIDsмассив строк
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
Также будет добавлен маршрут для internal-интерфейса узла на всю подсеть, указанную в
nodeNetworkCIDR
.Количество элементов массива должно соответствовать
replicas
. - masterNodeGroup.instanceClass.imageIDстрока
Обязательный параметр
Идентификатор образа, который будет установлен в заказанные инстансы.
Пример:
imageID: fd8nb7ecsbvj76dfaa8b
- masterNodeGroup.instanceClass.memoryцелочисленный
Обязательный параметр
Количество оперативной памяти (в мегабайтах) у создаваемых инстансов.
Пример:
memory: 8192
- masterNodeGroup.instanceClass.networkTypeстрока
Тип сети.
По умолчанию:
"Standard"
Допустимые значения:
Standard
,SoftwareAccelerated
- masterNodeGroup.instanceClass.platformстрока
Платформа виртуальной машины.
По умолчанию:
"standard-v2"
- masterNodeGroup.instanceClass.additionalLabelsобъект
- masterNodeGroup.replicasцелочисленный
Обязательный параметр
Количество создаваемых master-узлов. Важно иметь нечётное количество мастеров для обеспечения кворума.
Допустимые значения:
1 <= X
- masterNodeGroup.zonesмассив
Необязательный параметр.
Список зон, в которых допустимо создавать узлы.
- Элемент массива
Допустимые значения:
ru-central1-a
,ru-central1-b
,ru-central1-c
- Элемент массива
- masterNodeGroup.instanceClassобъект
- nodeGroupsмассив объектов
Массив дополнительных NodeGroup для создания статичных узлов (например, для выделенных frontend-узлов или шлюзов).
- nodeGroups.instanceClassобъект
Обязательный параметр
Частичное содержимое полей YandexInstanceClass.
- 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: 20
- nodeGroups.instanceClass.externalIPAddressesмассив строк
Список внешних IP-адресов.
При отсутствии опции
externalSubnetID
необходимо использовать или зарезервированные публичные IP-адреса или константуAuto
.При наличии опции
externalSubnetID
необходимо выбрать конкретные свободные IP-адреса из указанной подсети.Количество элементов массива должно соответствовать количеству узлов в группе (значение параметра
replicas
). Если используется значениеAuto
, то в списке все равно необходимо указать столько элементов со значениемAuto
, сколько создается узлов в группе.- Элемент массивастрока
Шаблон:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$
- Элемент массивастрока
- nodeGroups.instanceClass.externalSubnetIDПараметр устарелстрока
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
- nodeGroups.instanceClass.externalSubnetIDsмассив строк
Подключаемый к узлу дополнительный сетевой интерфейс, в который будет идти маршрут по умолчанию.
Также будет добавлен маршрут для internal-интерфейса узла на всю подсеть, указанную в
nodeNetworkCIDR
.Количество элементов массива должно соответствовать
replicas
. - nodeGroups.instanceClass.imageIDстрока
Обязательный параметр
Идентификатор образа, который будет установлен в заказанные инстансы.
Пример:
imageID: fd8nb7ecsbvj76dfaa8b
- nodeGroups.instanceClass.memoryцелочисленный
Обязательный параметр
Количество оперативной памяти (в мегабайтах) у создаваемых инстансов.
Пример:
memory: 8192
- nodeGroups.instanceClass.networkTypeстрока
Тип сети.
По умолчанию:
"Standard"
Допустимые значения:
Standard
,SoftwareAccelerated
- nodeGroups.instanceClass.platformстрока
Платформа виртуальной машины.
По умолчанию:
"standard-v2"
- nodeGroups.instanceClass.additionalLabelsобъект
- 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.nodeTemplate.taints.effectстрока
- nodeGroups.nodeTemplate.annotationsобъект
- nodeGroups.replicasцелочисленный
Обязательный параметр
Количество узлов.
- nodeGroups.zonesмассив
Список зон, в которых допустимо создавать узлы.
- Элемент массива
Допустимые значения:
ru-central1-a
,ru-central1-b
,ru-central1-c
- Элемент массива
- nodeGroups.instanceClassобъект
- nodeNetworkCIDRстрока
Обязательный параметр
Данная подсеть будет разделена на три равных части и использована для создания подсетей в трёх зонах Yandex Cloud.
- providerобъект
Обязательный параметр
Параметры подключения к API Yandex Cloud.
- provider.cloudIDстрока
Обязательный параметр
Идентификатор облака.
- provider.folderIDстрока
Обязательный параметр
Идентификатор директории.
- provider.serviceAccountJSONстрока
Обязательный параметр
Ключ к Service Account’у в JSON-формате, выдаваемый yc iam key create.
Шаблон:
^[ \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" }
- provider.cloudIDстрока
- sshPublicKeyстрока
Обязательный параметр
Публичный ключ для доступа на узлы.
- withNATInstanceобъект
Настройки для схемы размещения
WithNATInstance
.- withNATInstance.exporterAPIKeyстрока
API-ключ для экспортера метрик Яндекс Облака.
- Если значение ключа — пустая строка, то экспортер не будет развернут в кластере.
- Если значение ключа —
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.exporterAPIKeyстрока
- zonesмассив
Глобальное ограничение набора зон, с которыми работает данный cloud provider.
- Элемент массива
Допустимые значения:
ru-central1-a
,ru-central1-b
,ru-central1-c
- Элемент массива