Руководство по аннотированию возможностей стороннего хранилища

Обзор функции: Добавляя ConfigMap StorageDescription в пространство имён kube-public, платформа автоматически определяет поддержку снимков (snapshot) для каждого стороннего StorageClass, а также поддерживаемые режимы томов и режимы доступа (включая режимы доступа, специфичные для блочных томов). Экран создания PVC затем отображает только допустимые варианты, помогая легко выбрать и использовать нужные возможности хранилища.

Содержание

1. Начало работы

1.1 Создание или обновление ConfigMap

Важно: Выполняйте следующую операцию в пространстве имён kube-public, иначе платформа не распознает возможности хранилища.

Отредактируйте или создайте ConfigMap с именем, начинающимся с sd-, например sd-capabilities-enhanced:

kubectl -n kube-public edit configmap sd-capabilities-enhanced

Обязательная метка

metadata:
  labels:
    features.alauda.io/type: StorageDescription

1.2 Заполнение поля data

Каждый key соответствует provisioner StorageClass; значение — это YAML-строка, описывающая его возможности. Основные поля:

ПолеТипОписание
snapshotBooleanУказывает, поддерживаются ли снимки томов
volumeModeList[String]Поддерживаемые режимы томов; минимум один из Filesystem, Block
accessModesList[String]Режимы доступа, доступные при volumeMode равном Filesystem
blockAccessModesList[String]Режимы доступа, специфичные для блочных томов (опционально)

Если blockAccessModes отсутствует, платформа будет использовать accessModes для блочных томов.

1.3 Применение конфигурации

kubectl apply -f sd-capabilities-enhanced.yaml

После применения UI автоматически подстраивает доступные опции, например:

  • При выборе режима тома Block выпадающий список режимов доступа заполняется значениями из blockAccessModes.
  • Если snapshot: true, операции, связанные со снимками, становятся доступны на странице PVC.

2. Пример ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: sd-capabilities-enhanced
  namespace: kube-public
  labels:
    features.alauda.io/type: StorageDescription
data:
  storage.advanced-block-fs.com: |-
    snapshot: true
    volumeMode:
      - Filesystem
      - Block
    accessModes:
      - ReadWriteOnce
      - ReadOnlyMany
    blockAccessModes:
      - ReadWriteOnce
  storage.filesystem-basic.com: |-
    snapshot: false
    volumeMode:
      - Filesystem
    accessModes:
      - ReadWriteOnce
      - ReadWriteMany

3. Обновление существующих описаний возможностей

  1. Найдите ключ provisioner, который хотите изменить.
  2. Отредактируйте значения полей, чтобы они отражали актуальные возможности.
  3. Повторно примените ConfigMap с помощью kubectl apply -f .... Платформа опрашивает обновления и автоматически обновляет UI; вы также можете обновить страницу браузера для немедленного отображения изменений.

4. Совместимость с устаревшим форматом

  • Если blockAccessModes отсутствует, блочные тома наследуют accessModes.
  • Удалять старые ConfigMap не нужно; просто добавьте новые поля для плавного обновления.

5. Часто задаваемые вопросы

СимптомВозможная причинаРешение
Список режимов доступа пуст для блочных томовblockAccessModes пуст и accessModes также пустыУкажите хотя бы одно из двух
UI по-прежнему показывает устаревшие возможностиConfigMap не сохранён или кэш браузераПроверьте с помощью kubectl get cm, обновите страницу