Доступно в редакциях: 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:

1d8 k apply -f - <<EOF
2apiVersion: deckhouse.io/v1alpha1
3kind: ModuleConfig
4metadata:
5  name: csi-ceph
6spec:
7  enabled: true
8EOF

Подключение к Ceph-кластеру

Чтобы настроить подключение к Ceph-кластеру, необходимо применить ресурс CephClusterConnection. Пример команды:

1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephClusterConnection
4metadata:
5  name: ceph-cluster-1
6spec:
7  # FSID/UUID Ceph-кластера.
8  # Получить FSID/UUID Ceph-кластера можно с помощью команды `ceph fsid`.
9  clusterID: 2bf085fc-5119-404f-bb19-820ca6a1b07e
10  # Список IP-адресов ceph-mon’ов в формате 10.0.0.10:6789.
11  monitors:
12    - 10.0.0.10:6789
13EOF

Проверить создание подключения можно командой (фаза должна быть в статусе Created):

1d8 k get cephclusterconnection ceph-cluster-1

Аутентификация

Чтобы пройти аутентификацию в Ceph-кластере, необходимо определить параметры аутентификации в ресурсе CephClusterAuthentication:

1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephClusterAuthentication
4metadata:
5  name: ceph-auth-1
6spec:
7  # Имя пользователя без `client.`.
8  userID: admin
9  # Ключ авторизации, соответствующий userID.
10  userKey: AQDbc7phl+eeGRAAaWL9y71mnUiRHKRFOWMPCQ==
11EOF

Создание StorageClass

Создание объектов StorageClass осуществляется через ресурс CephStorageClass, который определяет конфигурацию для желаемого класса хранения. Ручное создание ресурса StorageClass без CephStorageClass может привести к ошибкам. Пример создания StorageClass на основе RBD (RADOS Block Device):

1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephStorageClass
4metadata:
5  name: ceph-rbd-sc
6spec:
7  clusterConnectionName: ceph-cluster-1
8  clusterAuthenticationName: ceph-auth-1
9  reclaimPolicy: Delete
10  type: RBD
11  rbd:
12    defaultFSType: ext4
13    pool: ceph-rbd-pool
14EOF

Пример создания StorageClass на основе файловой системы Ceph:

1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephStorageClass
4metadata:
5  name: ceph-fs-sc
6spec:
7  clusterConnectionName: ceph-cluster-1
8  clusterAuthenticationName: ceph-auth-1
9  reclaimPolicy: Delete
10  type: CephFS
11  cephFS:
12    fsName: cephfs
13EOF

Проверьте, что созданные ресурсы CephStorageClass перешли в состояние Created, выполнив следующую команду:

1d8 k get cephstorageclass

В результате будет выведена информация о созданных ресурсах CephStorageClass:

1NAME          PHASE     AGE
2ceph-rbd-sc   Created   1h
3ceph-fs-sc    Created   1h

Проверьте созданный StorageClass с помощью следующей команды:

1d8 k get sc

В результате будет выведена информация о созданном StorageClass:

1NAME          PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
2ceph-rbd-sc   rbd.csi.ceph.com   Delete          WaitForFirstConsumer   true                   15s
3ceph-fs-sc    rbd.csi.ceph.com   Delete          WaitForFirstConsumer   true                   15s

Если объекты StorageClass появились, значит настройка модуля csi-ceph завершена. Теперь пользователи могут создавать PersistentVolume, указывая созданные объекты StorageClass.