OpenStackClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в OpenStack.
Используется облачным провайдером, если управляющий слой (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: OpenStackClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
zones:
- eu-3a
standard:
internalNetworkDNSServers:
- 8.8.8.8
internalNetworkCIDR: 192.168.195.0/24
internalNetworkSecurity: false
externalNetworkName: external-network
provider:
authURL: "<AUTH_URL>"
domainName: "<DOMAIN_NAME>"
tenantID: "<TENANT_ID>"
username: "<USERNAME>"
password: "<PASSWORD>"
region: eu-3
masterNodeGroup:
replicas: 1
instanceClass:
rootDiskSize: 50
flavorName: m1.large
imageName: debian-11-genericcloud-amd64-20220911-1135
volumeTypeMap:
eu-3a: fast.eu-3a
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.large
imageName: debian-11-genericcloud-amd64-20220911-1135
rootDiskSize: 50
configDrive: false
floatingIPPools:
- public
- shared
additionalSecurityGroups:
- sec_group_1
- sec_group_2
zones:
- eu-1a
- eu-1b
- строка
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Чтобы изменения вступили в силу, после изменения параметров секции
masterNodeGroup
выполните командуdhctl converge
.- массив строк
Дополнительный список security groups, которые будут добавлены на заказанные инстансы соответствующего
OpenStackInstanceClass
в дополнение к указанным в конфигурации облачного провайдера.Используется для задания правил файрвола по отношению к заказываемым инстансам.
SecurityGroups
могут не поддерживаться провайдером. - объект
Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации облачного провайдера.
Пример:
additionalTags: project: cms-production severity: critical
- строка
Обязательный параметр
Тип заказываемых виртуальных машин.
Чтобы узнать список всех доступных flavor’ов, выполните команду:
openstack flavor list
.Для всех узлов, кроме master, рекомендуется выбирать flavor’ы с локальным диском. Такие диски, как правило, обеспечивают более высокую производительность и меньшую стоимость. Однако их использование имеет ограничение — невозможность миграции узлов между гипервизорами.
Пример создания flavor’а:
openstack flavor create c4m8d50 --ram 8192 --disk 50 --vcpus 4
. - строка
Обязательный параметр
Имя образа виртуальной машины, который будет использоваться для инстанса.
Получить список всех доступных образов можно командой:
openstack image list
.Список поддерживаемых Deckhouse ОС и их версий можно найти в документации (учитывайте используемую версию Deckhouse).
- целочисленный
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска. Подробнее…
- объект
Объединяет инстансы в группу. Инстансы в такой группе будут размещены на одном гипервизоре (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
— получить список типов дисков.
Пример:
volumeTypeMap: eu-1a: fast-eu-1a eu-1b: fast-eu-1b
- массив объектов
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- массив строк
Дополнительный список security groups, которые будут добавлены на заказанные инстансы соответствующего
OpenStackInstanceClass
в дополнение к указанным в конфигурации облачного провайдера.Используется для задания правил файрвола по отношению к заказываемым инстансам.
SecurityGroups
могут не поддерживаться провайдером. - объект
Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации облачного провайдера.
Пример:
additionalTags: project: cms-production severity: critical
- строка
Обязательный параметр
Тип заказываемых виртуальных машин.
Чтобы узнать список всех доступных flavor’ов, выполните команду:
openstack flavor list
.Для всех узлов, кроме master, рекомендуется выбирать flavor’ы с локальным диском. Такие диски, как правило, обеспечивают более высокую производительность и меньшую стоимость. Однако их использование имеет ограничение — невозможность миграции узлов между гипервизорами.
Пример создания flavor’а:
openstack flavor create c4m8d50 --ram 8192 --disk 50 --vcpus 4
. - строка
Обязательный параметр
Имя образа виртуальной машины, который будет использоваться для инстанса.
Получить список всех доступных образов можно командой:
openstack image list
.Список поддерживаемых Deckhouse ОС и их версий можно найти в документации (учитывайте используемую версию Deckhouse).
- целочисленный
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска. Подробнее…
Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узлов.
- объект
Аналогично стандартному полю
metadata.annotations
.Пример:
annotations: ai.fleet.com/discombobulate: 'true'
- объект
Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).
Аналогично стандартному полю
metadata.labels
.Если поменять лейблы в рабочем кластере, после применения изменений необходимо пересоздать все машины.
Пример:
labels: environment: production app: warp-drive-ai
- массив объектов
Аналогично полю
.spec.taints
из объекта Node.Доступны только поля
effect
,key
,values
.Пример:
taints: - effect: NoExecute key: ship-class value: frigate
- объект
Словарь типов дисков для загрузочного диска.
Формат элементов словаря:
<ЗОНА ДОСТУПНОСТИ>: <ТИП ДИСКА>
(см. пример).Если значение, указанное в
replicas
, превышает количество элементов в словаре, узлы, чьи номера превышают длину словаря, получают значения, начиная с начала словаря. Если для словаря из примера указаноreplicas: 5
, с типом дискаfast-eu-1a
будут worker-0, worker-2 и worker-4, а с типом дискаfast-eu-1b
будут worker-1 и worker-3.Внимание. Ограничение по зонам доступности работает только при использовании параметра
zones
(nodeGroups.zones
). Если параметрzones
не задан, будут использованы все зоны доступности.Master-узлы будут создаваться в зонах в алфавитном порядке, указанных в этом параметре. Исходя из примера ниже,
master-0
будет создан в зонеeu-1a
,master-1
будет создан в зонеeu-1b
, аmaster-2
будет создан в зонеeu-1a
.Полезные команды:
openstack availability zone list
— получить список зон доступности.openstack volume type list
— получить список типов дисков.
Пример:
volumeTypeMap: eu-1a: fast-eu-1a 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
- объект
Дополнительные теги, которые будут присвоены созданному инстансу в дополнение к указанным в конфигурации облачного провайдера.
Пример:
additionalTags: project: cms-production severity: critical
- целочисленный
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска. Подробнее…
По умолчанию:
50
- массив строк
Обязательный параметр
Список адресов рекурсивных DNS внутренней сети.
- булевый
Флаг, который определяет необходимость настройки SecurityGroups и AllowedAddressPairs на портах внутренней сети.
По умолчанию:
true
- булевый
Флаг, который определяет необходимость настройки SecurityGroups и AllowedAddressPairs на портах внутренней сети.
По умолчанию:
true
- объект
Необязательный параметр.
Список тегов, которые будут созданы на всех ресурсах, имеющих такую возможность.
Если поменять теги в рабочем кластере, после применения изменений необходимо пересоздать все машины.