Skip to main content

Storage

Platform Applications can request storage through the volumeMounts field on the PlatformApplication CRD. Depending on the source shape, the platform either renders a Kubernetes PersistentVolumeClaim against a StorageClass (persistent options) or an emptyDir (ephemeral).

Picking the Right Storage Type​

Four categories cover almost every workload. Pick by access pattern first, then by performance and scale.

CategoryAccess modesUse whenCloud equivalents
Ephemeral storagepod-localScratch space, temp files, build caches — anything that doesn't need to outlive the podemptyDir (no PVC)
Block storageReadWriteOnce (single pod)Databases, single-replica stateful workloads, lowest latency / highest IOPSAzure Managed Disk (default, managed-csi), AWS EBS, GCP Persistent Disk
Network file storageReadWriteManyApplication data that needs full POSIX file-system semantics (locks, permissions), mid-scaleAzure Files (azurefile-*), AWS EFS, GCP Filestore
Object / blob storageReadWriteMany (NFSv3)Large-scale shared content (media, datasets, uploads), multi-pod write sharing, cheap-per-GBAzureBlob (azureblob-*) is the only PVC-backed implementation today. AWS S3 and GCP Cloud Storage aren't natively mountable as PVCs — until/unless platform-curated drivers land, AWS/GCP RWX needs use Network File Storage (EFS / Filestore).

A few rules of thumb:

  • Multi-replica Deployment → must be ReadWriteMany → object or network file storage.
  • Single-replica stateful (database, queue) → block storage gives you the lowest latency.
  • Unsure if you even need persistence → start with ephemeral. If a pod restart wiping the data is a real problem, that's your signal you need a persistent option. Skips the trap of provisioning storage you'll forget about (and pay for) for months.
  • Unsure which persistent option → fall back to the default object/blob class. Cheap, ReadWriteMany-capable, and migrating off later is straightforward.

Find Available StorageClasses​

StorageClass is a cluster-scoped Kubernetes resource. List what's available on the cluster you're targeting:

kubectl --context=<your-cluster> get storageclass

Sample output by cloud:

NAME                            PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      AGE
azureblob-default blob.csi.azure.com Retain Immediate 7d
azurefile-csi file.csi.azure.com Delete Immediate 512d
default (default) disk.csi.azure.com Delete WaitForFirstConsumer 512d
managed-csi disk.csi.azure.com Delete WaitForFirstConsumer 512d

azureblob-default is the platform-curated default for cloud object storage on Azure. The others are stock AKS-shipped classes.

To inspect a specific class (provisioner, parameters, reclaim policy):

kubectl --context=<your-cluster> get storageclass <name> -o yaml

Subsections​