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

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

Bucket

Short names: bkt

Scope: Cluster
Version: v1alpha1

Описывает один S3-бакет в кластере ObjectStore. Контроллер создаёт бакет в бэкенде. Ресурс cluster-scoped: учётные данные здесь не выдаются. Потребляющие namespace запрашивают доступ и получают Secret с учётными данными через namespaced-ресурсы BucketAccess, а доступ между namespace ограничивается cluster-scoped ресурсами BucketClaimPolicy (deny-by-default).
  • spec
    объект
    Желаемое состояние бакета.
    • spec.accessPolicy
      строка

      Политика доступа к бакету.

      • Private (по умолчанию) — доступ только с выданными учётными данными.
      • PublicRead — объекты доступны на чтение анонимно; запись по-прежнему требует учётных данных.

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

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

    • spec.bucketName
      строка
      Имя бакета в S3. Если не задано — используется metadata.name. Должно соответствовать правилам именования бакетов S3. Неизменяемо после создания.

      Длина: 3..63

      Шаблон: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$

    • spec.claimRef
      объект

      Ссылка на заявку BucketClaim, которая создала этот бакет и владеет им (greenfield). У общих бакетов, объявленных администратором, поле пустое.

      Это авторитетная запись о владельце. Выставить поле может только service account модуля (проверяется вебхуком при создании), после создания оно неизменяемо — поэтому бакет нельзя переназначить другой заявке, а чужая заявка не может присвоить себе уже принадлежащий кому-то бакет. Лейблы storage.deckhouse.io/owned-by-claim-* дублируют его для выборок по лейблам, но пользователь может их изменить, и для авторизации они не используются.

      Поле также ограничивает раздачу доступа: политики BucketClaimPolicy для этого бакета учитываются только в этом namespace (либо в namespace модуля, если поле пустое).

      • spec.claimRef.name
        строка

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

        Имя заявки-владельца.

        Длина: 1..253

      • spec.claimRef.namespace
        строка

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

        Namespace заявки-владельца.

        Длина: 1..253

    • spec.objectStoreRef
      строка

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

      Имя ObjectStore, к которому относится бакет. ObjectStore должен существовать и быть в фазе Ready до создания бакета. Неизменяемо после создания.

      Длина: 1..30

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

    • spec.quota
      объект
      Необязательные лимиты использования бакета. Применение зависит от возможностей бэкенда.
      • spec.quota.maxObjects
        целочисленный
        Максимальное число объектов. 0 (по умолчанию) — без лимита.

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

      • spec.quota.maxSize
        строка
        Максимальный суммарный размер бакета в формате Kubernetes Quantity (BinarySI), например 10Gi. Без значения — без лимита.

        Шаблон: ^[0-9]+(\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|k|M|G|T|P|E)?$

    • spec.reclaimPolicy
      строка

      Что происходит с данными бакета при удалении Bucket.

      • Retain (по умолчанию) — бакет и его объекты сохраняются в бэкенде.
      • Delete — бакет и все его объекты удаляются.

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

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

  • status
    объект
    Наблюдаемое состояние бакета.
    • status.bucketName
      строка
      Фактическое имя бакета, созданного в бэкенде.
    • status.conditions
      массив объектов
      Покомпонентные condition: BucketReady и агрегатное Ready.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода condition.
      • status.conditions.message
        строка
        Человекочитаемое описание текущего статуса.

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

      • status.conditions.observedGeneration
        целочисленный
        Значение metadata.generation, для которого выставлен condition.

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

      • status.conditions.reason
        строка
        Машинно-читаемая причина текущего статуса.

        Длина: 1..1024

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

      • status.conditions.status
        строка
        Текущий статус condition.

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

      • status.conditions.type
        строка
        Тип condition.

        Максимальная длина: 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.endpoint
      строка
      Внутрикластерный URL S3-эндпойнта кластера-владельца.
    • status.observedGeneration
      целочисленный
      Последнее значение metadata.generation, обработанное контроллером.
    • status.phase
      строка
      Агрегатная фаза: Pending, InProgress, Ready, Error.

      Допустимые значения: Pending, InProgress, Ready, Error

BucketAccess

Short names: ba

Scope: Namespaced
Version: v1alpha1

