Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
CSI Ceph (ceph-csi: RBD + CephFS)
Аддон разворачивает именно официальный Ceph Container Storage Interface driver из репозитория ceph/ceph-csi:
rbd.csi.ceph.com— блочное хранилище RBD (обычноReadWriteOnce)cephfs.csi.ceph.com— файловое хранилище CephFS (обычноReadWriteMany)
Что делает аддон
- Создаёт
ConfigMap ceph-csi-config(FSID + MON endpoint’ы). - Применяет upstream-манифесты
ceph-csiдля RBD/CephFS (provisioner + node plugin). - Создаёт
Secretдля авторизации в Ceph. - Создаёт
StorageClassдля RBD и/или CephFS.
Аддон не разворачивает Ceph-кластер (MON/OSD/MGR). Кластер Ceph должен уже существовать.
Предварительные требования
- Рабочий Ceph-кластер.
- Доступ к
cephCLI (чтобы получить FSID, MON и CephX ключ). - Kubernetes-кластер уже установлен (k3s).
Нужно подготовить:
clusterID= FSID (ceph fsid)- список
monitors(host:port) - CephX пользователь и ключ для CSI
- pool для RBD и (опционально) fs/pool для CephFS
Подготовка в Ceph (пример)
1) Получить FSID
ceph fsid
2) Получить список MON
ceph mon dump
Возьми адреса в формате IP:6789 (или ваш порт MON).
3) Создать пользователя для CSI
# пример для RBD + CephFS
ceph auth get-or-create client.kubernetes \
mon 'allow r' \
mgr 'allow rw' \
osd 'allow rwx pool=rbd, allow rwx pool=cephfs_data, allow rw tag cephfs *=*' \
mds 'allow rw'
4) Вытащить ключ пользователя
ceph auth get-key client.kubernetes
Сохрани его в vault_csi_ceph_user_key.
Настройка в проекте
group_vars/all/addons.yml
addon_csi_ceph: true
csi_ceph_driver_ref: "devel"
csi_ceph_namespace: "kube-system"
csi_ceph_cluster_id: "b9127830-b0cc-4e34-aa47-9d1a2e9949a8"
csi_ceph_monitors:
- "10.0.0.11:6789"
- "10.0.0.12:6789"
- "10.0.0.13:6789"
csi_ceph_user_id: "kubernetes"
csi_ceph_user_key: "{{ vault_csi_ceph_user_key }}"
csi_ceph_rbd_storage_class_name: "ceph-rbd"
csi_ceph_rbd_pool: "rbd"
csi_ceph_rbd_fs_type: "ext4"
csi_ceph_cephfs_storage_class_name: "cephfs"
csi_ceph_cephfs_fs_name: "cephfs"
csi_ceph_cephfs_pool: "cephfs_data"
group_vars/all/vault.yml
vault_csi_ceph_user_key: "<KEY_FROM_ceph_auth_get-key>"
Установка
make addon-csi-ceph
Проверка:
kubectl -n kube-system get pods | rg 'csi-rbd|csi-cephfs'
kubectl get sc
Ожидается наличие StorageClass:
ceph-rbd(или имя изcsi_ceph_rbd_storage_class_name)cephfs(или имя изcsi_ceph_cephfs_storage_class_name)
Пример PVC (RBD)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-rbd-data
spec:
accessModes: [ReadWriteOnce]
storageClassName: ceph-rbd
resources:
requests:
storage: 20Gi
Пример PVC (CephFS)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-cephfs-data
spec:
accessModes: [ReadWriteMany]
storageClassName: cephfs
resources:
requests:
storage: 20Gi
Частые проблемы
-
failed to fetch monitor list
Неверныйcsi_ceph_cluster_idилиcsi_ceph_monitors. -
permission denied/rados: ret=-13
Недостаточные CephX права уclient.<csi_ceph_user_id>. -
PVC в
Pending
Проверь provisioner pods (csi-rbdplugin-provisioner,csi-cephfsplugin-provisioner) и события PVC:kubectl describe pvc <name>.
Официальные ресурсы
- Официальный сайт: https://ceph.io/
- Официальная документация: https://github.com/ceph/ceph-csi/tree/devel
- Версии Helm chart / ПО: https://github.com/ceph/ceph-csi/releases