Доступно в редакциях: CE, SE, SE+, EE, CSE Pro (1.64)
Подробнее см. в разделе Условия и цены.
Ceph — это масштабируемая распределённая система хранения, обеспечивающая высокую доступность и отказоустойчивость данных. В Deckhouse поддерживается интеграция с Ceph-кластерами, что позволяет динамически управлять хранилищем и использовать StorageClass на основе RBD (RADOS Block Device) или CephFS.
На этой странице представлены инструкции по подключению Ceph в Deckhouse, настройке аутентификации, созданию объектов StorageClass, а также проверке работоспособности хранилища.
Включение модуля
Для подключения Ceph-кластера в Deckhouse необходимо включить модуль csi-ceph. Для этого примените ресурс ModuleConfig:
d8 k apply -f - <<EOF
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: csi-ceph
spec:
  enabled: true
EOF
Подключение к Ceph-кластеру
Чтобы настроить подключение к Ceph-кластеру, необходимо применить ресурс CephClusterConnection. Пример команды:
d8 k apply -f - <<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: CephClusterConnection
metadata:
  name: ceph-cluster-1
spec:
  # FSID/UUID Ceph-кластера.
  # Получить FSID/UUID Ceph-кластера можно с помощью команды `ceph fsid`.
  clusterID: 2bf085fc-5119-404f-bb19-820ca6a1b07e
  # Список IP-адресов ceph-mon’ов в формате 10.0.0.10:6789.
  monitors:
    - 10.0.0.10:6789
EOF
Проверить создание подключения можно командой (фаза должна быть в статусе Created):
d8 k get cephclusterconnection ceph-cluster-1
Аутентификация
Чтобы пройти аутентификацию в Ceph-кластере, необходимо определить параметры аутентификации в ресурсе CephClusterAuthentication:
d8 k apply -f - <<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: CephClusterAuthentication
metadata:
  name: ceph-auth-1
spec:
  # Имя пользователя без `client.`.
  userID: admin
  # Ключ авторизации, соответствующий userID.
  userKey: AQDbc7phl+eeGRAAaWL9y71mnUiRHKRFOWMPCQ==
EOF
Создание StorageClass
Создание объектов StorageClass осуществляется через ресурс CephStorageClass, который определяет конфигурацию для желаемого класса хранения. Ручное создание ресурса StorageClass без CephStorageClass может привести к ошибкам. Пример создания StorageClass на основе RBD (RADOS Block Device):
d8 k apply -f - <<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: CephStorageClass
metadata:
  name: ceph-rbd-sc
spec:
  clusterConnectionName: ceph-cluster-1
  clusterAuthenticationName: ceph-auth-1
  reclaimPolicy: Delete
  type: RBD
  rbd:
    defaultFSType: ext4
    pool: ceph-rbd-pool
EOF
Пример создания StorageClass на основе файловой системы Ceph:
d8 k apply -f - <<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: CephStorageClass
metadata:
  name: ceph-fs-sc
spec:
  clusterConnectionName: ceph-cluster-1
  clusterAuthenticationName: ceph-auth-1
  reclaimPolicy: Delete
  type: CephFS
  cephFS:
    fsName: cephfs
EOF
Проверьте, что созданные ресурсы CephStorageClass перешли в состояние Created, выполнив следующую команду:
d8 k get cephstorageclass
В результате будет выведена информация о созданных ресурсах CephStorageClass:
NAME          PHASE     AGE
ceph-rbd-sc   Created   1h
ceph-fs-sc    Created   1h
Проверьте созданный StorageClass с помощью следующей команды:
d8 k get sc
В результате будет выведена информация о созданном StorageClass:
NAME          PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
ceph-rbd-sc   rbd.csi.ceph.com   Delete          WaitForFirstConsumer   true                   15s
ceph-fs-sc    rbd.csi.ceph.com   Delete          WaitForFirstConsumer   true                   15s
Если объекты StorageClass появились, значит настройка модуля csi-ceph завершена. Теперь пользователи могут создавать PersistentVolume, указывая созданные объекты StorageClass.