AzureClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в Azure.
Используется облачным провайдером, если управляющий слой (control plane) кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration
Пример:
apiVersion: deckhouse.io/v1
kind: AzureClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
vNetCIDR: 10.0.0.0/16
subnetCIDR: 10.0.0.0/24
masterNodeGroup:
replicas: 1
instanceClass:
machineSize: Standard_D4ds_v4
urn: Canonical:UbuntuServer:18.04-LTS:18.04.202207120
enableExternalIP: false
provider:
subscriptionId: "<SUBSCRIPTION_ID>"
location: westeurope
clientId: "<CLIENT_ID>"
clientSecret: "<CLIENT_SECRET>"
tenantId: "<TENANT_ID>"
- apiVersion
Обязательный параметр
Допустимые значения:
deckhouse.io/v1
,deckhouse.io/v1alpha1
- kind
Обязательный параметр
Допустимые значения:
AzureClusterConfiguration
- layout
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
Допустимые значения:
Standard
- masterNodeGroup
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Внимание. После изменения параметров секции
masterNodeGroup
, необходимо выполнить командуdhctl converge
, чтобы изменения вступили в силу.- masterNodeGroup.instanceClass
Обязательный параметр
Частичное содержимое полей AzureInstanceClass.
- masterNodeGroup.instanceClass.acceleratedNetworking
Accelerated Networking обеспечивает пропускную способность сети до 30 Гбит/с.
По умолчанию:
false
- объект
Список дополнительных тегов в формате
key: value
, которые будут назначены инстансам.Пример:
project: cms-production severity: critical
- masterNodeGroup.instanceClass.diskSizeGb
Размер root-диска. Значение указывается в
ГиБ
.Пример:
diskSizeGb: 40
- masterNodeGroup.instanceClass.diskType
Тип создаваемых дисков (root-диска и диска для etcd).
Список доступных типов дисков можно посмотреть с помощью Azure CLI:
az vm list-skus -l westeurope --zone
Пример:
diskType: StandardSSD_LRS
- masterNodeGroup.instanceClass.enableExternalIP
Разрешение назначения внешнего IP-адреса для инстанса.
Параметр доступен только для layout
Standard
.По умолчанию:
false
Допустимые значения:
true
,false
- masterNodeGroup.instanceClass.etcdDiskSizeGb
Размер диска для etcd. Значение указывается в
ГиБ
.По умолчанию:
20
Пример:
etcdDiskSizeGb: 20
- masterNodeGroup.instanceClass.machineSize
Обязательный параметр
Тип заказываемых инстансов.
Узнать все доступные типы в регионе можно с помощью Azure CLI:
az vm list-sizes --location westeurope -o table
Пример:
machineSize: Standard_F4
- masterNodeGroup.instanceClass.urn
Обязательный параметр
Образ виртуальной машины, который будет использоваться для инстанса.
Подробнее про образы виртуальных машин можно прочитать в официальной документации.
Получить
urn
образа c помощью Azure CLI (столбец №4):az vm image list --location westeurope --publisher Canonical --all --sku 20_04-lts -o table az vm image list --location westeurope --publisher OpenLogic --all --sku 7.5 -o table
По умолчанию используется образ из
AzureCloudDiscoveryData
— образ, из которого был создан мастер-узел при развертывании кластера.Список поддерживаемых Deckhouse ОС и их версий можно найти в документации (учитывайте используемую версию Deckhouse).
- masterNodeGroup.replicas
Обязательный параметр
Количество создаваемых master-узлов.
Для обеспечения кворума важно, чтобы оно было нечетным.
Допустимые значения:
1 <= X
- masterNodeGroup.zones
Список зон, в которых допустимо создавать master-узлы.
Доступные зоны для выбранного типа инстанса можно посмотреть с помощью Azure CLI:
az vm list-skus -l westeurope -o table
По умолчанию:
[1,2,3]
- nodeGroups
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- nodeGroups.instanceClass.acceleratedNetworking
Accelerated Networking обеспечивает пропускную способность сети до 30 Гбит/с.
По умолчанию:
false
- объект
Список дополнительных тегов в формате
key: value
, которые будут назначены инстансам.Пример:
project: cms-production severity: critical
- nodeGroups.instanceClass.diskSizeGb
Размер root-диска. Значение указывается в
ГиБ
.Пример:
diskSizeGb: 40
- nodeGroups.instanceClass.diskType
Тип создаваемых дисков (root-диска и диска для etcd).
Список доступных типов дисков можно посмотреть с помощью Azure CLI:
az vm list-skus -l westeurope --zone
Пример:
diskType: StandardSSD_LRS
- nodeGroups.instanceClass.enableExternalIP
Разрешение назначения внешнего IP-адреса для инстанса.
Параметр доступен только для layout
Standard
.По умолчанию:
false
Допустимые значения:
true
,false
- nodeGroups.instanceClass.machineSize
Обязательный параметр
Тип заказываемых инстансов.
Узнать все доступные типы в регионе можно с помощью Azure CLI:
az vm list-sizes --location westeurope -o table
Пример:
machineSize: Standard_F4
- nodeGroups.instanceClass.urn
Обязательный параметр
Образ виртуальной машины, который будет использоваться для инстанса.
Подробнее про образы виртуальных машин можно прочитать в официальной документации.
Получить
urn
образа c помощью Azure CLI (столбец №4):az vm image list --location westeurope --publisher Canonical --all --sku 20_04-lts -o table az vm image list --location westeurope --publisher OpenLogic --all --sku 7.5 -o table
По умолчанию используется образ из
AzureCloudDiscoveryData
— образ, из которого был создан мастер-узел при развертывании кластера.Список поддерживаемых Deckhouse ОС и их версий можно найти в документации (учитывайте используемую версию Deckhouse).
- 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
Список зон, в которых допустимо создавать узлы.
Доступные зоны для выбранного типа инстанса можно посмотреть с помощью Azure CLI:
az vm list-skus -l westeurope -o table
По умолчанию:
[1,2,3]
- peeredVNets
Массив VNet, с которыми будет объединена сеть кластера.
ServiceAccount должен иметь доступ ко всем перечисленным VNet. Если доступа нет, пиринговое соединение необходимо настраивать вручную.
- peeredVNets.resourceGroupName
Обязательный параметр
Имя группы ресурсов, в которой находится VNet.
- peeredVNets.vnetName
Обязательный параметр
Имя VNet.
- provider.clientId
Обязательный параметр
Идентификатор клиента.
- provider.clientSecret
Обязательный параметр
Секрет (secret) клиента.
Помните о сроке действия секрета. По умолчанию он действителен один год. Чтобы создать service account с большим сроком действия секрета, обратитесь к официальной документации.
- provider.location
Обязательный параметр
Имя географического региона, в котором будут созданы все ресурсы. Получение списка доступных локаций через Azure CLI:
az account list-locations -o table
- provider.subscriptionId
Обязательный параметр
Идентификатор подписки.
- provider.tenantId
Обязательный параметр
Идентификатор tenant’а.
- serviceEndpoints
Список Service Endpoints, ассоциированных с подсетью.
Service Endpoints для виртуальной сети позволяют прямо и безопасно подключаться к сервисам Azure по оптимизированному маршруту через магистральную сеть Azure. Они позволяют ограничить пределами отдельных виртуальных сетей доступ к критически важным ресурсам сервисов Azure. Через Service Endpoints приватные IP-адреса в виртуальной сети могут подключаться к эндпоинтам сервисов Azure, не используя публичный IP-адрес в виртуальной сети.
Больше информации можно найти в официальной документации.
- Элемент массива
Допустимые значения:
Microsoft.AzureActiveDirectory
,Microsoft.AzureCosmosDB
,Microsoft.ContainerRegistry
,Microsoft.CognitiveServices
,Microsoft.EventHub
,Microsoft.KeyVault
,Microsoft.ServiceBus
,Microsoft.Sql
,Microsoft.Storage
,Microsoft.Storage.Global
,Microsoft.Web
- sshAllowList
Список CIDR, разрешенных для подключения к узлам по SSH.
По умолчанию
*
. - sshPublicKey
Обязательный параметр
Публичный ключ для доступа на узлы под пользователем
azureuser
. - standard.natGatewayPublicIpCount
Количество IP-адресов для NAT Gateway (тарификация).
NAT Gateway не используется, если установлено
0
.По умолчанию:
0
- subnetCIDR
Обязательный параметр
Подсеть из адресного пространства
vNetCIDR
, в которой будут работать узлы кластера.Виртуальную сеть можно сегментировать на одну или несколько подсетей в пределах ограничений.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
Пример:
subnetCIDR: 10.1.2.0/24
- объект
Словарь тегов, которые будут созданы на всех ресурсах, имеющих такую возможность.
Если поменять теги в рабочем кластере, после применения изменений необходимо пересоздать все машины.
- vNetCIDR
Обязательный параметр
Адресное пространство виртуальной сети в формате CIDR.
Виртуальная сеть — это виртуальная изолированная часть общедоступной сети Azure. Каждая виртуальная сеть выделена для вашей подписки.
Внимание. Нужно учитывать, что в случае настройки пиринга, использования VPN или связывания сетей других кластеров, адресное пространство сетей не должно пересекаться.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
Пример:
vNetCIDR: 10.0.0.0/16
- zones
Глобальное ограничение набора зон, с которыми работает данный облачный провайдер.