Запрашивает доступ к cluster-scoped бакету Bucket из потребляющего namespace. Контроллер генерирует отдельную пару access key / secret key для этого доступа, кладёт в тот же namespace Secret (см. status.secretRef) со стандартными переменными подключения к S3 и отзывает ключ при удалении ресурса.

Разрешён ли доступ, определяется ресурсами BucketClaimPolicy (deny-by-default): доступ, namespace которого не совпал ни с одной политикой для указанного бакета, остаётся в фазе Pending.

Ротация ключей: установите или измените аннотацию storage.deckhouse.io/rotate, чтобы выпустить новую пару ключей (Secret обновляется, предыдущий ключ отзывается).

  • spec
    объект
    Желаемое состояние доступа.
    • spec.bucketClaimName
      строка

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

      Имя BucketClaim (в том же namespace), к привязанному бакету которого выдаются учётные данные. Claim должен быть в состоянии Bound. Неизменяемо после создания.

      Длина: 1..253

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

    • spec.credentialsSecretName
      строка
      Переопределяет имя Secret с учётными данными в namespace доступа. По умолчанию <metadata.name>-s3-credentials.

      Длина: 1..253

    • spec.permission
      строка

      Уровень доступа для выданных учётных данных.

      • ReadWrite (по умолчанию) — чтение и запись объектов.
      • ReadOnly — только чтение объектов.

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

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

  • status
    объект
    Наблюдаемое состояние доступа.
    • status.accessKeyID
      строка
      Публичный идентификатор ключа доступа, выданного для этого доступа (секретный ключ пишется только в Secret).
    • status.bucketName
      строка
      Фактическое имя бакета, к которому предоставлен доступ.
    • status.conditions
      массив объектов
      Покомпонентные condition: AccessGranted, CredentialsReady и агрегатное Ready.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода condition.
      • status.conditions.message
        строка
        Человекочитаемое описание текущего статуса.

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

      • status.conditions.observedGeneration
        целочисленный
        Значение metadata.generation, для которого выставлен condition.

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

      • status.conditions.reason
        строка
        Машинно-читаемая причина текущего статуса.

        Длина: 1..1024

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

      • status.conditions.status
        строка
        Текущий статус condition.

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

      • status.conditions.type
        строка
        Тип condition.

        Максимальная длина: 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.endpoint
      строка
      Внутрикластерный URL S3-эндпойнта кластера-владельца.
    • status.lastRotationTime
      строка
      Время последней выдачи ключа.
    • status.observedGeneration
      целочисленный
      Последнее значение metadata.generation, обработанное контроллером.
    • status.observedRotation
      строка
      Последнее обработанное контроллером значение аннотации storage.deckhouse.io/rotate.
    • status.phase
      строка
      Агрегатная фаза: Pending, InProgress, Ready, Error.

      Допустимые значения: Pending, InProgress, Ready, Error

    • status.secretRef
      объект
      Ссылка на Secret (в namespace этого доступа) с переменными подключения и учётными данными S3: S3_ENDPOINT, S3_REGION, S3_BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY.
      • status.secretRef.name
        строка
        Имя Secret.

BucketClaim

Short names: bc

Scope: Namespaced
Version: v1alpha1

BucketClaim — namespaced-запрос («заявка») на бакет.

  • Greenfield (spec.existingBucketName не задан): контроллер создаёт новый cluster-scoped Bucket, принадлежащий этой заявке и приватный для данного namespace, в spec.objectStoreRef.
  • Brownfield (spec.existingBucketName задан): заявка привязывается к существующему Shared-бакету, что разрешено только при наличии BucketClaimPolicy, дающего доступ этому namespace (deny-by-default).

