OpenStackClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в OpenStack.
Используется cloud-провайдером, если control plane кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
1kubectl -n d8-system exec -ti svc/deckhouse-leader -- deckhouse-controller edit provider-cluster-configuration
Пример:
1apiVersion: deckhouse.io/v1
2kind: OpenStackClusterConfiguration
3layout: Standard
4sshPublicKey: "<SSH_PUBLIC_KEY>"
5zones:
6- eu-3a
7standard:
8 internalNetworkDNSServers:
9 - 8.8.8.8
10 internalNetworkCIDR: 192.168.195.0/24
11 internalNetworkSecurity: false
12 externalNetworkName: external-network
13provider:
14 authURL: "<AUTH_URL>"
15 domainName: "<DOMAIN_NAME>"
16 tenantID: "<TENANT_ID>"
17 username: "<USERNAME>"
18 password: "<PASSWORD>"
19 region: eu-3
20masterNodeGroup:
21 replicas: 1
22 instanceClass:
23 rootDiskSize: 20
24 flavorName: m1.large
25 imageName: debian-11-genericcloud-amd64-20220911-1135
26 volumeTypeMap:
27 eu-3a: fast.eu-3a
28nodeGroups:
29- name: front
30 replicas: 2
31 instanceClass:
32 flavorName: m1.large
33 imageName: debian-11-genericcloud-amd64-20220911-1135
34 rootDiskSize: 20
35 configDrive: false
36 floatingIPPools:
37 - public
38 - shared
39 additionalSecurityGroups:
40 - sec_group_1
41 - sec_group_2
42 zones:
43 - eu-1a
44 - eu-1b
- строка
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Внимание! После изменения параметров секции
masterNodeGroup
необходимо выполнить командуdhctl converge
, чтобы изменения вступили в силу.- массив строк
Дополнительный список security groups, которые будут добавлены на заказанные инстансы соответствующего
OpenStackInstanceClass
в дополнение к указанным в конфигурации cloud-провайдера.Используется для задания правил firewall по отношению к заказываемым инстансам.
SecurityGroups
могут не поддерживаться провайдером. - объект
Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации cloud-провайдера.
Пример:
1additionalTags: 2 project: cms-production 3 severity: critical
- строка
Обязательный параметр
Тип заказываемых виртуальных машин.
Получить список всех доступных flavor’ов:
openstack flavor list
.Для всех не master-узлов желательно использовать flavor’ы с локальным диском. Если в облаке поддерживаются локальные диски, они обычно быстрее и дешевле. Недостатком использования таких flavor’ов является невозможность миграции узлов между гипервизорами.
Пример создания flavor’а:
openstack flavor create c4m8d50 --ram 8192 --disk 50 --vcpus 4
. - строка
Обязательный параметр
Имя образа виртуальной машины, который будет использоваться для инстанса.
Получить список всех доступных образов можно командой:
openstack image list
.Список поддерживаемых Deckhouse ОС и их версий можно найти в документации (учитывайте используемую версию Deckhouse).
- целочисленный
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска. Подробнее…
- объект
ServerGroup объединяет инстансы в группу. Инстансы в такой группе будут размещены на одном гипервизоре (affinity) или на разных гипервизорах (anti-affinity). Это позволяет повысить отказоустойчивость кластера.
- объект
Обязательный параметр
Словарь типов дисков для хранения данных etcd и конфигурационных файлов Kubernetes.
Формат элементов словаря:
<ЗОНА ДОСТУПНОСТИ>: <ТИП ДИСКА>
(см. пример).Если указан параметр
rootDiskSize
, этот же тип диска будет использован в качестве загрузочного диска виртуальной машины.Всегда рекомендуется использовать самые быстрые диски, предоставляемые провайдером.
Если значение, указанное в
replicas
, превышает количество элементов в словаре, master-узлы, чьи номера превышают длину словаря, получают значения, начиная с начала словаря. Если для словаря из примера указаноreplicas: 5
, с типом дискаfast-eu-1a
будут master-0, master-2 и master-4, а с типом дискаfast-eu-1b
будут master-1 и master-3.Полезные команды:
openstack availability zone list
— получить список зон доступности.openstack volume type list
— получить список типов дисков.
Пример:
1volumeTypeMap: 2 eu-1a: fast-eu-1a 3 eu-1b: fast-eu-1b
- массив объектов
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- массив строк
Дополнительный список security groups, которые будут добавлены на заказанные инстансы соответствующего
OpenStackInstanceClass
в дополнение к указанным в конфигурации cloud-провайдера.Используется для задания правил firewall по отношению к заказываемым инстансам.
SecurityGroups
могут не поддерживаться провайдером. - объект
Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации cloud-провайдера.
Пример:
1additionalTags: 2 project: cms-production 3 severity: critical
- строка
Обязательный параметр
Тип заказываемых виртуальных машин.
Получить список всех доступных flavor’ов:
openstack flavor list
.Для всех не master-узлов желательно использовать flavor’ы с локальным диском. Если в облаке поддерживаются локальные диски, они обычно быстрее и дешевле. Недостатком использования таких flavor’ов является невозможность миграции узлов между гипервизорами.
Пример создания flavor’а:
openstack flavor create c4m8d50 --ram 8192 --disk 50 --vcpus 4
. - строка
Обязательный параметр
Имя образа виртуальной машины, который будет использоваться для инстанса.
Получить список всех доступных образов можно командой:
openstack image list
.Список поддерживаемых Deckhouse ОС и их версий можно найти в документации (учитывайте используемую версию Deckhouse).
- целочисленный
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска. Подробнее…
Настройки 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
- объект
Словарь типов дисков для загрузочного диска.
Формат элементов словаря:
<ЗОНА ДОСТУПНОСТИ>: <ТИП ДИСКА>
(см. пример).Если значение, указанное в
replicas
, превышает количество элементов в словаре, узлы, чьи номера превышают длину словаря, получают значения, начиная с начала словаря. Если для словаря из примера указаноreplicas: 5
, с типом дискаfast-eu-1a
будут worker-0, worker-2 и worker-4, а с типом дискаfast-eu-1b
будут worker-1 и worker-3.Полезные команды:
openstack availability zone list
— получить список зон доступности.openstack volume type list
— получить список типов дисков.
Пример:
1volumeTypeMap: 2 eu-1a: fast-eu-1a 3 eu-1b: fast-eu-1b
- объект
Обязательный параметр
Параметры подключения к API OpenStack.
Совпадают с параметрами, передаваемыми в поле
connection
в модуле cloud-provider-openstack. - строка
Определяет способ организации трафика в той сети, которая используется для коммуникации между подами (обычно это внутренняя сеть, но бывают исключения):
DirectRouting
– между узлами работает прямая маршрутизация, в этом режиме отключены SecurityGroups.VXLAN
– между узлами НЕ работает прямая маршрутизация, необходимо использовать VXLAN, в этом режиме отключены SecurityGroups.
Внимание! После изменения этого параметра необходимо выполнить
dhctl converge
.Внимание! После переключения с/на VXLAN требуется перезагрузка всех узлов кластера.
По умолчанию:
"VXLAN"
Допустимые значения:
VXLAN
,DirectRouting
- строка
Определяет способ организации трафика в той сети, которая используется для коммуникации между подами (обычно это внутренняя сеть, но бывают исключения):
DirectRouting
— между узлами работает прямая маршрутизация, в этом режиме отключены SecurityGroups.DirectRoutingWithPortSecurityEnabled
— между узлами работает прямая маршрутизация, но только если в OpenStack явно разрешить на портах диапазон адресов, используемых во внутренней сети.- Внимание! Убедитесь, что у
username
есть доступ на редактированиеAllowedAddressPairs
на портах, подключенных в сетьinternalNetworkName
. Обычно в OpenStack такого доступа нет, если сеть имеет флагshared
.
- Внимание! Убедитесь, что у
VXLAN
— между узлами НЕ работает прямая маршрутизация, необходимо использовать VXLAN, в этом режиме отключены SecurityGroups.
Внимание! После изменения этого параметра необходимо выполнить
dhctl converge
.Внимание! После переключения с/на VXLAN требуется перезагрузка всех узлов кластера.
По умолчанию:
"DirectRoutingWithPortSecurityEnabled"
Допустимые значения:
VXLAN
,DirectRouting
,DirectRoutingWithPortSecurityEnabled
- объект
Дополнительные теги, которые будут присвоены созданному инстансу в дополнение к указанным в конфигурации cloud-провайдера.
Пример:
1additionalTags: 2 project: cms-production 3 severity: critical
- целочисленный
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска. Подробнее…
По умолчанию:
50
- массив строк
Обязательный параметр
Список адресов рекурсивных DNS внутренней сети.
- булевый
Флаг, который определяет необходимость настройки SecurityGroups и AllowedAddressPairs на портах внутренней сети.
По умолчанию:
true
- булевый
Флаг, который определяет необходимость настройки SecurityGroups и AllowedAddressPairs на портах внутренней сети.
По умолчанию:
true
- объект
Необязательный параметр.
Список тегов, которые будут созданы на всех ресурсах, имеющих такую возможность.
Если поменять теги в рабочем кластере, после применения изменений необходимо пересоздать все машины.