Модуль Ceph CSI Operator (shturval-ceph-csi)

О сервисе

ПараметрЗначение
Название в интерфейсеМодуль Ceph CSI Operator
Системное название (идентификатор)shturval-ceph-csi
Назначение в кластереУправление драйверами CephFS и RBD через оператор.
КритическийНет
Режим по умолчаниюabsent
Публичный репозиторийceph-csi-operator
Зависимостиshturval-ceph-csi-crds, shturval-networking
Неймспейсceph-csi-operator

CRD должны быть установлены отдельным сервисом shturval-ceph-csi-crds (в интерфейсе — CRDs для модуля Ceph CSI Operator (csi.ceph.io)) в том же неймспейсе ceph-csi-operator.

Назначение

shturval-ceph-csi — модуль Ceph CSI Operator. Позволяет подключать тома CephFS и блочные тома Ceph RBD как PersistentVolume по запросу через StorageClass. Подходит для файловых и блочных хранилищ на базе Ceph.

По умолчанию при обновлении до 2.15.0 выполняется миграция сервисов shturval-ceph-cephfs и shturval-ceph-rbd на этот сервис. При необходимости вы можете провести миграцию вручную до запуска обновления — см. инструкцию. Существующие тома при этом продолжают работать.

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

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

Настройка классов хранилища: StorageClasses (классы хранилища). Параметры подключения к Ceph (мониторы, секреты с ключами, классы хранилища) вы можете задать в customvalues. По настроенной конфигурации в кластере будут созданы ресурсы CephConnection, ClientProfile и Driver.

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

Для работы сервиса shturval-ceph-csi в кластере должны быть запущены shturval-networking и shturval-ceph-csi-crds.

Для включения сервиса в кластере перейдите Сервисы и репозитории → Установленные сервисы или установите чарты shturval-ceph-csi-crds и shturval-ceph-csi из Доступных чартов - вкладка shturval.

В Спецификации сервиса задайте параметры подключения к Ceph, например:

csi:
  drivers:
    cephfs:
      enabled: true
    rbd:
      enabled: true
    nfs:
      enabled: true
  clusters:
    - name: ceph-connection
      monitors:
        - "<monitor-1>:6789"
        - "<monitor-2>:6789"
        - "<monitor-3>:6789"
      clientProfiles:
        - name: <fsid-кластера-ceph>
          cephFs:
            subVolumeGroup: csi
          rbd: {}
          nfs: {}
      secrets:
        - name: csi-cephfs-secret
          userID: csi-cephfs
          userKey: <ключ-пользователя-cephfs>
        - name: csi-rbd-secret
          userID: csi-rbd
          userKey: <ключ-пользователя-rbd>
        - name: csi-nfs-secret
          userID: csi-nfs
          userKey: <ключ-пользователя-nfs>
  storageClasses:
    - name: shturval-cephfs
      driver: cephfs
      clusterID: <fsid-кластера-ceph>
      secretName: csi-cephfs-secret
      reclaimPolicy: Delete
      parameters:
        fsName: <имя-файловой-системы>
    - name: shturval-rbd
      driver: rbd
      clusterID: <fsid-кластера-ceph>
      secretName: csi-rbd-secret
      reclaimPolicy: Delete
      allowVolumeExpansion: true
      parameters:
        pool: <имя-пула>
        imageFeatures: layering
    - name: shturval-nfs
      driver: nfs
      clusterID: <fsid-кластера-ceph>
      secretName: csi-nfs-secret
      reclaimPolicy: Delete
      allowVolumeExpansion: true
      volumeBindingMode: Immediate
      mountOptions:
        - nfsvers=4.1
        - port=2049
      parameters:
        fsName: <имя-файловой-системы>
        nfsCluster: <имя-nfs-кластера>
        server: "<адрес-nfs-сервера>"
