Доступно в редакциях:  EE

Стадия жизненного цикла модуля: General Availability

Модуль автоматически включается для всех облачных кластеров, развернутых в OpenStack.

Как явно включить или отключить модуль…

Явно включить или выключить модуль можно одним из следующих способов:

  • С помощью веб-интерфейса Deckhouse. В разделе «Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль cloud-provider-openstack, включите (или выключите) переключатель «Модуль включен». Сохраните изменения.

    Пример:

    Интерфейс включения и выключения модуля

  • С помощью Deckhouse CLI (d8).

    Используйте команду d8 system module enable для включения модуля, или d8 system module disable для выключения модуля (требуется Deckhouse CLI (d8), настроенный на работу с кластером).

    Пример включения модуля cloud-provider-openstack:

    d8 system module enable cloud-provider-openstack
    
  • С помощью ModuleConfig cloud-provider-openstack.

    Установите spec.enabled в true или false в ModuleConfig cloud-provider-openstack (создайте его, при необходимости).

    Пример манифеста для включения модуля cloud-provider-openstack:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cloud-provider-openstack
    spec:
      enabled: true
    

Как настроить модуль…

Настроить модуль можно одним из следующих способов:

  • С помощью веб-интерфейса Deckhouse.

    В разделе «Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль cloud-provider-openstack, включите переключатель «Дополнительные настройки». Заполните необходимые поля формы на вкладке «Конфигурация», или укажите настройки модуля в формате YAML на вкладке «YAML», не включая секцию settings. Сохраните изменения.

    Пример:

    Интерфейс настройки модуля

    Вы также можете отредактировать объект ModuleConfig cloud-provider-openstack на вкладке «YAML» в окне настроек модуля («Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль cloud-provider-openstack), указав версию схемы в параметре spec.version и необходимые параметры модуля в секции spec.settings.

  • С помощью Deckhouse CLI (d8) (требуется Deckhouse CLI (d8), настроенный на работу с кластером).

    Отредактируйте существующий ModuleConfig cloud-provider-openstack (подробнее о настройке Deckhouse читайте в документации), выполнив следующую команду:

    d8 k edit mc cloud-provider-openstack
    

    Внесите необходимые изменения в секцию spec.settings. При необходимости укажите версию схемы в параметре spec.version. Сохраните изменения.

    Вы также можете создать файл манифеста ModuleConfig cloud-provider-openstack, используя пример ниже. Заполните секцию spec.settings необходимыми параметрами модуля. При необходимости укажите версию схемы в параметре spec.version.

    Примените манифест с помощью следующей команды (укажите имя файла манифеста):

    d8 k apply -f <FILENAME>
    

    Пример файла манифеста ModuleConfig cloud-provider-openstack:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cloud-provider-openstack
    spec:
      version: 1
      enabled: true
      settings: # Параметры модуля из раздела "Параметры" ниже.
    

Количество и параметры процесса заказа машин в облаке настраиваются в custom resource NodeGroup модуля node-manager, в котором также указывается название используемого для этой группы узлов инстанс-класса (параметр cloudInstances.classReference NodeGroup). Инстанс-класс для cloud-провайдера OpenStack — это custom resource OpenStackInstanceClass, в котором указываются конкретные параметры самих машин.

Настройки модуля устанавливаются автоматически на основании выбранной схемы размещения. В большинстве случаев нет необходимости в ручной конфигурации модуля.

Если вам необходимо настроить модуль, потому что, например, у вас bare-metal-кластер, для которого нужно включить возможность добавлять дополнительные инстансы из OpenStack, смотрите раздел Как настроить Hybrid-кластер в OpenStack.

Внимание! При изменении настроек модуля пересоздания существующих объектов Machines в кластере НЕ происходит (новые объекты Machine будут создаваться с новыми параметрами). Пересоздание происходит только при изменении параметров NodeGroup и OpenStackInstanceClass. См. подробнее в документации модуля node-manager. Для настройки аутентификации с помощью модуля user-authn необходимо в Crowd’е проекта создать новое Generic приложение.

Список необходимых сервисов OpenStack

Список сервисов OpenStack, необходимых для работы Deckhouse Kubernetes Platform в OpenStack:

Сервис Версия API
Identity (Keystone) v3
Compute (Nova) v2
Network (Neutron) v2
Block Storage (Cinder) v3
Load Balancing (Octavia) ⃰ v2

