Модуль Ceph CSI - Ceph Block Device (shturval-ceph-rbd)

О сервисе

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

Назначение

shturval-ceph-rbd — модуль Ceph CSI для Ceph Block Device (RBD). Позволяет подключать блочные тома Ceph как PersistentVolume по запросу через StorageClass.

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

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

Настройка классов хранилища: StorageClasses (классы хранилища). В customvalues задаются csiConfig (clusterID, monitors), секрет с adminID/adminKey и при необходимости cephconf. Требуемые права пользователя Ceph (capabilities) для RBD описаны в документации Ceph CSI.

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

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

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

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

Пример customvalues (Ceph RBD)
csiConfig:
  - clusterID: <ваше значение>
    monitors:
      - <ваше значение>
storageClass:
  create: true
  name: <ваше значение>
  clusterID: <ваше значение>
  dataPool: ""
  pool: <ваше значение>
  imageFeatures: ""
  mounter: ""
  volumeNamePrefix: ""
  encrypted: ""
  encryptionKMSID: ""
  mapOptions: ""
  unmapOptions: ""
  provisionerSecret: <ваше значение>
  provisionerSecretNamespace: <ваше значение>
  controllerExpandSecret: <ваше значение>
  controllerExpandSecretNamespace: <ваше значение>
  nodeStageSecret: <ваше значение>
  nodeStageSecretNamespace: <ваше значение>
  fstype: ext4
  reclaimPolicy: <ваше значение>
  allowVolumeExpansion: true
  mountOptions: []
selinuxMount: true
secret:
  create: true
  name: <ваше значение>
  userID: <ваше значение>
  userKey: <ваше значение>
cephconf: |
    <ваша конфигурация кластера Ceph>
Параметр Описание Пример
csiConfig[].clusterID Уникальный идентификатор кластера Ceph my-cluster-id
csiConfig[].monitors Список IP-адресов мониторов Ceph 192.168.1.1
secret.name Имя создаваемого Secret cephrbd-secret
secret.userID ID сервисной учётной записи Ceph client.admin
secret.userKey Ключ сервисной учётной записи Ceph sdfdff
cephconf Конфигурация Ceph в текстовом формате [global] auth cluster required = cephx
storageClass.name Имя создаваемого StorageClass csi-cephrbd-sc
storageClass.clusterID Идентификатор кластера Ceph cluster-id
storageClass.dataPool Erasure-coded pool для данных, если используется отдельный EC pool ec-data-pool
storageClass.pool Пул Ceph для RBD-образов kuberbd
storageClass.imageFeatures Возможности RBD-образа (layering, journaling, exclusive-lock, object-map, fast-diff, deep-flatten) layering
storageClass.mounter Тип монтирования, например rbd-nbd; пустое значение использует поведение по умолчанию rbd-nbd
storageClass.volumeNamePrefix Префикс для имён RBD-образов shturval-
storageClass.encrypted Включение шифрования тома строковым значением true/false “true”
storageClass.mapOptions Опции map для krbd/nbd krbd:lock_on_read
storageClass.unmapOptions Опции unmap для krbd/nbd krbd:force
storageClass.fstype Тип файловой системы тома (по умолчанию ext4) ext4
storageClass.reclaimPolicy Политика удаления тома (Retain, Delete, Recycle) Delete
selinuxMount Монтирование /etc/selinux хоста в поды для файловых систем с SELinux true

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

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

mon 'profile rbd'
osd 'profile rbd pool=kuberbd'

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

Поле cephconf используйте для параметров клиента Ceph, общих для кластера (аутентификация, сеть и т.д.) — см. примеры в документации Ceph CSI для RBD.

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

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

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