# Хранилище Доступные варианты storage: NFS, Longhorn, MinIO, CSI S3, Rook-Ceph, GlusterFS. ## NFS (по умолчанию) NFS сервер на master01 + CSI Driver для динамических PVC. StorageClass `nfs-master01` (default). ```yaml addon_nfs_server: true # если NFS не установлен основным плейбуком addon_csi_nfs: true ``` ```yaml # PVC: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-data spec: accessModes: [ReadWriteMany] storageClassName: nfs-master01 resources: requests: storage: 10Gi ``` Подробнее: [addons/nfs-server/README.md](../addons/nfs-server/README.md), [addons/csi-nfs/README.md](../addons/csi-nfs/README.md). --- ## Longhorn — distributed block storage Реплицированное блочное хранилище. Хранит данные на дисках нод. Снимки, live migration. ```yaml addon_longhorn: true longhorn_default_replica_count: 2 ``` ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: db-data spec: accessModes: [ReadWriteOnce] storageClassName: longhorn resources: requests: storage: 20Gi ``` Подробнее: [addons/longhorn/README.md](../addons/longhorn/README.md). --- ## MinIO — объектное хранилище S3 S3-совместимый сервер для хранения объектов. Используется как backend для Loki, Velero, CSI S3, Databasus. ```yaml addon_minio: true minio_mode: "standalone" # или distributed (требует 4+ нод) minio_storage_size: "50Gi" ``` Endpoint: `http://minio.minio.svc.cluster.local:9000` Подробнее: [addons/minio/README.md](../addons/minio/README.md). --- ## CSI S3 Driver — S3 как PVC Монтирует S3/MinIO бакеты как PersistentVolume. Автоматически подключается к MinIO при `addon_minio: true`. ```yaml addon_csi_s3: true addon_minio: true ``` ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: s3-storage spec: accessModes: [ReadWriteMany] storageClassName: csi-s3 resources: requests: storage: 100Gi ``` Подробнее: [addons/csi-s3/README.md](../addons/csi-s3/README.md). --- ## Rook-Ceph — distributed storage Block (RWO) + Filesystem (RWX) storage через Ceph. Требует минимум 3 ноды с незанятыми дисками. ```yaml addon_csi_ceph: true rook_ceph_mon_count: 3 rook_ceph_block_replica_count: 3 ``` StorageClasses: - `rook-ceph-block` — ReadWriteOnce (БД) - `rook-ceph-filesystem` — ReadWriteMany (общие файлы) Подробнее: [addons/csi-ceph/README.md](../addons/csi-ceph/README.md). --- ## CSI GlusterFS Внешний GlusterFS кластер + Heketi как PVC в кластере. ```yaml addon_csi_glusterfs: true csi_glusterfs_heketi_url: "http://192.168.1.20:8080" ``` Подробнее: [addons/csi-glusterfs/README.md](../addons/csi-glusterfs/README.md). --- ## Сравнение вариантов | StorageClass | Тип | RWO | RWX | Особенности | |---|---|---|---|---| | `nfs-master01` | NFS | ✓ | ✓ | По умолчанию, просто | | `longhorn` | Block | ✓ | ✗ | Реплики, снимки, migration | | `csi-s3` | Object | ✓ | ✓ | FUSE, S3-совместимый | | `rook-ceph-block` | Block | ✓ | ✗ | Производительность, надёжность | | `rook-ceph-filesystem` | FS | ✓ | ✓ | CephFS, POSIX | | `glusterfs` | FS | ✓ | ✓ | Внешний GlusterFS | ### Рекомендации по выбору - **Для большинства приложений** — NFS (простота, RWX, работает из коробки) - **Для баз данных** — Longhorn или Rook-Ceph block (RWO, производительность) - **Для больших файлов / медиа** — MinIO + CSI S3 - **Для production-кластера с несколькими нодами** — Rook-Ceph - **Для совместного доступа** — NFS, Rook-Ceph filesystem --- ## Резервное копирование PVC ### Через Velero ```yaml addon_velero: true velero_schedule_cron: "0 2 * * *" ``` ```bash velero backup create my-backup --include-namespaces my-app velero restore create --from-backup my-backup ``` ### Через Longhorn UI Longhorn → Volumes → Take Snapshot → Create Backup (→ S3) --- ## Статический PV (без StorageClass) ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: static-nfs-pv spec: capacity: storage: 50Gi accessModes: [ReadWriteMany] nfs: server: "192.168.1.10" path: "/storage/nfs/static" persistentVolumeReclaimPolicy: Retain --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: static-pvc spec: accessModes: [ReadWriteMany] resources: requests: storage: 50Gi volumeName: static-nfs-pv ```