Введение
csi-driver-rclone — это CSI-драйвер для Kubernetes (имя плагина: rclone.csi.veloxpack.io), который позволяет подам монтировать облачные хранилища как Persistent Volume, используя rclone. Драйвер поддерживает 50+ провайдеров, включая S3, Google Cloud Storage, Azure Blob, Dropbox и другие.
Репозиторий: https://github.com/veloxpack/csi-driver-rclone
1) Зачем нужен CSI-драйвер для rclone
В Kubernetes стандартный путь подключать хранилища — это CSI (Container Storage Interface). Обычно под конкретный storage используется «родной» CSI-драйвер. Подход rclone CSI-driver другой: он даёт единый механизм для множества бэкендов через rclone, что удобно, если:
- у вас гибридная инфраструктура или несколько облаков;
- нужно быстро подключить S3/S3-compatible объектное хранилище без vendor-специфичного драйвера;
- хочется унифицировать StorageClass/PVC-паттерн для разных провайдеров.
2) Как это работает
В упрощённом виде схема такая:
- Вы устанавливаете CSI Driver в кластер (controller + node компоненты).
- Создаёте Secret с rclone-конфигурацией (ключи, endpoint, параметры backend).
- Описываете StorageClass, который ссылается на Secret и нужный remote.
- Создаёте PVC, а под монтирует volume в файловую систему контейнера.
3) Требования и важные ограничения
3.1 Требования
По документации проекта, для быстрого старта обычно нужны:
- Kubernetes 1.20+;
- настроенный kubectl и права на установку компонентов в кластер;
- FUSE-поддержка на нодах (важно для mount-сценариев).
3.2 Object Storage — это не «обычный диск»
S3 и другие объектные хранилища не являются полноценной POSIX-ФС. Поэтому некоторые приложения могут вести себя иначе, чем на блочном диске:
- много мелких операций может давать высокую задержку (особенно без кэша);
- конкурентная запись (RWX) может быть рискованной для приложений, которые ожидают строгую файловую семантику;
- часто требуется настройка VFS cache и аккуратный выбор режимов доступа.
4) Установка csi-driver-rclone
В проекте есть несколько вариантов установки. Для продакшена обычно рекомендуют Helm, для ручного контроля — манифесты через kubectl.
Официальный install-док: https://github.com/veloxpack/csi-driver-rclone/blob/main/docs/install-rclone-csi-driver.md
4.1 Установка через Helm (частый продовый вариант)
Пример команды из документации:
После установки проверьте, что поднялись pods драйвера (controller и node), и что в логах нет ошибок FUSE/permissions.
5) Настройка S3/S3-compatible: Secret + StorageClass + PVC
Rclone поддерживает S3 и S3-compatible провайдеров через указание ключей и endpoint. Базовая идея: вы создаёте remote типа s3, задаёте provider = Other и указываете endpoint вашего сервиса.
5.1 Secret с rclone.conf (шаблон)
Ниже — практичный шаблон: хранить полный rclone.conf в Kubernetes Secret. Этот подход проще поддерживать и дебажить, потому что он максимально близок к «обычному» rclone.
kind: Secret
metadata:
name: rclone-secret
namespace: default
type: Opaque
stringData:
rclone.conf: |
[s3remote]
type = s3
provider = Other
env_auth = false
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_KEY
endpoint = https://YOUR_S3_ENDPOINT
region = YOUR_REGION
5.2 StorageClass (шаблон)
Параметры StorageClass зависят от версии драйвера и выбранного способа конфигурации. Общая логика одна: указать provisioner и связать его с Secret/remote.
kind: StorageClass
metadata:
name: rclone-s3
provisioner: rclone.csi.veloxpack.io
parameters:
secretName: rclone-secret
secretNamespace: default
remote: s3remote
reclaimPolicy: Retain
volumeBindingMode: Immediate
5.3 PVC + Pod (шаблон теста)
Пример, который помогает быстро убедиться, что монтирование работает.
kind: PersistentVolumeClaim
metadata:
name: data-s3
spec:
accessModes:
- ReadWriteMany
storageClassName: rclone-s3
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Pod
metadata:
name: app-test
spec:
containers:
- name: app
image: alpine
command: ["sh", "-c", "echo test > /data/hello.txt && ls -la /data && sleep 3600"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: data-s3
6) S3-compatible Object Storage под Kubernetes
Если задача — подключить объектное хранилище по S3 API к Kubernetes через rclone, важно, чтобы сервис поддерживал S3-compatible endpoint и доступ по ключам. У Serverspace Object Storage работает по S3-совместимому API: вы создаёте bucket, генерируете access/secret keys и указываете endpoint (например, https://storage.serverspace.uz) в S3-клиенте или rclone.
Это хорошо ложится на csi-driver-rclone: вы используете backend s3, задаёте endpoint Serverspace и получаете PV/PVC, который монтируется в под как привычная директория.
Cloud Servers на Serverspace.uz (для Kubernetes-нод и сервисов вокруг кластера): https://serverspace.uz/services/cloud-servers/
7) Best practices для продакшена
7.1 Следите за кардинальностью и нагрузкой
Object storage может плохо переносить «мелкофайловые» паттерны. Если приложение активно создаёт/переписывает много мелких файлов, заранее тестируйте latency и стоимость операций.
7.2 Осторожно с RWX
ReadWriteMany выглядит удобно, но не все приложения корректно работают с объектным бэкендом как с файловой системой. Если есть возможность — держите один writer и масштабируйте read-реплики.
7.3 Кэширование (VFS cache) и режимы rclone
Для многих сценариев без кэша будет болезненно по задержкам. Настраивайте параметры кэша и проверяйте компромисс «скорость vs потребление диска на ноде».
7.4 Изоляция данных
Разделяйте окружения по bucket’ам или хотя бы по prefix’ам. Это упрощает lifecycle, доступы и снижает риск случайного пересечения данных.
FAQ
Подходит ли S3 от Serverspace для csi-driver-rclone?
Да. Драйвер использует rclone, а rclone умеет работать с S3-compatible сервисами через endpoint и ключи доступа. Для Serverspace Object Storage вы задаёте endpoint (например, https://storage.serverspace.uz), access key и secret key, и используете тип remote s3 с provider = Other.
Это полноценная замена блочному диску?
Нет. Object storage — другой класс хранилища. Для баз данных, журналирования и приложений, чувствительных к POSIX-семантике, чаще подходит блочное хранилище. rclone CSI-driver — отличный инструмент для данных, артефактов, медиа, бэкапов, статических файлов и «объектных» кейсов.
Вывод
csi-driver-rclone — практичный способ подключать S3 и десятки других облачных хранилищ в Kubernetes как PV/PVC через rclone. Он особенно полезен в multi-cloud и гибридных сценариях, где нужно унифицировать подход к storage. Для S3-compatible сервисов (включая Object Storage Serverspace) схема обычно сводится к трём шагам: Secret с rclone.conf, StorageClass с rclone.csi.veloxpack.io и PVC, который монтируется в под как директория.