Стадия жизненного цикла модуля: Экспериментальная версия
У модуля есть требования для установки
Перед включением модуля необходимо разрешить использование экспериментальных модулей в ModuleConfig deckhouse. Для этого установите параметр allowExperimentalModules в true.
Deckhouse Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
SystemBucket
Короткие имена: sb
Область: Namespaced
Версия: v1alpha1
Запрашивает бакет в системном объектном хранилище платформы.
Контроллер создаёт бакет в системном бэкенде и кладёт в тот же
namespace ConfigMap (см. status.connectionRef) с параметрами
подключения к S3.
Ресурс предназначен только для компонентов Deckhouse. Он
принимается исключительно в namespace с лейблом
heritage: deckhouse, пользовательских прав на него не выдаётся.
Политики хранения данных нет: удаление SystemBucket удаляет бакет и все объекты в нём.
Учётные данные не выдаются и нигде не хранятся. Потребитель
меняет токен своего ServiceAccount на эндпоинте выдачи
(S3_STS_ENDPOINT из ConfigMap) на пару ключей, которую бэкенд
перестаёт принимать не позднее чем через 30 минут. Кому и к какому бакету это разрешено
— обычное право Kubernetes RBAC на виртуальные субресурсы
systembuckets/read и systembuckets/write: доступ выдаётся и
отзывается как любое другое право, и отзыв ничего не требует
ротировать.
Ключ нужно продлевать. Просить новый ближе к концу срока, а не на каждый запрос: каждый запрос выпускает ключ, а живых ключей на бакет разрешено не больше 50.
-
объектspecЖелаемое состояние бакета.
-
строкаspec.bucketName
Имя бакета в S3. По умолчанию
<metadata.namespace>-<metadata.name>: пространство имён бакетов в бэкенде плоское, а SystemBucket — namespaced, поэтому такое значение по умолчанию не даёт двум компонентам занять одно и то же имя. Неизменяемо после создания.Схема ограничивает поле так же, как S3: от 3 до 63 символов, строчные латинские буквы, цифры и дефисы, начинается и заканчивается буквой или цифрой. Выведенное имя ограничено тем же, но не схемой — она его не видит: namespace и имя ресурса дают в сумме до 127 символов, поэтому имя, которое S3 не примет, отклоняет контроллер: ресурс создаётся, но получает
BucketReady=False.Длина:
3..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
строкаspec.size
Сколько бакет просит, в формате Kubernetes quantity.
Значение становится квотой бакета в бэкенде — запись сверх неё отклоняется — и из него же data plane считает размер своих томов: хранилище выделяет сумму размеров всех SystemBucket, поэтому увеличение здесь и есть то, от чего растут тома.
Значение по умолчанию намеренно небольшое: системный бакет — это рабочий набор компонента платформы, а не озеро данных.
Увеличивать можно в любой момент; когда новое значение вступило в силу как квота бакета, показывает условие
SizeUpToDate. Общая ёмкость PVC отражается в Module/system-s3.CapacityReady. Уменьшать нельзя: выделенные под значение тома не сжимаются (PersistentVolumeClaim уменьшать нельзя), а квота ниже того, что уже лежит в бакете, только сломала бы запись в него.По умолчанию:
1GiШаблон:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$
-
-
объектstatusНаблюдаемое состояние бакета.
-
строкаstatus.bucketNameФактическое имя бакета, созданного в бэкенде.
-
массив объектовstatus.conditionsСостояния по стадиям:
BucketReady,ConnectionReadyи агрегатноеReady. Кроме них,SizeUpToDateпоказывает, вступил ли в силуspec.size:AppliedлибоQuotaPending. Общие состояния хранилища, включая рост PVC и миграции Garage, публикуются в Module/system-s3.-
строка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,BucketReady,ConnectionReadyилиSizeUpToDate.Максимальная длина:
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.connectionRef
Ссылка на ConfigMap (в namespace бакета) с параметрами подключения:
S3_ENDPOINT(https),S3_REGION,S3_BUCKET,S3_CA_CERT(CA, которым проверяется эндпоинт), а для получения учётных данных —S3_STS_ENDPOINT,S3_STS_AUDIENCE,S3_STS_CA_CERT.Именно ConfigMap, а не Secret: секретного в нём ничего нет, потому что долгоживущих ключей модуль не выпускает.
-
строкаstatus.connectionRef.name
Обязательный параметр
Имя ConfigMap.
-
-
строкаstatus.endpointВнутрикластерный URL S3-эндпойнта системного хранилища.
-
целое числоstatus.objectsЧисло объектов в бакете по данным бэкенда.
-
целое числоstatus.observedGenerationПоследнее значение
metadata.generation, обработанное контроллером. -
строкаstatus.phaseАгрегатная фаза:
Pending,InProgress,Ready,Error.Допустимые значения:
Pending,InProgress,Ready,Error -
целое числоstatus.quotaBytesКвота, которую бэкенд применяет к этому бакету, полученная из
spec.size. Публикуется как наблюдаемое значение, а не копируется из spec: запись останавливает то, что держит бэкенд. -
целое числоstatus.quotaObjectsСколько объектов бэкенд разрешает хранить в этом бакете:
spec.size, делённый на 64 КиБ. Каждый объект занимает на диске больше своих байт (метаданные, округление до блока файловой системы), и тома хранилища рассчитаны на этот перерасход только до такого числа объектов. Бакет, который его достиг, получает отказ в записи с 403AccessDenied(«Object quota is reached») даже нижеquotaBytes; увеличениеspec.sizeподнимает обе квоты. -
целое числоstatus.usedBytesСколько байт сейчас занято в бакете по данным бэкенда.
-