Доступно только в 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-провайдера.

        Пример:

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

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

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

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

        Для всех не master-узлов желательно использовать flavor’ы с локальным диском. Если в облаке поддерживаются локальные диски, то они обычно быстрее и дешевле. Недостатком использования таких flavor’ов является невозможность миграции узлов между гипервизорами.

        Пример создания flavor’а: openstack flavor create c4m8d50 --ram 8192 --disk 50 --vcpus 4.

      • imageNameстрока

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

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

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

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

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

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

        Параметр также влияет на тип диска. Подробнее…

    • 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.

      Пример:

      volumeTypeMap:
        ru-1a: fast-ru-1a
        ru-1b: fast-ru-1b
      
  • nodeGroupsмассив объектов

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

    • instanceClassобъект

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

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

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

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

        Пример:

        additionalNetworks:
        - BGP-network-VLAN-3894
        - External-VLAN-3699
        
      • additionalSecurityGroupsмассив строк

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

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

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

      • additionalTagsобъект

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

        Пример:

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

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

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

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

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

      • flavorNameстрока

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

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

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

        Для всех не master-узлов желательно использовать flavor’ы с локальным диском. Если в облаке поддерживаются локальные диски, то они обычно быстрее и дешевле. Недостатком использования таких flavor’ов является невозможность миграции узлов между гипервизорами.

        Пример создания flavor’а: openstack flavor create c4m8d50 --ram 8192 --disk 50 --vcpus 4.

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

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

      • imageNameстрока

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

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

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

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

      • mainNetworkстрока

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

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

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

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

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

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

        Параметр также влияет на тип диска. Подробнее…

    • nameстрока

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

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

    • nodeTemplate

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

      • annotationsобъект

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

        Пример:

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

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

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

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

        Пример:

        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строка

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

      Пример:

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

      Имя домена.

    • passwordстрока

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

    • regionстрока

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

    • tenantIDстрока

      ID проекта.

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

    • tenantNameстрока

      Имя проекта.

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

    • usernameстрока

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

  • simpleобъект

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

    • externalNetworkDHCPбулевый

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

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

    • externalNetworkNameстрока

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

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

    • podNetworkModeстрока

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

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

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

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

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

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

  • simpleWithInternalNetworkобъект

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

    • externalNetworkNameстрока

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

    • internalSubnetNameстрока

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

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

    • masterWithExternalFloatingIPбулевый

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

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

    • podNetworkModeстрока

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

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

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

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

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

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

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

    Список CIDR, разрешенных для подключения к узлам по ssh.

    По умолчанию, 0.0.0.0/0.

  • sshPublicKeyстрока

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

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

  • standardобъект

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

    • bastionобъект

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

      • instanceClassобъект

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

        • additionalTagsобъект

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

          Пример:

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

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

          Тип виртуальной машины.

          Получить список всех доступных flavor’ов можно с помощью команды: openstack flavor list.

        • imageNameстрока

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

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

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

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

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

          Параметр также влияет на тип диска. Подробнее…

      • volumeTypeстрока

        Тип корневого диска.

      • zoneстрока

        Зона, в которой создавать инстанс для bastion-узла.

    • 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-провайдер.