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.
| Category | Access modes | Use when | Cloud equivalents |
|---|---|---|---|
| Ephemeral storage | pod-local | Scratch space, temp files, build caches — anything that doesn't need to outlive the pod | emptyDir (no PVC) |
| Block storage | ReadWriteOnce (single pod) | Databases, single-replica stateful workloads, lowest latency / highest IOPS | Azure Managed Disk (default, managed-csi), AWS EBS, GCP Persistent Disk |
| Network file storage | ReadWriteMany | Application data that needs full POSIX file-system semantics (locks, permissions), mid-scale | Azure Files (azurefile-*), AWS EFS, GCP Filestore |
| Object / blob storage | ReadWriteMany (NFSv3) | Large-scale shared content (media, datasets, uploads), multi-pod write sharing, cheap-per-GB | AzureBlob (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:
- Azure
- AWS
- GCP
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.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE AGE
gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer ...
gp3 ebs.csi.aws.com Delete WaitForFirstConsumer ...
ebs-csi ebs.csi.aws.com Delete WaitForFirstConsumer ...
efs-csi efs.csi.aws.com Delete Immediate ...
These are typical EKS-shipped classes. The platform has not curated AWS-side StorageClasses yet — the names and exact set will depend on your cluster.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE AGE
standard-rwo (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer ...
premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer ...
filestore-csi filestore.csi.storage.gke.io Delete Immediate ...
These are typical GKE-shipped classes. The platform has not curated GCP-side StorageClasses yet — the names and exact set will depend on your cluster.
To inspect a specific class (provisioner, parameters, reclaim policy):
kubectl --context=<your-cluster> get storageclass <name> -o yaml
Subsections
📄️ Ephemeral Storage
Pod-lifetime scratch space via emptyDir. Placeholder.
📄️ Block Storage
Single-pod high-performance block storage (Managed Disk, EBS, Persistent Disk). Placeholder.
📄️ Network File Storage
Multi-pod shared file storage with full POSIX semantics (Azure Files, EFS, Filestore). Placeholder.
📄️ Cloud Storage
Attach Azure Blob (NFSv3, RWX) object storage to a Platform Application via PVC. AWS / GCP equivalents are not yet platform-onboarded.