# KubernetesPersistentVolumeExtensions

- Kind: `class`
- Package: [Aspire.Hosting.Kubernetes](/reference/api/csharp/aspire.hosting.kubernetes.md)
- Version: `13.5.1-preview.1.26420.4`
- Namespace: `Aspire.Hosting`
- Target framework: `net10.0`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/69db530a4816698cf1d5fa4557933e0ac4f127c6/src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs)

Provides extension methods for configuring Kubernetes [KubernetesPersistentVolumeResource](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeresource.md) resources and binding workloads to them.

## Definition

```csharp
namespace Aspire.Hosting;

public static class KubernetesPersistentVolumeExtensions
{
    // ...
}
```

## Methods

- [AddPersistentVolume(IResourceBuilder<KubernetesEnvironmentResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#addpersistentvolume-iresourcebuilder-kubernetesenvironmentresource-string) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Adds a Kubernetes PersistentVolumeClaim resource to the application model as a child of the specified Kubernetes environment. The resource generates a `v1.PersistentVolumeClaim` manifest in the Helm chart output at publish time.
- [WithAccessMode(IResourceBuilder<KubernetesPersistentVolumeResource>, PersistentVolumeAccessMode)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withaccessmode-iresourcebuilder-kubernetespersistentvolumeresource-persistentvolumeaccessmode) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Adds an access mode to the PVC's `spec.accessModes`. Call multiple times to declare more than one mode. When unset, the environment's [KubernetesEnvironmentResource.DefaultStorageReadWritePolicy](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesenvironmentresource/properties.md#defaultstoragereadwritepolicy) is used.
- [WithCapacity(IResourceBuilder<KubernetesPersistentVolumeResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withcapacity-iresourcebuilder-kubernetespersistentvolumeresource-string) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Sets the requested storage capacity on the PVC's `spec.resources.requests.storage` field.
- [WithCapacity(IResourceBuilder<KubernetesPersistentVolumeResource>, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withcapacity-iresourcebuilder-kubernetespersistentvolumeresource-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Sets the requested storage capacity using a parameter resolved at deploy time.
- [WithPersistentVolume(IResourceBuilder<T>, IResourceBuilder<KubernetesPersistentVolumeResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withpersistentvolume-iresourcebuilder-t-iresourcebuilder-kubernetespersistentvolumeresource) : `IResourceBuilder<T>` `extension` `ats export` -- Binds a workload to a Kubernetes [KubernetesPersistentVolumeResource](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeresource.md) using name matching. The workload must already declare a volume with a matching `source` name (typically via `WithVolume("name", "/path")` or an integration helper such as Postgres' `WithDataVolume()`). The publisher rewrites that volume's pod-spec entry to reference the generated PVC and promotes the workload to a `StatefulSet`.
- [WithPersistentVolume(IResourceBuilder<T>, IResourceBuilder<KubernetesPersistentVolumeResource>, string, bool)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withpersistentvolume-iresourcebuilder-t-iresourcebuilder-kubernetespersistentvolumeresource-string-bool) : `IResourceBuilder<T>` `extension` `ats export` -- Binds a workload to a Kubernetes [KubernetesPersistentVolumeResource](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeresource.md) and mounts it at the specified path inside the workload's container. Unlike the name-match overload this one creates the underlying mount itself, so it works for workloads that don't already declare a named volume -- including `ApplicationModel.ProjectResource`.
- [WithStorageClass(IResourceBuilder<KubernetesPersistentVolumeResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withstorageclass-iresourcebuilder-kubernetespersistentvolumeresource-string) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Sets the Kubernetes storage class name on the PVC's `spec.storageClassName`. When unset, the cluster's default storage class is used.
- [WithStorageClass(IResourceBuilder<KubernetesPersistentVolumeResource>, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withstorageclass-iresourcebuilder-kubernetespersistentvolumeresource-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Sets the Kubernetes storage class name using a parameter resolved at deploy time.
- [WithVolumeAnnotation(IResourceBuilder<KubernetesPersistentVolumeResource>, string, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withvolumeannotation-iresourcebuilder-kubernetespersistentvolumeresource-string-string) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Adds a Kubernetes metadata annotation to the generated PVC. These flush to `metadata.annotations` on the rendered Kubernetes resource -- not Aspire `ApplicationModel.IResourceAnnotation` instances. Common uses: CSI driver hints, dynamic provisioner parameters, external-secrets selectors, or backup tooling tags.
- [WithVolumeAnnotation(IResourceBuilder<KubernetesPersistentVolumeResource>, string, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetespersistentvolumeextensions/methods.md#withvolumeannotation-iresourcebuilder-kubernetespersistentvolumeresource-string-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesPersistentVolumeResource>` `extension` `ats export` -- Adds a Kubernetes metadata annotation with a parameter value resolved at deploy time.
