04.03.2026

CSI Driver rclone для Kubernetes — подключение S3 и 50+ хранилищ как Persistent Volume | Serverspace.uz

Введение

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, что удобно, если:

2) Как это работает

В упрощённом виде схема такая:

3) Требования и важные ограничения

3.1 Требования

По документации проекта, для быстрого старта обычно нужны:

3.2 Object Storage — это не «обычный диск»

S3 и другие объектные хранилища не являются полноценной POSIX-ФС. Поэтому некоторые приложения могут вести себя иначе, чем на блочном диске:

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 (частый продовый вариант)

Пример команды из документации:

helm install csi-rclone oci://ghcr.io/veloxpack/charts/csi-driver-rclone

После установки проверьте, что поднялись 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.

apiVersion: v1
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.

apiVersion: storage.k8s.io/v1
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 (шаблон теста)

Пример, который помогает быстро убедиться, что монтирование работает.

apiVersion: v1
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, который монтируется в под как директория.