ПараметрОписаниеПример
drivers.cephfs.enabledВключить драйвер CephFS (cephfs.csi.ceph.com) и создать ServiceAccount драйвераtrue
drivers.rbd.enabledВключить драйвер RBD (rbd.csi.ceph.com) и создать ServiceAccount драйвераtrue
drivers.nfs.enabledВключить драйвер NFS (nfs.csi.ceph.com) и создать ServiceAccount драйвераtrue
clusters[].nameИмя ресурса CephConnectionceph-connection
clusters[].monitorsАдреса мониторов Ceph, host:port<monitor-1>:6789
clusters[].clientProfiles[].nameИмя ClientProfile. То же значение укажите в clusterID класса хранилища<fsid-кластера-ceph>
clusters[].clientProfiles[].cephFs.subVolumeGroupГруппа подтомов CephFS для динамических томовcsi
clusters[].clientProfiles[].rbdПустой объект включает блочные тома в этом профиле{}
clusters[].clientProfiles[].nfsПустой объект включает NFS в этом профиле{}
clusters[].secrets[].nameИмя Secret в неймспейсе ceph-csi-operator с учётными данными Cephcsi-cephfs-secret
clusters[].secrets[].userIDID сервисной учётной записи Ceph, без префикса client.csi-cephfs
clusters[].secrets[].userKeyКлюч сервисной учётной записи Ceph<ключ-пользователя-cephfs>
storageClasses[].nameИмя StorageClassshturval-cephfs
storageClasses[].driverКороткое имя драйвера: cephfs, rbd или nfsnfs
storageClasses[].clusterIDID кластера, которое должно совпадать с clientProfiles[].name<fsid-кластера-ceph>
storageClasses[].secretNameИмя Secret из clusters[].secretscsi-nfs-secret
storageClasses[].reclaimPolicyПолитика удаления тома: Delete или RetainDelete
storageClasses[].allowVolumeExpansionРазрешить увеличение размера томаtrue
storageClasses[].volumeBindingModeКогда привязывать том: Immediate или WaitForFirstConsumerImmediate
storageClasses[].mountOptionsПараметры монтирования тома NFSnfsvers=4.1
storageClasses[].parameters.fsNameИмя файловой системы CephFS. Требуется для классов cephfs и nfs<имя-файловой-системы>
storageClasses[].parameters.poolПул RBD для динамических томов<имя-пула>
storageClasses[].parameters.imageFeaturesВозможности образа RBD. layering нужен, чтобы клонировать том и снимать снапшотlayering
storageClasses[].parameters.nfsClusterИмя NFS-кластера<имя-nfs-кластера>
storageClasses[].parameters.serverАдрес NFS-сервера<адрес-nfs-сервера>

Если необходимо выключить shturval-ceph-csi, до перевода в режим Выкл (Absent) удалите PVC, которые используют классы Ceph. После того как SSC отработает, в неймспейсе ceph-csi-operator не должно остаться ресурса ClientProfile.

При необходимости переопределения параметров примените изменения через ShturvalServicePatch (SSP).

В созданном StorageClass нельзя переопределить через SSP: driver, parameters, clusterID, secretName и volumeBindingMode, остальные параметры доступны для обновления: reclaimPolicy, allowVolumeExpansion и mountOptions.

Конфигурации созданных CephConnection, ClientProfile, Secret и Driver с теми же именами доступны для обновления.

Объект, удаленный из спецификации или записанный с новым именем, будет удален из кластера. StorageClass и PVC при этом в кластере не удаляются.

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

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

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

Минимальные права для RBD (client.csi-rbd):

mon 'profile rbd'
osd 'profile rbd pool=<имя-пула>'

Миграция при обновлении до 2.15.0

Миграция выполняется при обновлении системных сервисов до 2.15.0 и на кластере управления, и на клиентском кластере платформы:

  • Если shturval-ceph-cephfs и shturval-ceph-rbd в режиме Выкл (Absent) или их нет в кластере, объекты этих сервисов удаляются. shturval-ceph-csi остаётся в режиме Выкл (Absent): объекты оператора не создаются, неймспейс и секреты не меняются.
  • Если shturval-ceph-cephfs и shturval-ceph-rbd в режиме Авто (Auto) или Ручной (Manual), shturval-ceph-csi включается в режим Авто (Auto). Режим Ручной (Manual) на shturval-ceph-csi не переносится.

Неймспейсы ceph-fs и ceph-rbd и секреты в них сохраняются, StorageClass не меняется: уже созданные тома продолжают работать.

Если в конфигурации нет адресов мониторов и clusterID или у одного clusterID разные списки мониторов, миграция останавливается. Сервисы shturval-ceph-cephfs и shturval-ceph-rbd при этом не переводятся в режим Выкл.