Учётные данные запрашиваются отдельно ресурсом BucketAccess, ссылающимся на эту заявку по имени в том же namespace.

  • spec
    объект
    Желаемое состояние заявки.
    • spec.accessPolicy
      строка

      Политика доступа для greenfield-бакета. Игнорируется для brownfield.

      • Private (по умолчанию) — доступ только с выданными учётными данными.
      • PublicRead — объекты доступны на чтение анонимно; запись по-прежнему требует учётных данных.

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

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

    • spec.existingBucketName
      строка
      Имя существующего Shared-бакета (объявленного администратором) для привязки (brownfield). Разрешено только при наличии BucketClaimPolicy, дающего доступ этому namespace. Неизменяемо после создания.

      Длина: 3..63

      Шаблон: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$

    • spec.objectStoreRef
      строка
      Имя ObjectStore, в котором создаётся greenfield-бакет. Обязательно для greenfield; игнорируется для brownfield. Неизменяемо после создания.

      Длина: 1..30

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

    • spec.quota
      объект
      Необязательные лимиты использования greenfield-бакета. Применение зависит от возможностей бэкенда.
      • spec.quota.maxObjects
        целочисленный
        Максимальное число объектов. 0 (по умолчанию) — без лимита.

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

      • spec.quota.maxSize
        строка
        Максимальный суммарный размер в формате Kubernetes Quantity (BinarySI), например 10Gi. Без значения — без лимита.

        Шаблон: ^[0-9]+(\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|k|M|G|T|P|E)?$

    • spec.reclaimPolicy
      строка

      Что происходит с данными greenfield-бакета при удалении заявки (и принадлежащего ей Bucket). Игнорируется для brownfield.

      • Retain (по умолчанию) — бакет и его объекты сохраняются.
      • Delete — бакет и все его объекты удаляются.

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

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

  • status
    объект
    Наблюдаемое состояние заявки.
    • status.boundBucketName
      строка
      Имя cluster-scoped Bucket, к которому привязана заявка.
    • status.conditions
      массив объектов
      Постадийные condition: Bound, BucketReady и агрегатное Ready.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода condition.
      • status.conditions.message
        строка
        Человекочитаемое описание текущего статуса.

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

      • status.conditions.observedGeneration
        целочисленный
        Значение metadata.generation, для которого выставлен condition.

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

      • status.conditions.reason
        строка
        Машинно-читаемая причина текущего статуса.

        Длина: 1..1024

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

      • status.conditions.status
        строка
        Текущий статус condition.

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

      • status.conditions.type
        строка
        Тип condition.

        Максимальная длина: 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.endpoint
      строка
      Внутрикластерный URL S3-эндпойнта бэкенда ObjectStore.
    • status.observedGeneration
      целочисленный
      Последнее значение metadata.generation, обработанное контроллером.
    • status.phase
      строка
      Агрегатная фаза: Pending, InProgress, Ready, Error.

      Допустимые значения: Pending, InProgress, Ready, Error

BucketClaimPolicy

Short names: bcp

Scope: Namespaced
Version: v1alpha1

Определяет, из каких namespace разрешено привязывать общий cluster-scoped бакет Bucket (через brownfield-заявку BucketClaim) и, как следствие, получать к нему учётные данные через BucketAccess. Доступ работает по принципу deny-by-default: он выдаётся, только если хотя бы одна политика для этого бакета совпадает с namespace потребителя. Несколько политик для одного бакета складываются (их разрешённые множества объединяются).

Политика должна находиться в namespace-владельце бакета — это namespace заявки BucketClaim, создавшей бакет (Bucket.spec.claimRef.namespace), либо namespace модуля (d8-sds-object) для общих бакетов, объявленных администратором. Таким образом доступ раздаёт тот, кому принадлежит бакет. Политика, созданная в любом другом namespace, не даёт ничего: контроллер выставляет ей фазу Error с причиной NotOwnerNamespace, а не применяет её молча.

  • spec
    объект
    Желаемая политика.
    • spec.allowedNamespaces
      объект

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

      Namespace, которым разрешён запрос доступа к бакету. Namespace совпадает, если он присутствует в names или полностью соответствует любому RE2-регулярному выражению из patterns.
      • spec.allowedNamespaces.names
        массив строк
        Список точных имён namespace.
        • spec.allowedNamespaces.names.Элемент массива
          строка

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

      • spec.allowedNamespaces.patterns
        массив строк
        RE2-регулярные выражения, применяемые к имени namespace (полное совпадение), например team-.*.
        • spec.allowedNamespaces.patterns.Элемент массива
          строка

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

    • spec.bucketRef
      строка

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

      Имя cluster-scoped бакета Bucket, к которому относится политика. Политика учитывается, только если она лежит в namespace-владельце этого бакета. Неизменяемо после создания.

      Длина: 1..63

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

  • status
    объект
    Наблюдаемое состояние политики.
    • status.conditions
      массив объектов
      Состояние. Известный тип: Ready.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода condition.
      • status.conditions.message
        строка
        Человекочитаемое описание текущего статуса.

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

      • status.conditions.observedGeneration
        целочисленный
        Значение metadata.generation, для которого выставлен condition.

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

      • status.conditions.reason
        строка
        Машинно-читаемая причина текущего статуса.

        Длина: 1..1024

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

      • status.conditions.status
        строка
        Текущий статус condition.

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

      • status.conditions.type
        строка
        Тип condition.

        Максимальная длина: 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, обработанное контроллером.
    • status.phase
      строка
      Агрегатная фаза: Pending, Ready, Error. Error — если RE2-паттерн не компилируется либо политика лежит не в namespace-владельце бакета и потому ничего не разрешает.

      Допустимые значения: Pending, Ready, Error

