YandexClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в Yandex Cloud.
Используется облачным провайдером, если управляющий слой (control plane) кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
1kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration
После изменения параметров узлов необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.
Пример:
1apiVersion: deckhouse.io/v1
2kind: YandexClusterConfiguration
3layout: Standard
4nodeNetworkCIDR: 127.0.0.1/8
5labels:
6 label-2: b
7sshPublicKey: "<SSH_PUBLIC_KEY>"
8masterNodeGroup:
9 replicas: 1
10 instanceClass:
11 cores: 4
12 memory: 8192
13 imageID: fd8nb7ecsbvj76dfaa8b
14nodeGroups:
15- name: worker
16 replicas: 1
17 zones:
18 - ru-central1-a
19 instanceClass:
20 cores: 4
21 memory: 8192
22 imageID: fd8nb7ecsbvj76dfaa8b
23 coreFraction: 50
24 externalIPAddresses:
25 - 198.51.100.5
26 - Auto
27provider:
28 cloudID: "<CLOUD_ID>"
29 folderID: "<FOLDER_ID>"
30 serviceAccountJSON: |
31 {
32 "id": "id",
33 "service_account_id": "service_account_id",
34 "key_algorithm": "RSA_2048",
35 "public_key": "-----BEGIN PUBLIC KEY-----\nMIIwID....AQAB\n-----END PUBLIC KEY-----\n",
36 "private_key": "-----BEGIN PRIVATE KEY-----\nMIIE....1ZPJeBLt+\n-----END PRIVATE KEY-----\n"
37 }
- объект
Список DHCP-опций, которые будут установлены на все подсети.
Возможные проблемы при использовании.
- объект
Одна или несколько ранее существовавших подсетей, сопоставленных с соответствующей зоной.
Внимание! Deckhouse создаст таблицу маршрутизации, которую необходимо вручную привязать к указанным подсетям. К одной подсети можно привязать только одну таблицу маршрутизации. Поэтому невозможно развернуть два кластера с
cni-simple-bridge
в одних и тех же подсетях. Если вам нужно использовать одинаковые подсети для нескольких кластеров — используйтеcni-cilium
.Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
Пример:
1existingZoneToSubnetIDMap: 2 ru-central1-a: e2lu8r1tbbtryhdpa9ro 3 ru-central1-b: e2lu8r1tbbtryhdpa9ro 4 ru-central1-d: e2lu8r1tbbtryhdpa9ro
- строка
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
Допустимые значения:
Standard
,WithoutNAT
,WithNATInstance
- объект
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Чтобы изменения вступили в силу, после изменения параметров секции
masterNodeGroup
выполните командуdhctl converge
.- целочисленный
Размер диска для etcd. Значение указывается в
ГиБ
.При изменении этого параметра необходимо вручную расширить каждый диск для etcd в интерфейсе Yandex Cloud (причина такого поведения — в issue).
По умолчанию:
10
Пример:
1etcdDiskSizeGb: 10
- массив строк
Список внешних IP-адресов, перечисленных в порядке зон, в которых будут создаваться узлы.
В списке можно указывать следующие значения:
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
externalSubnetIDs
); - зарезервированный публичный IP-адрес, если список дополнительных внешних сетей не определен (параметр
externalSubnetIDs
); Auto
, для заказа публичного IP-адреса в соответствующей зоне.
Обратите внимание:
-
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы.Например:
1- <RU-CENTRAL1-A-IP-ADDRESS> 2- <RU-CENTRAL1-B-IP-ADDRESS> 3- <RU-CENTRAL1-D-IP-ADDRESS>
- Количество элементов массива в параметре
externalIPAddresses
должно быть равно количеству узлов в группе (параметраreplicas
). Для автоматического заказа публичных IP-адресов в зоне, используйте значениеAuto
в списке в параметреexternalIPAddresses
на соответствующем месте (соответствующему порядку зон). - Если не указать externalIPAddresses, то узлы в группе будут заказаны без внешних IP-адресов.
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
- массив строк
Список дополнительных внешних сетей, подключаемых к узлам.
Интерфейс узла, находящийся в сети из списка, будет назначен шлюзом по умолчанию.
Также будет добавлен маршрут для интерфейса внутренней сети узла на всю подсеть, указанную в nodeNetworkCIDR.
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы. Например:1- <RU-CENTRAL1-A-SUBNET-ID> 2- <RU-CENTRAL1-B-SUBNET-ID> 3- <RU-CENTRAL1-D-SUBNET-ID>
- массив
Необязательный параметр.
Список зон, в которых допустимо создавать узлы.
Порядок указания зон не влияет на порядок создания узлов. Узлы будут размещаться в зонах в алфавитном порядке: первый узел — в зоне, стоящей первой по алфавиту, второй — во второй зоне и так далее. Если количество зон меньше числа узлов, то после размещения узла в последней зоне по алфавиту распределение продолжится сначала списка.
- массив объектов
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- целочисленный
Базовый уровень производительности каждого ядра CPU у создаваемых инстансов. Подробнее…
По умолчанию:
100
Допустимые значения:
5
,20
,50
,100
Пример:
1coreFraction: 20
- массив строк
Список внешних IP-адресов, перечисленных в порядке зон, в которых будут создаваться узлы.
В списке можно указывать следующие значения:
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
externalSubnetIDs
); - зарезервированный публичный IP-адрес, если список дополнительных внешних сетей не определен (параметр
externalSubnetIDs
); Auto
, для заказа публичного IP-адреса в соответствующей зоне.
Обратите внимание:
-
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы.Например:
1- <RU-CENTRAL1-A-IP-ADDRESS> 2- <RU-CENTRAL1-B-IP-ADDRESS> 3- <RU-CENTRAL1-D-IP-ADDRESS>
- Количество элементов массива в параметре
externalIPAddresses
должно быть равно количеству узлов в группе (параметраreplicas
). Для автоматического заказа публичных IP-адресов в зоне, используйте значениеAuto
в списке в параметреexternalIPAddresses
на соответствующем месте (соответствующему порядку зон). - Если не указать externalIPAddresses, то узлы в группе будут заказаны без внешних IP-адресов.
- IP-адрес из дополнительной внешней сети для соответствующей зоны (параметр
- массив строк
Список дополнительных внешних сетей, подключаемых к узлам.
Интерфейс узла, находящийся в сети из списка, будет назначен шлюзом по умолчанию.
Также будет добавлен маршрут для интерфейса внутренней сети узла на всю подсеть, указанную в nodeNetworkCIDR.
Элементы массива должны быть перечислены согласно порядку зон (параметр
zones
), в которых будут создаваться узлы. Например:1- <RU-CENTRAL1-A-SUBNET-ID> 2- <RU-CENTRAL1-B-SUBNET-ID> 3- <RU-CENTRAL1-D-SUBNET-ID>
Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла.
- объект
Аналогично стандартному полю
metadata.annotations
.Пример:
1annotations: 2 ai.fleet.com/discombobulate: "true"
- объект
Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).
Аналогично стандартному полю
metadata.labels
.Если поменять теги в рабочем кластере, после применения изменений необходимо пересоздать все машины.
Пример:
1labels: 2 environment: production 3 app: warp-drive-ai
- массив объектов
Аналогично полю
.spec.taints
из объекта Node.Доступны только поля
effect
,key
,values
.Пример:
1taints: 2- effect: NoExecute 3 key: ship-class 4 value: frigate
- массив
Список зон, в которых допустимо создавать узлы.
Порядок указания зон не влияет на порядок создания узлов. Узлы будут размещаться в зонах в алфавитном порядке: первый узел — в зоне, стоящей первой по алфавиту, второй — во второй зоне и так далее. Если количество зон меньше числа узлов, то после размещения узла в последней зоне по алфавиту распределение продолжится сначала списка.
- строка
Обязательный параметр
Ключ к service account’у в JSON-формате.
Получить его можно с помощью команды
[yc iam key create](environment.html)
.Шаблон:
^[ \t\n]*\{(.|\n)*\}[ \t\n]*$
Пример:
1serviceAccountJSON: | 2 { 3 "id": "...", 4 "service_account_id": "...", 5 "created_at": "2022-08-04T05:38:34.756137618Z", 6 "key_algorithm": "RSA_2048", 7 "public_key": "-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\n", 8 "private_key": "-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n" 9 }
- строка
API-ключ для экспортера метрик Yandex Cloud.
- Если значение ключа — пустая строка, экспортер не будет развернут в кластере.
- Если значение ключа —
Auto
, Deckhouse создаст service account c рольюmonitoring.viewer
и API-ключ для него. Для основного service account’а требуется рольadmin
. - Любое другое значение ключа считается допустимым API-ключем. Используйте инструкцию для создания API-ключа.
Service account’у, для которого будет создан ключ, необходимо назначить роль
monitoring.viewer
.
По умолчанию:
""
- строка
Внешний зарезервированный IP-адрес или адрес из
externalSubnetID
при указании опции.Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
- объект
Вычислительные ресурсы, выделяемые для NAT-инстанса. Если параметр не указан, будут использоваться значения по умолчанию.