Модуль Ceph CSI - Ceph File System (shturval-ceph-cephfs)

О сервисе

Параметр Значение
Название в интерфейсе Модуль Ceph CSI - Ceph File System
Системное название (идентификатор) shturval-ceph-cephfs
Назначение в кластере Динамический провижининг томов Ceph File System (CephFS); подключение общих файловых томов из кластера Ceph.
Критический Нет
Публичный репозиторий Ceph CSI
Зависимости shturval-networking
Неймспейс ceph-fs

Назначение

shturval-ceph-cephfs — модуль Ceph CSI для Ceph File System. Позволяет подключать тома CephFS как PersistentVolume по запросу через StorageClass. Подходит для общих хранилищ на базе Ceph.

Где настраивать

Сервисы и репозиторииУстановленные сервисы → shturval-ceph-cephfs → Управлять.

Настройка классов хранилища: StorageClasses (классы хранилища). Параметры Ceph (clusterID, monitors, секреты с ключами) задаются в customvalues. Требуемые права пользователя Ceph (capabilities) для CephFS описаны в документации Ceph CSI.

Установка и настройка

Для работы shturval-networking должен быть запущен в кластере. При установке рекомендуется создать отдельный неймспейс для чарта.

Если модуль Ceph CSI был установлен при создании кластера, ручная настройка обычно не требуется. Для включения в уже созданном кластере используйте Сервисы и репозиторииУстановленные сервисы или установите чарт shturval-ceph-cephfs из Доступных чартов. При необходимости переопределения параметров чарта, примените изменения через ShturvalServicePatch.

В Спецификации сервиса укажите customvalues:

Пример customvalues (CephFS)
csiConfig:
  - clusterID: <ваше значение>
    monitors:
      - <ваше значение>
secret:
  create: true
  name: <ваше значение>
  adminID: <ваше значение>
  adminKey: <ваше значение>
cephconf: |
  <ваша конфигурация кластера Ceph>
  # Workaround for http://tracker.ceph.com/issues/23446
  fuse_set_user_groups = false

  # Увеличивает размер буфера записи ceph-fuse.
  fuse_big_writes = true  
storageClass:
  create: true
  name: <ваше значение>
  clusterID: <ваше значение>
  fsName: <ваше значение>
  volumeNamePrefix: <ваше значение>
  provisionerSecret: <ваше значение>
  controllerExpandSecret: <ваше значение>
  nodeStageSecret: <ваше значение>
  reclaimPolicy: <ваше значение>
  allowVolumeExpansion: true
Параметр Описание Пример
csiConfig[].clusterID Уникальный идентификатор кластера Ceph my-cluster-id
csiConfig[].monitors Список IP-адресов мониторов Ceph 192.168.1.1
secret.name Имя создаваемого Secret ceph-secret
secret.adminID ID сервисной учётной записи Ceph client.admin
secret.adminKey Ключ сервисной учётной записи Ceph sdfdff
cephconf Конфигурация Ceph в текстовом формате [global] auth cluster required = cephx
storageClass.name Имя создаваемого StorageClass csi-cephfs-sc
storageClass.clusterID Идентификатор кластера Ceph cluster-id
storageClass.fsName Имя файловой системы CephFS myfs
storageClass.volumeNamePrefix Префикс для имён томов shturval-
storageClass.provisionerSecret Secret с учётными данными Ceph для провижининга cephfs-secret
storageClass.controllerExpandSecret Secret для расширения томов ceph-expand-secret
storageClass.nodeStageSecret Secret для монтирования тома на узле csi-cephfs-secret
storageClass.reclaimPolicy Политика удаления тома (Retain, Delete, Recycle) Delete

Права доступа сервисной учётной записи

Минимальные права для пользователя Ceph (client.kubecephfs):

mon 'allow r'
mgr 'allow rw'
mds 'allow rws'
osd 'allow rw pool=cephfs_data, allow rw pool=cephfs_metadata'

Особенности настройки

Блок cephconf в customvalues задаёт текстовую конфигурацию клиента Ceph (секции [global] и при необходимости параметры для ceph-fuse / монтирования). Типовые дополнения (буферы FUSE, fuse_big_writes и т.д.) см. в документации Ceph CSI и примерах values для вашей версии драйвера; при миграции со старой документации проверьте актуальность ключей для выбранного режима монтирования (FUSE vs kernel).

При необходимости подключить несколько экземпляров CephFS в одном кластере:

  1. Установите каждый экземпляр в отдельный неймспейс.
  2. Укажите уникальное значение параметра driverName для каждого экземпляра.
  3. Установите уникальный порт в параметре nodePlugin.httpMetrics.ContainerPort для каждого экземпляра.

Как развернуть этот сервис — Как развернуть новый сервис.