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

У модуля есть требования для установки

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

MindUstorStorageClass

Область: Cluster
Версия: v1alpha1

Описание StorageClass Kubernetes для томов uStor.

Модуль создаёт StorageClass с тем же именем и поддерживает его в соответствии со спецификацией. Лейблы ресурса копируются в StorageClass, кроме лейблов, ключи которых начинаются с префикса из параметра модуля storageClassLabelIgnoredPrefixes или из встроенного списка. StorageClass драйвера нельзя создавать, изменять или удалять вручную; вручную можно менять только аннотации.

  • spec
    объект
    • spec.connectionName
      строка

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

      Имя MindUstorStorageConnection, через которое создаются тома.

      Подключение должно быть в фазе Created, иначе ресурс получает статус Failed.

      Минимальная длина: 1

    • spec.fsType
      строка
      Файловая система, в которую форматируются тома.

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

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

    • spec.pool
      строка

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

      Имя пула uStor, в котором создаются тома.

      Минимальная длина: 1

    • spec.reclaimPolicy
      строка

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

      Политика освобождения (reclaim policy) StorageClass:

      • Delete: образ uStor удаляется вместе с PersistentVolume;
      • Retain: образ сохраняется после удаления PersistentVolume.

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

    • spec.volumeBindingMode
      строка

      Режим привязки томов (volume binding mode) StorageClass:

      • Immediate: том создаётся сразу вместе с PersistentVolumeClaim;
      • WaitForFirstConsumer: том создаётся, когда запланирован под, который его использует.

      В обоих режимах под, использующий том, размещается только на узлах, где работает node plugin драйвера, то есть на узлах, выбранных параметром dataPlane.nodeSelector подключения: StorageClass и PersistentVolume ограничены этими узлами через топологию.

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

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

  • status
    объект
    Текущее состояние StorageClass.
    • status.conditions
      массив объектов
      Последние наблюдения за состоянием ресурса. Тип условия: Ready.
      • status.conditions.lastTransitionTime
        строка
        Время последней смены состояния условия. Не меняется, если изменились только причина или сообщение.
      • status.conditions.message
        строка
        Понятное человеку пояснение текущего состояния.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
        Значение metadata.generation, по которому выставлено условие.

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

      • status.conditions.reason
        строка
        Машиночитаемая причина текущего состояния, пригодная для фильтрации логов и алертов.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Текущее состояние условия.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия. Ready равно True, когда StorageClass создан и соответствует спецификации, и False, когда согласование завершилось ошибкой. Условия нет, пока контроллер ни разу не обработал ресурс.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      целое число
      Значение metadata.generation, которое контроллер обработал последним. Если оно отстаёт от metadata.generation, контроллер ещё не обработал последнюю спецификацию, и условия описывают предыдущую.
    • status.phase
      строка

      Сводка по условию Ready:

      • Created: StorageClass создан и соответствует спецификации;
      • Failed: StorageClass отсутствует или не соответствует спецификации; подробности в reason.

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

    • status.reason
      строка
      Повторяет сообщение условия Ready.

MindUstorStorageConnection

Область: Cluster
Версия: v1alpha1

Подключение к кластеру uStor: его API управления, с которым работает CSI-контроллер, и сеть данных, через которую клиент uStor на узлах обслуживает тома.

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

