KubernetesPersistentVolumeResource Constructors
ClassConstructors1 member
Represents a Kubernetes PersistentVolumeClaim as a first-class resource in the Aspire application model. A persistent volume resource carries the storage class, capacity, access modes, and metadata annotations needed to render a
v1.PersistentVolumeClaim at publish time. Workloads bind to it with KubernetesPersistentVolumeExtensions.WithPersistentVolume. Constructor(string, KubernetesEnvironmentResource)Section titled Constructor(string, KubernetesEnvironmentResource) Represents a Kubernetes PersistentVolumeClaim as a first-class resource in the Aspire application model. A persistent volume resource carries the storage class, capacity, access modes, and metadata annotations needed to render a
v1.PersistentVolumeClaim at publish time. Workloads bind to it with KubernetesPersistentVolumeExtensions.WithPersistentVolume. public sealed class KubernetesPersistentVolumeResource{ public KubernetesPersistentVolumeResource( string name, KubernetesEnvironmentResource environment) { // ... }}Parameters
namestringThe name of the persistent volume resource. Used as the generated PersistentVolumeClaim.metadata.name after lower-casing.environmentKubernetesEnvironmentResourceThe parent Kubernetes environment resource.Remarks
Bind a workload to the volume by either:
- Adding a matching
WithVolume("name", "/mount/path")on a container resource and then callingWithPersistentVolume(volume). The publisher matches by volume name and routes the pod'svolumes[]entry through this resource's generated PVC. - Calling the
KubernetesPersistentVolumeExtensions.WithPersistentVolumeoverload that takes a mount path. Works for bothContainerResourceandProjectResource.
Any workload bound to a persistent volume is automatically rendered as a StatefulSet rather than a Deployment — Kubernetes requires stable identity and ordered rollout for pods that share named PVCs.
This resource is publish-only. It has no run-mode behavior or dashboard surface.
Examples
var k8s = builder.AddKubernetesEnvironment("k8s");
var data = k8s.AddPersistentVolume("data") .WithStorageClass("managed-csi") .WithCapacity("20Gi") .WithAccessMode(PersistentVolumeAccessMode.ReadWriteOnce) .WithVolumeAnnotation("volume.beta.kubernetes.io/storage-provisioner", "disk.csi.azure.com");
builder.AddContainer("postgres", "postgres:16") .WithVolume("data", "/var/lib/postgresql/data") .WithPersistentVolume(data);