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

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

Конверсии

Модуль настраивается с помощью ресурса ModuleConfig, схема которого содержит номер версии. При применении в кластере старой версии схемы ModuleConfig выполняются автоматические преобразования. Чтобы обновить версию схемы ModuleConfig вручную, необходимо последовательно для каждой версии выполнить следующие действия :

  • Обновление из версии 1 в 2:

    Если поле .storageClass.compatibilityFlag существует, перепишите значение с заглавной буквы.

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

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

Storage

Модуль автоматически создает StorageClass для каждого Datastore и DatastoreCluster из зон (зоны).

Также он позволяет настроить имя StorageClass’а, который будет использоваться в кластере по умолчанию (параметр default) и отфильтровать ненужные StorageClass’ы (параметр exclude).

CSI

Подсистема хранения по умолчанию использует CNS-диски с возможностью изменения их размера на лету. Но также поддерживается работа и в legacy-режиме с использованием FCD-дисков. Поведение настраивается параметром compatibilityFlag.

Важная информация об увеличении размера PVC

Из-за особенностей работы volume-resizer CSI и vSphere API после увеличения размера PVC нужно сделать следующее:

  1. На узле, где находится под, выполнить команду d8 k cordon <имя_узла>.
  2. Удалить под.
  3. Убедиться, что изменение размера прошло успешно. В объекте PVC не будет condition Resizing.

    Состояние FileSystemResizePending не является проблемой.

  4. На узле, где находится под, выполнить команду d8 k uncordon <имя_узла>.

Настройки

Чтобы настроить модуль, используйте ресурс ModuleConfig с именем cloud-provider-vsphere (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/cloud-provider-vsphere для настройки модуля:

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

Параметры

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

  • settings
    объект
    • settings.disableTimesync
      булевый

      Отключение синхронизации времени со стороны vSphere.

      Внимание! Отключение этого параметра не отключает NTP-демоны в гостевой ОС, а лишь отключает корректировки времени со стороны ESXi.

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

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

    • settings.host
      строка

      Доменное имя сервера vCenter.

    • settings.insecure
      булевый

      Установите true, если vCenter использует самоподписанный сертификат.

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

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

    • settings.nsxt
      объект

      Поддержка cloud controller manager’ом балансировщиков (LoadBalancer) в Vsphere через NSX-T.

      • settings.nsxt.defaultIpPoolName
        строка

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

        Имя пула IP-адресов по умолчанию, который используется, если в SVC не установлена аннотация loadbalancer.vmware.io/class.

        Пример:

        defaultIpPoolName: pool1
        
      • settings.nsxt.defaultTcpAppProfileName
        строка

        Имя профиля по умолчанию, используемого для TCP-соединений в NSX-T.

        По умолчанию: default-tcp-lb-app-profile

        Примеры:

        defaultTcpAppProfileName: default-tcp-lb-app-profile
        
        defaultTcpAppProfileName: tcp-profile1
        
      • settings.nsxt.defaultUdpAppProfileName
        строка

        Имя профиля по умолчанию, используемого для UDP-соединений в NSX-T.

        По умолчанию: default-udp-lb-app-profile

        Примеры:

        defaultUdpAppProfileName: default-udp-lb-app-profile
        
        defaultUdpAppProfileName: udp-profile1
        
      • settings.nsxt.host
        строка

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

        Адрес NSX-T.

        Пример:

        host: 1.2.3.4
        
      • settings.nsxt.insecureFlag
        булевый

        Должен быть установлен в true, если NSX-T использует самоподписанный сертификат.

        Примеры:

        insecureFlag: true
        
        insecureFlag: false
        
      • settings.nsxt.loadBalancerClass
        массив

        Дополнительная секция, определяющая классы балансировщика (LoadBalancer Class) (чтобы использовать класс, установите аннотацию loadbalancer.vmware.io/class: <ИМЯ КЛАССА> на SVC).

        Примеры:

        loadBalancerClass: []
        
        loadBalancerClass:
          name: LBC1
          ipPoolName: pool2
        
        loadBalancerClass:
          name: LBC1
          ipPoolName: pool2
          tcpAppProfileName: profile2
          udpAppProfileName: profile3
        
        • settings.nsxt.loadBalancerClass.ipPoolName
          строка

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

          Имя пула IP-адресов.

        • settings.nsxt.loadBalancerClass.name
          строка

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

          Имя класса балансировщика (LoadBalancer Class) для установки аннотации loadbalancer.vmware.io/class: <ИМЯ КЛАССА> в SVC.

        • settings.nsxt.loadBalancerClass.tcpAppProfileName
          строка

          Имя профиля по умолчанию, используемого для TCP-соединений.

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

        • settings.nsxt.loadBalancerClass.udpAppProfileName
          строка

          Имя профиля по умолчанию, используемого для UDP-соединений.

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

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

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

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

        Пример:

        password: password
        
      • settings.nsxt.size
        строка

        Размер сервиса балансировщика (LoadBalancer).

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

        Допустимые значения: SMALL, MEDIUM, LARGE, XLARGE

        Пример:

        size: SMALL
        
      • settings.nsxt.tier1GatewayPath
        строка

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

        Путь к политике NSX-T tier1 gateway.

        Пример:

        tier1GatewayPath: "/path/tier1"
        
      • settings.nsxt.user
        строка

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

        Имя пользователя NSX-T.

        Пример:

        user: user
        
    • settings.password
      строка

      Пароль.

    • settings.region
      строка

      Тег, прикрепленный к vSphere Datacenter, в котором будут происходить все операции: заказ виртуальных машин, размещение их дисков на datastore, подключение к сети.

    • settings.regionTagCategory
      строка

      Имя категории тегов, использующихся для идентификации региона (vSphere Datacenter).

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

      Список публичных SSH-ключей в формате plain-text.

    • settings.storageClass
      объект
      • settings.storageClass.compatibilityFlag
        строка

        Флаг, разрешающий использование старой версии CSI:

        • Legacy — используется старая версия драйвера — только диски FCD, без онлайн-изменения размера;
        • Migration — в этом случае оба драйвера будут доступны в кластере одновременно. Этот режим используется для миграции со старого драйвера.

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

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

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

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

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

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

        Пример:

        default: fast-lun102-7d0bf578
        
      • settings.storageClass.exclude
        массив строк

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

        Пример:

        exclude:
        - ".*-lun101-.*"
        - slow-lun103-1c280603
        
    • settings.username
      строка

      Login ID.

    • settings.vmFolderPath
      строка

      Путь до VirtualMachine Folder, в котором будут создаваться склонированные виртуальные машины.

    • settings.zoneTagCategory
      строка

      Имя категории тегов, использующихся для идентификации зоны (vSphere Cluster).

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

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