Эти возможности доступны только в Enterprise Edition.

OpenStackClusterConfiguration

Version: deckhouse.io/v1

  • apiVersion (строка)

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

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

  • kind (строка)

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

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

  • layout (строка)

    Название схемы размещения.

    Подробнее… о возможных схемах размещения провайдера.

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

  • masterNodeGroup

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

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

    • instanceClass (объект)

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

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

      • additionalSecurityGroups (массив строк)

        Дополнительный список security groups, которые будут добавлены на заказанные инстансы соответствующего OpenStackInstanceClass в дополнение к указанным в конфигурации cloud-провайдера.

        Используется для задания правил firewall по отношению к заказываемым инстансам.

        SecurityGroups могут не поддерживаться провайдером.

      • additionalTags (объект)

        Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации cloud-провайдера.

        Пример:

        project: cms-production
        severity: critical
        
      • flavorName (строка)

        Тип заказываемых виртуальных машин.

        Получить список всех доступных flavor: openstack flavor list.

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

      • imageName (строка)

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

        Получить список всех доступных образов: openstack image list.

        Внимание! Сейчас поддерживается и тестируется только Ubuntu 18.04, Ubuntu 20.04, Centos 7.

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

      • rootDiskSize (целочисленный)

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

        Если параметр не указан, то для инстанса используется локальный диск с размером указанным в flavor. Если параметр присутствует, то инстанс будет использовать заказанный OpenStack Cinder volume (с указанным размером и стандартным для кластера типом) как root-диск.

        Если в cloud-провайдере существует несколько типов дисков, то для выбора конкретного типа диска виртуальной машины у используемого образа можно установить тип диска по умолчанию. Для этого необходимо в метаданных образа указать имя определённого типа диска. Может понадобиться создать свой собственный image в OpenStack, как это сделать описано в разделе “Загрузка image в OpenStack”.

        openstack volume type list
        openstack image set ubuntu-18-04-cloud-amd64 --property cinder_img_volume_type=VOLUME_NAME
        
    • replicas (целочисленный)

      Сколько master-узлов создавать.

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

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

    • volumeTypeMap (объект)

      Словарь типов дисков для хранения данных etcd и конфигурационных файлов Kubernetes.

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

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

      Формат — словарь (ключ - имя зоны, значение - тип диска).

      Если значение указанное в replicas превышает количество элементов в словаре, то master-узлы, чьи номера превышают длину словаря, получают значения начиная с начала словаря. Если для словаря из примера указано replicas: 5, то с типом диска ru-1a будут master-0, master-2, master-4, а с типом диска ru-1b будут master-1, master-3.

      Пример:

      ru-1a: fast-ru-1a
      ru-1b: fast-ru-1b
      

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

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

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

    • instanceClass (объект)

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

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

      • additionalNetworks (массив строк)

        Список сетей, которые будут подключены к инстансу.

        Пример: "BGP-network-VLAN-3894", "External-VLAN-3699"

      • additionalSecurityGroups (массив строк)

        Дополнительный список security groups, которые будут добавлены на заказанные инстансы соответствующего OpenStackInstanceClass в дополнение к указанным в конфигурации cloud-провайдера.

        Используется для задания правил firewall по отношению к заказываемым инстансам.

        SecurityGroups могут не поддерживаться провайдером.

      • additionalTags (объект)

        Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации cloud-провайдера.

        Пример:

        project: cms-production
        severity: critical
        
      • configDrive (булевый)

        Флаг, указывающий будет ли монтироваться на узел дополнительный диск, содержащий конфигурацию для узла.

        Параметр необходимо устанавливать, если в сети, указанной в качестве mainNetwork отключен DHCP.

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

        Необязательный параметр.

      • flavorName (строка)

        Тип заказываемых виртуальных машин.

        Получить список всех доступных flavor: openstack flavor list.

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

      • floatingIPPools (массив строк)

        Список сетей, в которых заказывать Floating IP для узлов.

      • imageName (строка)

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

        Получить список всех доступных образов: openstack image list.

        Внимание! Сейчас поддерживается и тестируется только Ubuntu 18.04, Ubuntu 20.04, Centos 7.

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

      • mainNetwork (строка)

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

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

      • networksWithSecurityDisabled (массив строк)

        Список сетей из параметров mainNetwork и additionalNetworks, в которых НЕЛЬЗЯ настраивать SecurityGroups и AllowedAddressPairs на портах.

      • rootDiskSize (целочисленный)

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

        Если параметр не указан, то для инстанса используется локальный диск с размером указанным в flavor. Если параметр присутствует, то инстанс будет использовать заказанный OpenStack Cinder volume (с указанным размером и стандартным для кластера типом) как root-диск.

        Если в cloud-провайдере существует несколько типов дисков, то для выбора конкретного типа диска виртуальной машины у используемого образа можно установить тип диска по умолчанию. Для этого необходимо в метаданных образа указать имя определённого типа диска. Может понадобиться создать свой собственный image в OpenStack, как это сделать описано в разделе “Загрузка image в OpenStack”.

        openstack volume type list
        openstack image set ubuntu-18-04-cloud-amd64 --property cinder_img_volume_type=VOLUME_NAME
        
    • name (строка)

      Имя NodeGroup, будет использоваться для генерации имен узлов.

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

    • nodeTemplate

      Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узлов.

      • annotations (объект)

        Аналогично стандартному полю metadata.annotations.

        Пример:

        annotations:
          ai.fleet.com/discombobulate: "true"
        
      • labels (объект)

        Список лейблов, которые будут прикреплены ко всем ресурсам кластера (которые это поддерживают).

        Аналогично стандартному полю metadata.labels.

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

        Формат — key: value.

        Пример:

        labels:
          environment: production
          app: warp-drive-ai
        
      • taints (массив объектов)

        Аналогично полю .spec.taints из объекта Node.

        Внимание! Доступны только поля effect, key, values.

        Пример:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • effect (строка)

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • key (строка)
        • value (строка)
    • replicas (целочисленный)

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

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

    • zones (массив строк)

      Список зон, в которых допустимо создавать узлы.

      Необязательный параметр.

  • provider (объект)

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

    Совпадают с параметрами, передаваемыми в поле connection в модуле cloud-provider-openstack.

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

    • authURL (строка)

      OpenStack Identity API URL.

    • caCert (строка)

      Если OpenStack API имеет self-signed сертификат, можно указать CA x509 сертификат, использовавшийся для подписи.

      Пример:

      caCert: |
        -----BEGIN CERTIFICATE-----
        MIIFyDCCBLCgAwIBAgIQBwDIWH1asdaKNaALUa4NUzANBgkqhkiG9w0BAQsFADBc
        ...
        -----END CERTIFICATE-----
      
    • domainName (строка)

      Имя домена.

    • password (строка)

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

    • region (строка)

      Регион OpenStack, где будет развёрнут кластер.

    • tenantID (строка)

      ID проекта.

      Не может использоваться вместе с tenantName.

    • tenantName (строка)

      Имя проекта.

      Не может использоваться вместе с tenantID.

    • username (строка)

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

  • simple (объект)

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

    • externalNetworkDHCP (булевый)

      Флаг, который указывает включен ли DHCP в сети, указанной в качестве внешней.

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

    • externalNetworkName (строка)

      Имя сети для внешнего взаимодействия.

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

    • podNetworkMode (строка)

      Определяет способ организации трафика в той сети, которая используется для коммуникации между подами (обычно это internal-сеть, но бывают исключения).

      • DirectRouting – между узлами работает прямая маршрутизация, в этом режиме отключены SecurityGroups.
      • VXLAN – между узлами НЕ работает прямая маршрутизация, необходимо использовать VXLAN, в этом режиме отключены SecurityGroups.

      Внимание! После изменения этого параметра необходимо выполнить dhctl converge. Внимание! После переключения с/на VXLAN требуется перезагрузка всех нод кластера.

      По умолчанию: "VXLAN"

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

  • simpleWithInternalNetwork (объект)

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

    • externalNetworkName (строка)

      Имя сети для внешнего взаимодействия.

    • internalSubnetName (строка)

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

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

    • masterWithExternalFloatingIP (булевый)

      Флаг, который указывает создавать ли floating IP на master-узлах.

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

    • podNetworkMode (строка)

      Определяет способ организации трафика в той сети, которая используется для коммуникации между подами (обычно это internal-сеть, но бывают исключения).

      • DirectRouting — между узлами работает прямая маршрутизация, в этом режиме отключены SecurityGroups.
      • DirectRoutingWithPortSecurityEnabled — между узлами работает прямая маршрутизация, но только если в OpenStack явно разрешить на портах диапазон адресов используемых во внутренней сети.
        • Внимание! Убедитесь, что у username есть доступ на редактирование AllowedAddressPairs на портах, подключенных в сеть internalNetworkName. Обычно в OpenStack такого доступа нет, если сеть имеет флаг shared.
      • VXLAN — между узлами НЕ работает прямая маршрутизация, необходимо использовать VXLAN, в этом режиме отключены SecurityGroups.

      Внимание! После изменения этого параметра необходимо выполнить dhctl converge. Внимание! После переключения с/на VXLAN требуется перезагрузка всех нод кластера.

      По умолчанию: "DirectRoutingWithPortSecurityEnabled"

      Допустимые значения: VXLAN, DirectRouting, DirectRoutingWithPortSecurityEnabled

  • sshPublicKey (строка)

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

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

  • standard (объект)

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

    • externalNetworkName (строка)

      Имя сети для внешнего взаимодействия.

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

    • 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]))$

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

    • 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])$

    • internalNetworkSecurity (булевый)

      Флаг, который определяет необходимо ли настраивать SecurityGroups и AllowedAddressPairs на портах внутренней сети.

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

  • standardWithNoRouter (объект)

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

    • externalNetworkDHCP (булевый)

      Флаг, который указывает включен ли DHCP в сети, указанной в качестве внешней.

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

    • externalNetworkName (строка)

      Имя сети для внешнего взаимодействия.

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

    • 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]))$

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

    • internalNetworkSecurity (булевый)

      Флаг, который определяет необходимо ли настраивать SecurityGroups и AllowedAddressPairs на портах внутренней сети.

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

  • tags (объект)

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

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

    Необязательный параметр.

  • zones (массив строк)

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

    Необязательный параметр.