KubernetesPersistentVolumeResource
Classsealednet10.0
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. namespace Aspire.Hosting.Kubernetes;
public sealed class KubernetesPersistentVolumeResource : Aspire.Hosting.ApplicationModel.Resource, Aspire.Hosting.ApplicationModel.IResource, Aspire.Hosting.ApplicationModel.IResourceWithParent, Aspire.Hosting.ApplicationModel.IResourceWithParent<Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource>{ // ...}ResourceIResourceIResourceWithParentIResourceWithParent<KubernetesEnvironmentResource>
Remarks
Section titled RemarksBind 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.
Constructors1
Section titled ConstructorsKubernetesPersistentVolumeResource(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. Properties1
Section titled PropertiesExamples
Section titled Examplesvar 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);