logo Veloxpack

Driver Parameters

Complete reference for rclone.csi.veloxpack.io driver parameters.

Overview

The rclone CSI driver supports various parameters for configuring storage backends, mount options, and VFS caching. Parameters can be specified in StorageClass, PersistentVolume, or Kubernetes Secrets.

Core Parameters

Required Parameters

ParameterDescriptionExampleRequired
remoteRclone remote names3, gcs, azureblobYes
remotePathPath within the remote storagemy-bucket, /dataYes

Optional Parameters

ParameterDescriptionExampleRequired
configDataInline rclone configuration (INI format)[s3]\ntype = s3No

Template Variables

The driver supports dynamic path substitution using template variables:

VariableDescriptionExample
${pvc.metadata.name}PVC namemy-pvc-12345
${pvc.metadata.namespace}PVC namespacedefault
${pv.metadata.name}PV namepv-rclone-abc123

Example Usage

parameters:
  remote: "s3"
  remotePath: "buckets/${pvc.metadata.namespace}/${pvc.metadata.name}"

Mount Options

Mount options are specified in mountOptions field of StorageClass or PersistentVolume. For a complete list of available mount options, see the rclone mount documentation.

VFS Cache Options

OptionDescriptionValuesExample
vfs-cache-modeCache modeoff, minimal, writes, fullvfs-cache-mode=writes
vfs-cache-max-sizeMaximum cache sizeSize with unitvfs-cache-max-size=10G
vfs-cache-max-ageMax time since last accessDurationvfs-cache-max-age=1h
vfs-cache-min-free-spaceMinimum free spaceSize with unitvfs-cache-min-free-space=1G
dir-cache-timeDirectory cache timeDurationdir-cache-time=30s

Mount Flags

OptionDescriptionTypeExample
debug-fuseDebug FUSE internalsBooleandebug-fuse
allow-otherAllow access to other usersBooleanallow-other
allow-non-emptyAllow mounting over non-empty directoryBooleanallow-non-empty
async-readUse asynchronous readsBooleanasync-read
direct-ioUse Direct IO (disables caching)Booleandirect-io
read-onlyRead-only accessBooleanread-only

VFS Options

OptionDescriptionTypeExample
vfs-case-insensitiveCase insensitive file matchingBooleanvfs-case-insensitive
vfs-linksTranslate symlinksBooleanvfs-links
vfs-refreshRefresh directory cache on startBooleanvfs-refresh
no-seekDon't allow seeking in filesBooleanno-seek
no-modtimeDon't read/write modification timeBooleanno-modtime
no-checksumDon't compare checksumsBooleanno-checksum

Backend-Specific Parameters

Amazon S3

ParameterDescriptionExample
typeBackend types3
providerS3 providerAWS, Minio, DigitalOcean
access_key_idAccess key IDAKIAIOSFODNN7EXAMPLE
secret_access_keySecret access keywJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
regionAWS regionus-east-1
endpointCustom endpointhttps://s3.amazonaws.com

Google Cloud Storage

ParameterDescriptionExample
typeBackend typegoogle cloud storage
project_numberGCP project number12345678
service_account_fileService account file path/path/to/service-account.json
service_account_credentialsService account JSON{"type":"service_account",...}

Azure Blob Storage

ParameterDescriptionExample
typeBackend typeazureblob
accountStorage account namemystorageaccount
keyStorage account keybase64encodedkey
endpointCustom endpointhttps://mystorageaccount.blob.core.windows.net/

Parameter Processing

The driver processes parameters in this order:

  1. Secrets: Loaded as defaults from csi.storage.k8s.io/node-publish-secret-name
  2. Volume Context: Overrides secrets (from StorageClass parameters or PV volumeAttributes)
  3. ConfigData: Parsed INI format and merged with other parameters
  4. Parameter Sanitization: Remote prefixes removed, hyphens converted to underscores

Parameter Sanitization

Parameters are sanitized for consistency:

  • s3-endpointendpoint (when remote is "s3")
  • --cache-modecache_mode
  • EndPointendpoint

CSI Parameters

ParameterDescriptionExample
csi.storage.k8s.io/node-publish-secret-nameSecret name for credentialsrclone-secret
csi.storage.k8s.io/node-publish-secret-namespaceSecret namespacedefault

Examples

Basic S3 Configuration

apiVersion: v1
kind: Secret
metadata:
  name: rclone-s3-secret
type: Opaque
stringData:
  remote: "s3"
  remotePath: "my-bucket"
  configData: |
    [s3]
    type = s3
    provider = AWS
    access_key_id = YOUR_ACCESS_KEY_ID
    secret_access_key = YOUR_SECRET_ACCESS_KEY
    region = us-east-1

Multi-tenant Configuration

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: rclone-multitenant
provisioner: rclone.csi.veloxpack.io
parameters:
  remote: "s3"
  remotePath: "buckets/${pvc.metadata.namespace}/${pvc.metadata.name}"
mountOptions:
  - vfs-cache-mode=writes
  - vfs-cache-max-size=10G
  - dir-cache-time=30s
csi.storage.k8s.io/node-publish-secret-name: "rclone-secret"
csi.storage.k8s.io/node-publish-secret-namespace: "default"
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

Performance Tuning

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-rclone-performance
spec:
  mountOptions:
    - vfs-cache-mode=full
    - vfs-cache-max-size=50G
    - vfs-cache-max-age=24h
    - dir-cache-time=5m
    - async-read
    - vfs-read-ahead=1M
  csi:
    driver: rclone.csi.veloxpack.io
    volumeHandle: performance-volume
    volumeAttributes:
      remote: "s3"
      remotePath: "my-bucket"
      configData: |
        [s3]
        type = s3
        provider = AWS
        access_key_id = YOUR_ACCESS_KEY_ID
        secret_access_key = YOUR_SECRET_ACCESS_KEY
        region = us-east-1

How is this guide?