Skip to main content

Storage Commands

CLI commands for managing storage systems, importing storage, and exposing cluster storage

Storage Commands

The v8x provides a hierarchical command structure for managing storage:

uvx v8x storage
├── system # Manage storage system deployments (CephNFS, etc.)
├── import # Import storage into cluster namespaces
│ ├── nfs # NFS-specific import commands
│ ├── cephfs # CephFS-specific import commands
│ └── internal # Cross-namespace PVC imports
├── expose # Expose cluster storage to external clients
│ ├── cephfs # CephFS external expose commands
│ └── nfs # NFS external expose commands
├── create # Create a PVC
├── delete # Delete a PVC
├── get # Get PVC details
├── list # List PVCs
└── list-available # List available storage classes

If this is your first time using the storage commands, start with:

uvx v8x storage --help
uvx v8x storage system create --help
uvx v8x storage import --help
uvx v8x storage expose --help

This lets you discover which subcommand group matches your task before you start filling in cluster names, namespaces, and provider-specific configuration.

In this section, the pattern is the same throughout: choose a storage subcommand group, inspect --help, then provide the cluster, object name, and any storage-specific configuration needed for create, import, or expose operations.


Storage System Commands

Manage storage system deployments (CephNFS, CephFS infrastructure, etc.).

Create a Storage System

The key options here are the storage system name, system type, and storage class. Use --config-json when the backing system needs additional configuration.

Success looks like this: the storage system is registered for the target cluster and can be retrieved or listed by name afterward.

uvx v8x storage system create <name> <cluster> <system-type> <storage-class> \
[--namespace <ns>] \
[--config-json '{"key": "value"}']

Example - deploy a CephNFS system:

uvx v8x storage system create my-nfs prod-cluster cephnfs \
--namespace vantage-rook-ceph

Get Storage System Details

uvx v8x storage system get <name> <cluster>

List All Storage Systems

uvx v8x storage system list <cluster>

Update a Storage System

uvx v8x storage system update <name> <cluster> \
--config-json '{"server_count": 2}'

Delete a Storage System

uvx v8x storage system delete <name> <cluster> [--force]

Import Commands

Import storage into cluster namespaces. Organised by storage type.

NFS Import

Create NFS Import

Use uvx v8x storage import nfs create --help to inspect optional flags such as --capacity, --access-mode, and --read-only before creating the import.

Success looks like this: the import creates a PVC-backed view of the remote NFS share in the target namespace, and later get or list commands show it as an available storage resource.

uvx v8x storage import nfs create <pvc-name> <cluster> <nfs-server> <nfs-share> \
[--namespace <ns>] \
[--capacity 100Gi] \
[--access-mode ReadWriteMany] \
[--read-only]

Example:

uvx v8x storage import nfs create datasets prod-cluster nas01.internal /exports/ml-datasets \
--capacity 1Ti

Create External NFS Import

Import an NFS server from outside the cluster:

uvx v8x storage import nfs create-external <name> <cluster> <nfs-server> <nfs-share> \
--namespace <ns> \
[--capacity 100Gi] \
[--access-mode ReadWriteMany]

CephFS Import

Create CephFS Import

uvx v8x storage import cephfs create <pvc-name> <cluster> <source-pvc> <source-ns> \
[--namespace <ns>] \
[--capacity 100Gi]

Example:

uvx v8x storage import cephfs create shared-ceph prod-cluster shared-storage vantage-system

Create External CephFS Import

Import from an external (non-Rook) Ceph cluster:

uvx v8x storage import cephfs create-external <name> <cluster> \
--ceph-monitors "10.0.0.1:6789,10.0.0.2:6789" \
--ceph-client <client-name> \
--ceph-client-key "AQD...==" \
--ceph-fs-name <fs-name> \
[--ceph-root-path /] \
--namespace <ns> \
[--capacity 500Gi]

Internal (Cross-Namespace) Import

Expose an existing PVC to another namespace:

Create Cross-Namespace Import

uvx v8x storage import internal create <target-pvc-name> <cluster> <source-pvc> <source-ns> \
[--namespace <target-ns>] \
[--capacity 100Gi] \
[--access-mode ReadWriteMany] \
[--read-only]

Example - expose shared-storage to your namespace:

uvx v8x storage import internal create shared-storage prod-cluster shared-storage vantage-system \
--capacity 500Gi

Get / List / Delete Cross-Namespace Imports

uvx v8x storage import internal get <pvc-name> <cluster> [--namespace <ns>]
uvx v8x storage import internal list <cluster> [--namespace <ns>]
uvx v8x storage import internal delete <pvc-name> <cluster> [--namespace <ns>] [--force]

Shared Import Commands

These commands operate across all import types (NFS, CephFS, internal):

# Get details of any import
uvx v8x storage import get <pvc-name> <cluster> [--namespace <ns>]

# List all imports in a namespace
uvx v8x storage import list <cluster> [--namespace <ns>]

# Delete any import
uvx v8x storage import delete <pvc-name> <cluster> [--namespace <ns>] [--force]

# External import lifecycle
uvx v8x storage import get-external <name> <cluster>
uvx v8x storage import list-external <cluster> [--namespace <ns>]
uvx v8x storage import delete-external <name> <cluster> [--force]
uvx v8x storage import external-status <name> <cluster>
uvx v8x storage import external-mount-info <name> <cluster>
uvx v8x storage import external-config <name> <cluster> [--json]

Expose Commands

Expose cluster storage to clients outside the Kubernetes cluster.

CephFS External Expose

Use uvx v8x storage expose cephfs create --help if you need to inspect monitor, client, or service-exposure options before creating the expose configuration.

Success looks like this: the expose operation generates the external access configuration, and the follow-up credentials, status, or mount-commands subcommands return the details clients need to connect.

# Create
uvx v8x storage expose cephfs create <name> <cluster> \
[--ceph-client <client-name>] \
[--mds-path /volumes/csi] \
[--osd-pool vantage-cephfs-data] \
[--expose-monitors] \
[--monitor-service-type NodePort]

# Get details
uvx v8x storage expose cephfs get <name> <cluster>

# List all
uvx v8x storage expose cephfs list <cluster>

# Delete
uvx v8x storage expose cephfs delete <name> <cluster> [--force]

# Get mount commands
uvx v8x storage expose cephfs mount-commands <name> <cluster>

# Get credentials
uvx v8x storage expose cephfs credentials <name> <cluster>

# Get status
uvx v8x storage expose cephfs status <name> <cluster>

NFS External Expose

# Create
uvx v8x storage expose nfs create <name> <cluster> \
--source-pvc <pvc-name> \
--source-namespace <ns>

# Get details
uvx v8x storage expose nfs get <name> <cluster>

# Delete
uvx v8x storage expose nfs delete <name> <cluster> [--force]

Common Options

OptionDescription
CLUSTER_NAME (positional)Cluster name (required)
--namespace, -nTarget namespace (default: derived from your username)
--jsonOutput in JSON format
--force, -fSkip confirmation prompt (delete commands)

Notes

  • All operations are idempotent - re-importing or re-exposing the same storage returns the existing resource
  • Namespaces are created automatically if they don't exist, with Istio sidecar injection enabled
  • Only resources managed by Vantage (labeled with app.kubernetes.io/managed-by=vantage-storage) can be deleted through these commands
  • The --namespace flag defaults to your user namespace derived from your login email
Ask AI
Ask a question about Vantage Compute...