⃰  Если нужно заказывать Load Balancer.

Чтобы интеграция и работа с платформой Deckhouse Kubernetes проходила корректно, присвойте ассоциированному пользователю OpenStack роль member. Это обеспечит разрешения на взаимодействие с указанными сервисами и управление ресурсами.

В случае использования публичных облаков, адреса и порты API можно узнать в официальной документации сервиса:

Параметры

Версия схемы: 1

  • settings
    объект
    • settings.additionalExternalNetworkNames
      массив строк

      Имена дополнительных сетей, которые могут быть подключены к виртуальной машине и использованы в cloud-controller-manager для проставления ExternalIP в .status.addresses в Node API объект.

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

      Пример:

      additionalExternalNetworkNames:
      - some-bgp-network
      
    • settings.connection
      объект

      Параметры подключения к API cloud-провайдера.

      • settings.connection.authURL
        строка

        OpenStack Identity API URL.

      • settings.connection.caCert
        строка

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

      • settings.connection.domainName
        строка

        Имя домена.

      • settings.connection.password
        строка

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

      • settings.connection.region
        строка

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

      • settings.connection.tenantID
        строка

        ID проекта.

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

      • settings.connection.tenantName
        строка

        Имя проекта.

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

      • settings.connection.username
        строка

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

    • settings.externalNetworkNames
      массив строк

      Имена сетей, подключенные к виртуальной машине и используемые cloud-controller-manager для проставления ExternalIP в .status.addresses в Node API объект.

      Пример:

      externalNetworkNames:
      - KUBE-3
      - devops-internal
      
    • settings.ignoreVolumeMicroversion
      булевый

      Настройка для обратной совместимости. Включите, если версия OpenStack в облаке меньше 3.34 и вы получаете ошибку «Version 3.34 is not supported by the API. Minimum is 3.0 and maximum is 3.x» при заказе PV. Это отключит изменения размеров томов «на лету», но вернет возможность заказа новых PV. (оригинальный PR https://github.com/kubernetes/cloud-provider-openstack/pull/1986/)

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

    • settings.instances
      объект

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

      • settings.instances.additionalNetworks
        массив строк

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

      • settings.instances.imageName
        строка

        Имя образа.

      • settings.instances.mainNetwork
        строка

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

      • settings.instances.securityGroups
        массив строк

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

      • settings.instances.sshKeyPairName
        строка

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

    • settings.internalNetworkNames
      массив строк

      Имена сетей, подключенные к виртуальной машине и используемые cloud-controller-manager для проставления InternalIP в .status.addresses в Node API объект.

      Пример:

      internalNetworkNames:
      - KUBE-3
      - devops-internal
      
    • settings.loadBalancer
      объект

      Параметры Load Balancer’а.

      • settings.loadBalancer.floatingNetworkID
        строка

        ID external network, который будет использоваться для заказа Floating IP.

      • settings.loadBalancer.subnetID
        строка

        ID подсети Neutron, в которой необходимо создать load balancer virtual IP.

    • settings.podNetworkMode
      строка

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

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

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

    • settings.storageClass
      объект

      Автоматическое создание StorageClass’ов, которые есть в OpenStack.

      • settings.storageClass.default
        Параметр устарел
        строка

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

        Если значение не указано, фактический StorageClass по умолчанию будет определен следующим образом:

        • произвольный StorageClass в кластере, имеющий default-аннотацию;
        • первый (по алфавиту) StorageClass из тех, что создаются модулем (в порядке из OpenStack).

        Параметр устарел. Вместо этого параметра используйте глобальный параметр global.defaultClusterStorageClass.

        Пример:

        default: ceph-ssd
        
      • settings.storageClass.exclude
        массив строк

        Полные имена (или regex выражения имен) StorageClass’ов, которые не будут созданы в кластере.

        Пример:

        exclude:
        - ".*-hdd"
        - iscsi-fast
        
      • settings.storageClass.topologyEnabled
        булевый

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

        Внимание. Если установлено значение false, все новые PersistentVolume’ы создаются без учета ограничений топологии.

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

    • settings.tags
      объект

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

    • settings.zones
      массив строк

      Список зон по умолчанию для заказа инстансов. Может быть переопределен индивидуально для каждой NodeGroup.