Модуль 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Уникальный идентификатор кластера Cephmy-cluster-id
csiConfig[].monitorsСписок IP-адресов мониторов Ceph192.168.1.1
secret.nameИмя создаваемого Secretceph-secret
secret.adminIDID сервисной учётной записи Cephclient.admin
secret.adminKeyКлюч сервисной учётной записи Cephsdfdff
cephconfКонфигурация Ceph в текстовом формате[global] auth cluster required = cephx
storageClass.nameИмя создаваемого StorageClasscsi-cephfs-sc
storageClass.clusterIDИдентификатор кластера Cephcluster-id
storageClass.fsNameИмя файловой системы CephFSmyfs
storageClass.volumeNamePrefixПрефикс для имён томовshturval-
storageClass.provisionerSecretSecret с учётными данными Ceph для провижинингаcephfs-secret
storageClass.controllerExpandSecretSecret для расширения томовceph-expand-secret
storageClass.nodeStageSecretSecret для монтирования тома на узле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 для каждого экземпляра.

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