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
nameservers:
  addresses:
  - 8.8.8.8
  - 8.8.4.4
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

      • masterNodeGroup.instanceClass.additionalTags
        объект

        Список дополнительных тегов в формате 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]

  • nameservers
    объект

    Конфигурация DNS-серверов для виртуальной сети Azure, которая используется для узлов кластера.

    • nameservers.addresses
      массив строк

      Список DNS-серверов.

      Пример:

      addresses:
      - 8.8.8.8
      - 8.8.4.4
      
      • Элемент массива
        строка

        Шаблон: ^(([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])$

  • nodeGroups
    массив объектов

    Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).

    • nodeGroups.instanceClass
      объект

      Обязательный параметр

      Частичное содержимое полей AzureInstanceClass.

      • nodeGroups.instanceClass.acceleratedNetworking
        булевый

        Accelerated Networking обеспечивает пропускную способность сети до 30 Гбит/с.

        По умолчанию: false

      • nodeGroups.instanceClass.additionalTags
        объект

        Список дополнительных тегов в формате 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
    объект

    Обязательный параметр

    • 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
    объект

    Настройки для схемы размещения Standard.

    • 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
    
  • tags
    объект

    Словарь тегов, которые будут созданы на всех ресурсах, имеющих такую возможность.

    Если поменять теги в рабочем кластере, после применения изменений необходимо пересоздать все машины.

  • 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
    массив строк

    Глобальное ограничение набора зон, с которыми работает данный облачный провайдер.