Экспериментальная версия. Функциональность может сильно измениться. Совместимость с будущими версиями не гарантируется.

Если control plane кластера размещен на виртуальных машинах или bare-metal-серверах, cloud-провайдер использует настройки модуля cloud-provider-vcd в конфигурации Deckhouse. Иначе, если control plane кластера размещен в облаке, cloud-провайдер использует структуру VCDClusterConfiguration для настройки.

VCDClusterConfiguration

Version: deckhouse.io/v1

Описывает конфигурацию облачного кластера в VCD.

Используется облачным провайдером, если управляющий слой (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: VCDClusterConfiguration
sshPublicKey: "<SSH_PUBLIC_KEY>"
organization: My_Org
virtualDataCenter: My_Org
virtualApplicationName: Cloud
mainNetwork: internal
layout: Standard
internalNetworkCIDR: 172.16.2.0/24
masterNodeGroup:
  replicas: 1
  instanceClass:
    template: Templates/ubuntu-focal-20.04
    sizingPolicy: 4cpu8ram
    rootDiskSizeGb: 20
    etcdDiskSizeGb: 20
    storageProfile: nvme
nodeGroups:
- name: worker
  replicas: 1
  instanceClass:
    template: Org/Templates/ubuntu-focal-20.04
    sizingPolicy: 16cpu32ram
    storageProfile: ssd
provider:
  server: "<SERVER>"
  username: "<USERNAME>"
  password: "<PASSWORD>"
  insecure: true
  • apiVersion
    строка

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

    Допустимые значения: deckhouse.io/v1

  • bastion
    объект

    Параметры конфигурации бастион-хоста, используемого для обеспечения административного доступа к узлам кластера.

    • bastion.instanceClass
      объект

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

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

      • bastion.instanceClass.mainNetworkIPAddress
        строка

        IP-адрес бастион-хоста в mainNetwork.

        По умолчанию DHCP-клиент включен.

        Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

      • bastion.instanceClass.placementPolicy
        строка

        Политика размещения (PlacementPolicy), которая будет применяться к данному хосту.

        Если политика размещения не указана, будет использована политика размещения по умолчанию для создания хостов.

        Длина: 1..128

      • bastion.instanceClass.rootDiskSizeGb
        целочисленный

        Размер root-диска. Значение указывается в гигабайтах.

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

        Допустимые значения: 0 <= X

        Пример:

        rootDiskSizeGb: 50
        
      • bastion.instanceClass.sizingPolicy
        строка

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

        Политика масштабирования (SizingPolicy), которая будет использоваться на данном хосте.

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

        Длина: 1..128

      • bastion.instanceClass.storageProfile
        строка

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

        Профиль хранения данных (StorageProfile), который будет использоваться на данном хосте.

        Длина: 1..128

      • bastion.instanceClass.template

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

        Путь к шаблону OVA, который будет использоваться.

        Путь состоит из имени организации (опционально), каталога и имени или идентификатора шаблона. В случае общих каталогов шаблонов наименование организации может не совпадать с значением в параметре provider.organization.

        Если в нескольких каталогах с одинаковым названием есть шаблоны с одинаковыми именами, необходимо указать идентификатор шаблона.

        Идентификатор шаблона можно найти в URL-адресе при открытии шаблона в пользовательском интерфейсе VCD. Например, если URL-адрес https://vcd.example.com/tenant/MyOrg/libraries/catalogs/1032506a-4555-43e1-8589-77b0c0522c75/catalog-vapp-templates/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7/general, то идентификатор шаблона будет 5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7.

        Длина: 1..128

  • createDefaultFirewallRules
    булевый

    Если включено, настраивает следующие правила брандмауэра по умолчанию для основной сети кластера (mainNetwork):

    • Разрешает все исходящие соединения из mainNetwork.
    • Разрешает все входящие ICMP-пакеты в mainNetwork.
    • Разрешает все входящие TCP-соединения в mainNetwork на порт 22 (SSH).
    • Разрешает все входящие TCP и UDP-соединения в mainNetwork для NodePorts в диапазоне 30000–32767.

    Внимание! Использование этой опции совместно с Edge Gateway типа NSX-T подразумевает, что к одному Edge Gateway может быть привязан только один кластер, поскольку в этом случае все существующие правила брандмауэра будут перезаписаны.

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

  • edgeGateway
    объект

    Свойства VMware Cloud Director Edge Gateway (принадлежащее Virtual Data Center).

    • edgeGateway.NSX-V
      объект

      Дополнительные параметры, необходимые, если type равно NSX-V.

      • edgeGateway.NSX-V.externalNetworkName
        строка

        Имя внешней сети для создания правила DNAT для мастер-узла. Внешняя сеть — это сеть, подключённая к Edge Gateway в разделе Gateway Interface и имеющая внешний IP-адрес.

        Длина: 1..128

      • edgeGateway.NSX-V.externalNetworkType
        строка

        Тип внешней сети для создания правила DNAT для мастер-узла (один из “org” или “ext”).

        Допустимые значения: org, ext

    • edgeGateway.externalIP
      строка

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

      IP-адрес, доступный из внешних сетей, через который входящие SSH-соединения перенаправляются на мастер-узел с использованием DNAT.

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

    • edgeGateway.externalPort
      целочисленный

      Внешний порт, сопоставленный правилом DNAT для перенаправления входящих SSH соединений на мастер-узел.

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

      Допустимые значения: 1 <= X <= 65535

      Пример:

      externalPort: 22
      
    • edgeGateway.name
      строка

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

      Имя VMware Cloud Director Edge Gateway.

      Длина: 1..128

    • edgeGateway.type
      строка

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

      Тип платформы сетевой виртуализации, обеспечивающей работу VMware Cloud Director Edge Gateway (один из “NSX-V” или “NSX-T”). Тип платформы можно узнать у администратора.

      Допустимые значения: NSX-V, NSX-T

  • internalNetworkCIDR
    строка

    Адресация для внутренней сети узлов кластера.

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

  • internalNetworkDHCPPoolStartAddress
    целочисленный

    Задает номер адреса в внутренней сети, с которого начинается пул DHCP-адресов. Адреса с номерами ниже этого значения не будут выдаваться автоматически по DHCP и доступны для ручного назначения. Если значение не указано, по умолчанию используется 30.

    Например, в сети 192.168.100.128/27 значение 10 означает, что пул DHCP начнется с IP-адреса 192.168.100.138. Пул закончится на адресе, который непосредственно предшествует широковещательному (192.168.100.159), то есть на последнем пригодном для назначения адресе.

    Допустимые значения: 2 <= X

  • internalNetworkDNSServers
    массив строк

    Список адресов рекурсивных DNS серверов.

    • Элемент массива
      строка

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

  • kind
    строка

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

    Допустимые значения: VCDClusterConfiguration

  • layout
    строка

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

    Способ размещения ресурсов в облаке.

    Подробнее о возможных вариантах размещения.

  • legacyMode
    булевый

    Режим поддержки устаревших версий API VCD.

    Если задано значение true, будет использоваться версия API ниже 37.2.

    Параметр имеет эффект только при установке кластера. В работающем кластере необходимость включения режима поддержки устаревших версий API определяется автоматически.

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

  • mainNetwork
    строка

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

    Путь до сети, которая будет подключена к виртуальной машине как основная (шлюз по умолчанию).

    Пример:

    mainNetwork: internal
    
  • masterNodeGroup
    объект

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

    Спецификация для описания NodeGroup master-узлов.

    Чтобы изменения вступили в силу, после изменения параметров секции masterNodeGroup выполните команду dhctl converge.

    • masterNodeGroup.instanceClass
      объект

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

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

      • masterNodeGroup.instanceClass.etcdDiskSizeGb
        целочисленный

        Размер диска etcd. Значение указывается в гигабайтах.

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

        Пример:

        etcdDiskSizeGb: 10
        
      • masterNodeGroup.instanceClass.mainNetworkIPAddresses
        массив строк

        Список статических IP-адресов (с префиксом CIDR), последовательно распределенных по узлам в mainNetwork.

        По умолчанию DHCP-клиент включен.

        Пример:

        mainNetworkIPAddresses:
        - 10.1.14.20
        - 10.1.4.21
        
        • Элемент массива
          строка

          IP-адрес с префиксом CIDR.

          Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

      • masterNodeGroup.instanceClass.placementPolicy
        строка

        PlacementPolicy, которая будет использоваться на данном компьютере.

        Если PlacementPolicy не указана, для создания узлов будет использоваться PlacementPolicy по умолчанию.

        Пример:

        placementPolicy: Hypervisor1
        
      • masterNodeGroup.instanceClass.rootDiskSizeGb
        целочисленный

        Размер root-диска. Значение указывается в гигабайтах.

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

        Пример:

        rootDiskSizeGb: 50
        
      • masterNodeGroup.instanceClass.sizingPolicy
        строка

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

        SizingPolicy, которая будет использоваться на данном компьютере.

        Если SizingPolicy не указана, для создания узлов будет использоваться SizingPolicy по умолчанию.

        Пример:

        sizingPolicy: 4Cpu8Memory
        
      • masterNodeGroup.instanceClass.storageProfile
        строка

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

        StorageProfile, который будет использоваться на данном компьютере.

        Пример:

        storageProfile: ssd
        
      • masterNodeGroup.instanceClass.template
        строка

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

        Путь к шаблону OVA, который будет использоваться.

        Состоит из организации (опционально), каталога и названия или идентификатора шаблона. В случае общих каталогов шаблонов, наименование организации может не совпадать со значением в параметре provider.organization.

        Если в нескольких каталогах с одинаковым названием есть шаблоны с одинаковым именем, следует указать идентификатор шаблона.

        Идентификатор шаблона можно найти в URL-адресе при открытии шаблона в пользовательском интерфейсе vCD. Например, если URL-адрес https://vcd.example.com/tenant/MyOrg/libraries/catalogs/1032506a-4555-43e1-8589-77b0c0522c75/catalog-vapp-templates/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7/general, то идентификатор шаблона будет 5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7.

        Примеры:

        template: Linux/ubuntu2204-cloud-ova
        
        template: MyOrg/Linux/ubuntu2204-cloud-ova
        
        template: Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7
        
        template: MyOrg/Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7
        
    • masterNodeGroup.replicas
      целочисленный

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

      Количество создаваемых master-узлов. Для обеспечения кворума важно, чтобы оно было нечетным.

      Допустимые значения: 1 <= X

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

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

    • nodeGroups.instanceClass
      объект

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

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

      • nodeGroups.instanceClass.mainNetworkIPAddresses
        массив строк

        Список статических IP-адресов (с префиксом CIDR), последовательно распределенных по узлам в mainNetwork.

        По умолчанию DHCP-клиент включен.

        Пример:

        mainNetworkIPAddresses:
        - 10.1.14.20
        - 10.1.4.21
        
        • Элемент массива
          строка

          IP-адрес с префиксом CIDR.

          Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

      • nodeGroups.instanceClass.placementPolicy
        строка

        PlacementPolicy, которая будет использоваться на данном компьютере.

        Если PlacementPolicy не указана, для создания узлов будет использоваться PlacementPolicy по умолчанию.

        Пример:

        placementPolicy: Hypervisor1
        
      • nodeGroups.instanceClass.rootDiskSizeGb
        целочисленный

        Размер root-диска. Значение указывается в гигабайтах.

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

        Пример:

        rootDiskSizeGb: 50
        
      • nodeGroups.instanceClass.sizingPolicy
        строка

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

        SizingPolicy, которая будет использоваться на данном компьютере.

        Если SizingPolicy не указана, для создания узлов будет использоваться SizingPolicy по умолчанию.

        Пример:

        sizingPolicy: 4Cpu8Memory
        
      • nodeGroups.instanceClass.storageProfile
        строка

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

        StorageProfile, который будет использоваться на данном компьютере.

        Пример:

        storageProfile: ssd
        
      • nodeGroups.instanceClass.template
        строка

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

        Путь к шаблону OVA, который будет использоваться.

        Состоит из организации (опционально), каталога и названия или идентификатора шаблона. В случае общих каталогов шаблонов, наименование организации может не совпадать со значением в параметре provider.organization.

        Если в нескольких каталогах с одинаковым названием есть шаблоны с одинаковым именем, следует указать идентификатор шаблона.

        Идентификатор шаблона можно найти в URL-адресе при открытии шаблона в пользовательском интерфейсе vCD. Например, если URL-адрес https://vcd.example.com/tenant/MyOrg/libraries/catalogs/1032506a-4555-43e1-8589-77b0c0522c75/catalog-vapp-templates/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7/general, то идентификатор шаблона будет 5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7.

        Примеры:

        template: Linux/ubuntu2204-cloud-ova
        
        template: MyOrg/Linux/ubuntu2204-cloud-ova
        
        template: Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7
        
        template: MyOrg/Linux/5438c9f2-7e59-4eb3-b37c-cbd7f3e710c7
        
    • 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
      целочисленный

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

      Количество узлов.

  • organization
    строка

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

    Имя VMware Cloud Director Organization.

  • provider
    объект

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

    Параметры для подключения к VCD.

    • provider.apiToken
      строка

      Токен для аутентификации.

      Внимание! При использовании apiToken необходимо оставить username и password пустыми.

    • provider.insecure
      булевый

      Устанавливается в true, VCD имеет self-signed-сертификат.

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

    • provider.password
      строка

      Пароль пользователя.

    • provider.server
      строка

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

      Хост или IP-адрес VCD-сервера.

    • provider.username
      строка

      Имя пользователя с полными правами на проект.

  • sshPublicKey
    строка

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

    Публичный ключ для доступа на узлы.

  • virtualApplicationName
    строка

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

    Имя VMware Cloud Director Virtual Application (принадлежащее Virtual Data Center).

    Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

  • virtualDataCenter
    строка

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

    Имя VMware Cloud Director Virtual Data Center (принадлежащее Organization).