The module lifecycle stage: General Availability

The module has requirements for installation

The d8 utility is the recommended way to export and import volume data. All commands below use the default namespace d8-storage-volume-data-manager and default TTL 2m unless overridden.

For workflows without the d8 utility (YAML manifests, curl, raw HTTP API), see the FAQ.

Exporting data

Create a DataExport

d8 data export create [flags] <data_export_name> <volume_type>/<volume_name>

Supported volume types:

Short Full name Kubernetes kind
pvc persistentvolumeclaim PersistentVolumeClaim
vs volumesnapshot VolumeSnapshot
vd virtualdisk VirtualDisk
vds virtualdisksnapshot VirtualDiskSnapshot

Flags:

  • -n, --namespace — target namespace (default: d8-storage-volume-data-manager)
  • --ttl — time to live after the last access (default: 2m)
  • --publish — expose the exporter outside the cluster (default: false)

Example: export a PVC named data in the project namespace:

d8 data export create -n project my-export pvc/data --ttl 5m

Example: export a VolumeSnapshot:

d8 data export create -n project my-export vs/my-snapshot --ttl 10m

PVC resources can only be exported when they are not currently mounted by any pods.

List exported content

d8 data export list [flags] <data_export_name> [/path/]

Alias: ls.

For filesystem volumes, the directory path must end with /. For block volumes, omit the path.

Example:

d8 data export list -n project my-export /mydir/

Flags: -n, --publish, --ttl (TTL for auto-created DataExport), --cleanup.

When the first argument is a volume reference (e.g. pvc/data) instead of an existing DataExport name, the command creates a temporary DataExport automatically.

Download data

d8 data export download [flags] [KIND/]<name> [path/file.ext] -o <output_file>

The command can reference an existing DataExport by name or auto-create one by passing a volume reference (e.g. pvc/data, vs/my-snapshot).

  • Filesystem mode: provide the file or directory path (e.g. /mydir/file.txt). If -o is omitted, the output filename is derived from the source path.
  • Block mode: omit the path; the raw block device is downloaded. If -o is omitted, the DataExport name is used as the output filename.

Example: download a file from an existing DataExport:

d8 data export download -n project my-export /test_file.txt -o test_file.txt

Example: auto-create DataExport and download from a PVC:

d8 data export download -n project pvc/data /mydir/file.txt -o file.txt --ttl 5m

Example: download a block volume from a VolumeSnapshot:

d8 data export download -n project vs/my-snapshot -o data.img

Flags: -n, -o, --publish, --ttl, --cleanup (delete auto-created DataExport without prompting when set to true).

Delete a DataExport

d8 data export delete [flags] <data_export_name>

Example:

d8 data export delete -n project my-export

Importing data

Create a DataImport

d8 data import create [flags] <data_import_name> -f <pvc-template.yaml>

The PVC template file describes the target volume. Example template (pvc-template.yaml):

metadata:
  name: imported-data
  namespace: project
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: local-path
  volumeMode: Filesystem

Example:

d8 data import create my-import \
  -n project \
  -f ./pvc-template.yaml \
  --ttl 60m --publish --wffc false

Flags:

  • -n, --namespace — target namespace (default: d8-storage-volume-data-manager; can also be set in the template metadata)
  • -f, --file — path to the PVC template file (required)
  • --ttl — time to live (default: 2m)
  • --publish — expose the importer outside the cluster (default: false)
  • --wffc — wait for first consumer (default: false)

Upload data

d8 data import upload [flags] <data_import_name>

Upload a local file to the DataImport endpoint. The command auto-detects uid, gid, and permissions from the source file.

Example:

d8 data import upload my-import \
  -n project \
  -f ./test-file \
  -d /myfile \
  -P

Flags:

  • -n, --namespace — target namespace
  • -f, --file — local source file path (required)
  • -d, --dstPath — destination path on the volume (required)
  • -P, --publish — use the public URL of the DataImport
  • -c, --chunks — split the upload into N chunks (default: 10)
  • --resume — resume an interrupted upload from the server-reported offset

Resume an interrupted upload:

d8 data import upload my-import -n project -f ./test-file -d /myfile -P --resume

Upload in chunks:

d8 data import upload my-import -n project -f ./test-file -d /myfile -P -c 4

Delete a DataImport

d8 data import delete [flags] <data_import_name>

Example:

d8 data import delete my-import -n project

Getting resource information

To inspect a created resource:

d8 k -n <namespace> get de <data_export_name>
d8 k -n <namespace> get di <data_import_name>

The status section contains the access URL (url), CA certificate (ca), public URL (publicURL when --publish is enabled), and readiness conditions.