docs: полная документация проекта — docs/ и README.md для каждого аддона

- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/
- docs/: 13 файлов — getting-started, architecture, configuration, addons,
  storage, security, cicd, observability, networking, operations,
  make-reference, molecule-testing, troubleshooting
- addons/*/README.md: 31 новый файл — описание, параметры, примеры кода
  для каждого из 34 аддонов (vault и external-secrets уже существовали)
This commit is contained in:
Sergey Antropoff
2026-04-26 00:22:06 +03:00
parent 1080e6a792
commit eccc1c2a01
45 changed files with 5838 additions and 1670 deletions

198
docs/storage.md Normal file
View File

@@ -0,0 +1,198 @@
# Хранилище
Доступные варианты 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
```