Skip to main content

Usage

Dynamic provisioning (RWO)

Create a PVC using the ipfs-csi storage class from the chart defaults:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ipfs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ipfs-csi

Attach the claim to a pod and write data:

apiVersion: v1
kind: Pod
metadata:
name: ipfs-app
spec:
containers:
- name: app
image: busybox:1.36
command: ["sh", "-c", "echo 'hello from ipfs csi' > /data/hello.txt && sleep 3600"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: ipfs-pvc

Read-only CID source

The driver also supports read-only mount scenarios where content is resolved from a fixed CID source. Use a dedicated StorageClass/PVC workflow from your cluster policy when enabling this mode.

Expand volume

Resize by increasing PVC request size:

kubectl patch pvc ipfs-pvc -p '{"spec":{"resources":{"requests":{"storage":"2Gi"}}}}'

The controller handles ControllerExpandVolume, and node-side expansion is processed during publish/expand operations.

Snapshots

See Snapshot and Restore for complete flow and requirements.

Common edge cases

  • If mount paths already contain stale content, node publish/stage logic cleans and re-materializes content.
  • Snapshot restore requires both snapshot CRDs and running snapshot-controller.
  • Missing or mismatched snapshot class/driver name causes restore provisioning failures.

The E2E suites in test/e2e/suites are the canonical executable reference.