ObjectStore

Short names: ostore

Scope: Cluster
Version: v1alpha1

Описывает желаемое состояние S3-совместимого кластера объектного хранилища, управляемого модулем sds-object. Поле spec.type выбирает один из четырёх готовых профилей; бэкенд (Garage / SeaweedFS / Ceph RGW) и его низкоуровневые настройки скрыты от пользователя (noops).

Бакеты описываются отдельно — в cluster-scoped ресурсах Bucket, ссылающихся на этот кластер по имени.

  • spec
    объект
    Желаемое состояние кластера объектного хранилища.
    • spec.elasticClusterRef
      строка
      Имя ElasticCluster (sds-elastic), на котором создаётся CephObjectStore. Обязательно и допустимо только при spec.type: Heavy. Неизменяемо после создания.

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

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

    • spec.placement
      объект
      Размещение дата-плейна кластера. Для type: System размещение принудительно на control-plane узлах, эти поля игнорируются.
      • spec.placement.nodeSelector
        объект
        Метки узлов, которым должны соответствовать поды дата-плейна (как spec.nodeSelector у пода).
      • spec.placement.tolerations
        массив объектов
        Tolerations для подов дата-плейна (как spec.tolerations у пода).
        • spec.placement.tolerations.effect
          строка

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

        • spec.placement.tolerations.key
          строка
        • spec.placement.tolerations.operator
          строка

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

        • spec.placement.tolerations.tolerationSeconds
          целочисленный
        • spec.placement.tolerations.value
          строка
    • spec.reclaimPolicy
      строка

      Что происходит с дата-плейном бэкенда и его данными при удалении ObjectStore.

      • Retain (по умолчанию) — данные сохраняются. Для Heavy пулы Ceph RGW сохраняются (preservePoolsOnDelete: true), поэтому сохранённые объекты не теряются; сам CephObjectStore при этом удаляется — если оставить его, кластер Ceph останется занятым и ElasticCluster уже никогда не удалить. Для остальных профилей PVC/hostPath-данные остаются на месте.
      • Delete — данные бэкенда (PVC, hostPath, пулы Ceph RGW) уничтожаются.

      Неизменяемо после создания.

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

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

    • spec.redundancy
      строка

      Высокоуровневый интент отказоустойчивости. Контроллер транслирует его в настройки бэкенда (фактор репликации / erasure coding). Если не задано, по умолчанию Standard.

      • None — без избыточности (одна копия). Минимальные накладные расходы. Для Heavy не допускается: data-пул Ceph RGW меньше size 3 не даёт полезной избыточности.
      • Standard — реплицированные копии по узлам/зонам (типовое значение по умолчанию).
      • High — максимальная надёжность (дополнительные реплики или erasure coding), требует больше узлов.

      Неизменяемо после создания: смена фактора репликации на живом кластере не поддерживается.

      Для System допустимо единственное значение — None: одна реплика Garage (фактор 1) вместо трёх по умолчанию. Это единственный случай, когда поле можно изменить после создания: модуль выставляет его из параметра sdsObject.systemBucket.singleReplica. Переключение ПЕРЕСОЗДАЁТ системный кластер — data plane сносится и поднимается пустым, все сохранённые объекты теряются (бакеты создаются заново, ключи доступа перевыпускаются автоматически).

      Допустимые значения: None, Standard, High

    • spec.storage
      объект
      Ёмкость и нижележащее хранилище. Игнорируется для type: Heavy (ёмкость берётся у Ceph-кластера).
      • spec.storage.class
        строка
        Имя Kubernetes StorageClass для создания PVC. Обязательно для Lightweight и Full; игнорируется для System (управляемый local StorageClass) и Heavy (Ceph).

        Длина: 1..253

      • spec.storage.nodes
        целочисленный
        Число узлов data plane (реплики StatefulSet для Lightweight, volume-серверы SeaweedFS для Full). Если не задано, выводится из redundancy. Игнорируется для System (число реплик задаётся профилем: 3 или 1) и Heavy (топология берётся у Ceph-кластера).

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

      • spec.storage.sizePerNode
        строка
        Полезная ёмкость, выделяемая на один узел data plane, в формате Kubernetes Quantity (BinarySI), например 50Gi или 2Ti. Суммарная ёмкость кластера — примерно sizePerNode, умноженная на число узлов. По умолчанию 10Gi. Нельзя задавать для System (local PV на control-plane узлах).

        Шаблон: ^[0-9]+(\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|k|M|G|T|P|E)?$

    • spec.type
      строка

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

      Профиль кластера. Выбирает бэкенд и модель размещения:

      • System — Garage, разворачивается как StatefulSet на control-plane узлах с node-sticky local PV: по умолчанию 3 реплики, либо одна при redundancy: None. Число реплик не зависит от числа мастеров. Для системных нужд платформы (бэкапы, registry, логи). storage.class игнорируется.
      • Lightweight — Garage, StatefulSet с PVC на storage.class. Для небольших прикладных нагрузок.
      • Full — SeaweedFS (master/volume/filer + S3-gateway) с PVC на storage.class. Масштабируемое полнофункциональное хранилище.
      • Heavy — Ceph RADOS Gateway (CephObjectStore) поверх существующего кластера sds-elastic, заданного через elasticClusterRef. Переиспользует ёмкость и отказоустойчивость Ceph.

      Неизменяемо после создания.

      Допустимые значения: System, Lightweight, Full, Heavy

  • status
    объект
    Наблюдаемое состояние кластера объектного хранилища.
    • status.adminSecretRef
      объект

      Ссылка на Secret (в namespace модуля) с админ-учёткой бэкенда, которую контроллер использует для управления бакетами и ключами.

      Не заполняется для Heavy: его учётные данные RGW принадлежат Rook и лежат в namespace sds-elastic, а не модуля.

      • status.adminSecretRef.name
        строка
        Имя Secret.
    • status.backend
      объект
      Фактический бэкенд, реализующий выбранный профиль.
      • status.backend.type
        строка
        Бэкенд, реализующий профиль.

        Допустимые значения: Garage, SeaweedFS, CephRGW

      • status.backend.version
        строка
        Запущенная версия бэкенда.
    • status.capacity
      объект
      Использование хранилища по данным бэкенда.
      • status.capacity.available
        строка
        Свободная ёмкость, Kubernetes Quantity (BinarySI).
      • status.capacity.lastUpdated
        строка
        Время последнего замера ёмкости.
      • status.capacity.total
        строка
        Полная ёмкость, Kubernetes Quantity (BinarySI).
      • status.capacity.used
        строка
        Занятая ёмкость, Kubernetes Quantity (BinarySI).
      • status.capacity.usedPercent
        строка
        used / total * 100, с двумя знаками после запятой.
    • status.conditions
      массив объектов
      Покомпонентные condition: BackendReady, EndpointReady и агрегатное Ready.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода condition.
      • status.conditions.message
        строка
        Человекочитаемое описание текущего статуса.

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

      • status.conditions.observedGeneration
        целочисленный
        Значение metadata.generation, для которого выставлен condition.

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

      • status.conditions.reason
        строка
        Машинно-читаемая причина текущего статуса.

        Длина: 1..1024

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

      • status.conditions.status
        строка
        Текущий статус condition.

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

      • status.conditions.type
        строка
        Тип condition.

        Максимальная длина: 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.endpoint
      объект
      S3-эндпойнт, через который клиенты обращаются к кластеру.
      • status.endpoint.internal
        строка
        Внутрикластерный URL S3-эндпойнта (DNS Service).
      • status.endpoint.region
        строка
        Регион S3 по умолчанию.
    • status.observedGeneration
      целочисленный
      Последнее значение metadata.generation, обработанное контроллером.
    • status.phase
      строка
      Агрегатная фаза: Pending, InProgress, Ready, Error.

      Допустимые значения: Pending, InProgress, Ready, Error