Не удаляйте используемое подключение, пока существуют тома, созданные через него. Если подключений не осталось, CSI-контроллер удаляется. Если есть другое подключение, используемым становится оно.

  • spec
    объект
    • spec.controlPlane
      объект

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

      Подключение к API управления uStor.
      • spec.controlPlane.address
        строка

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

        Адрес API управления uStor, доступный из кластера, например https://ustor-api.example.lab:23004. Не изменяется: тома остаются в том кластере uStor, где были созданы.

        Шаблон: ^https://[^\s/]+(:[0-9]+)?/?$

      • spec.controlPlane.ca
        строка
        CA-сертификат в формате PEM, по которому проверяется сертификат API управления, если он выпущен не публичным центром сертификации.
      • spec.controlPlane.credentialsSecretName
        строка

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

        Имя секрета в неймспейсе d8-csi-mind-ustor с ключами username и password пользователя uStor, от имени которого CSI-контроллер управляет образами. Требования uStor к этому пользователю и порядок смены пароля описаны в документации модуля.

        Минимальная длина: 1

      • spec.controlPlane.skipCertificateValidation
        булевый
        Не проверять сертификат API управления. Только для тестовых инсталляций.
    • spec.dataPlane
      объект

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

      Подключение узлов к сети данных uStor.
      • spec.dataPlane.etcdAddresses
        массив строк

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

        Клиентские адреса etcd uStor, например https://10.101.0.1:23000. Они должны быть доступны с каждого узла, на котором монтируются тома uStor.
        • spec.dataPlane.etcdAddresses.Элемент массива
          строка

          Шаблон: ^https?://[^\s/]+:[0-9]+$

      • spec.dataPlane.nodeSelector
        объект

        Узлы, имеющие доступ к сети данных uStor.

        Конфигурация клиента uStor размещается только на этих узлах. Если параметр не задан, она размещается на всех узлах типов CloudEphemeral, CloudPermanent, CloudStatic и Static. На этих узлах модуль заменяет /etc/ustor/ustor.conf и сертификаты в /etc/ustor/certs. CSI node plugin работает на тех из этих узлов, где установлен клиент uStor.

        Внимание. Не исключайте узлы, на которых смонтированы тома uStor: с них удаляется CSI node plugin, и тома нельзя отмонтировать.

        • spec.dataPlane.nodeSelector.matchExpressions
          массив объектов
          Список условий на лейблы узлов. Узел должен удовлетворять всем условиям.
          • spec.dataPlane.nodeSelector.matchExpressions.key
            строка
            Ключ лейбла.
          • spec.dataPlane.nodeSelector.matchExpressions.operator
            строка
            Отношение ключа к значениям: In, NotIn, Exists или DoesNotExist.
          • spec.dataPlane.nodeSelector.matchExpressions.values
            массив строк
            Значения лейбла. Для операторов In и NotIn список не должен быть пустым, для Exists и DoesNotExist должен быть пустым.
        • spec.dataPlane.nodeSelector.matchLabels
          объект
          Лейблы узлов в виде пар «ключ — значение». Узел должен иметь все перечисленные лейблы.
      • spec.dataPlane.osdNetwork
        строка

        Сеть OSD uStor в нотации CIDR, которая записывается в параметр osd_network конфигурации клиента uStor.

        Если параметр не задан, osd_network в конфигурацию не добавляется.

        Шаблон: ^[0-9a-fA-F:.]+/[0-9]{1,3}$

      • spec.dataPlane.tlsSecretName
        строка

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

        Имя секрета в неймспейсе d8-csi-mind-ustor с клиентскими сертификатами uStor в ключах ca.crt (CA uStor), client.crt и client.key (клиентский сертификат), etcd-client.crt и etcd-client.key (клиентский сертификат etcd). На узлах файлы размещаются в /etc/ustor/certs.

        Минимальная длина: 1

  • status
    объект
    Текущее состояние подключения.
    • status.conditions
      массив объектов
      Последние наблюдения за состоянием ресурса. Типы условий: Ready, Authenticated.
      • status.conditions.lastTransitionTime
        строка
        Время последней смены состояния условия. Не меняется, если изменились только причина или сообщение.
      • status.conditions.message
        строка
        Понятное человеку пояснение текущего состояния.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
        Значение metadata.generation, по которому выставлено условие.

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

      • status.conditions.reason
        строка
        Машиночитаемая причина текущего состояния, пригодная для фильтрации логов и алертов.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Текущее состояние условия.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Тип условия. Ready равно True, когда подключение используется, в обоих секретах, на которые оно ссылается, есть все нужные ключи и API управления принимает вход, и False в остальных случаях. Условия нет, пока модуль ни разу не обработал ресурс.

        Authenticated — результат последнего входа в API управления с учётными данными из controlPlane.credentialsSecretName. Модуль повторяет вход раз в час и сразу после изменения секрета. Причина False объясняет отказ: UserLocked (пользователь заблокирован), PasswordExpired (истёк срок действия пароля), TemporaryPassword (пароль задан администратором, и пользователь его ещё не сменил), UserNotFound, LoginRejected или Unreachable (API недоступен); сообщение содержит текст ошибки uStor. Условия нет, пока в секрете не хватает ключа.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      целое число
      Значение metadata.generation, по которому вычислен статус. Если оно отстаёт от metadata.generation, модуль ещё не обработал последнюю спецификацию, и условия описывают предыдущую.
    • status.phase
      строка

      Сводка по условию Ready:

      • Created: подключение используется, и в секретах, на которые оно ссылается, есть все нужные ключи;
      • Failed: подключение не используется, секрет, на который оно ссылается, отсутствует или неполон, или API управления не принимает вход; подробности в reason.

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

    • status.reason
      строка
      Повторяет сообщение условия Ready.