# KubernetesPersistentVolumeResource

- Module: [Aspire.Hosting.Kubernetes](/reference/api/typescript/aspire.hosting.kubernetes.md)
- Version: `13.5.1-preview.1.26420.4`
- Kind: `handle`
- Source: [GitHub](https://github.com/microsoft/aspire/tree/69db530a4816698cf1d5fa4557933e0ac4f127c6)

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 `WithPersistentVolume``1`.

## Definition

```typescript
interface KubernetesPersistentVolumeResource
  extends IResource,
    IResourceWithParent,
    KubernetesEnvironmentResource]] {
  withAccessMode(accessMode: PersistentVolumeAccessMode): KubernetesPersistentVolumeResource;
  withCapacity(capacity: string): KubernetesPersistentVolumeResource;
  withCapacityParam(capacity: ParameterResource): KubernetesPersistentVolumeResource;
  withStorageClass(storageClassName: string): KubernetesPersistentVolumeResource;
  withStorageClassParam(storageClassName: ParameterResource): KubernetesPersistentVolumeResource;
  withVolumeAnnotation(
      key: string,
      value: string): KubernetesPersistentVolumeResource;
  withVolumeAnnotationParam(
      key: string,
      value: ParameterResource): KubernetesPersistentVolumeResource;
}
```

## Methods

- [withAccessMode](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withaccessmode.md) -- `method` -- Adds an access mode to a persistent volume
    ```typescript
  withAccessMode(accessMode: PersistentVolumeAccessMode): KubernetesPersistentVolumeResource
  ```
- [withCapacity](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withcapacity.md) -- `method` -- Sets the requested storage capacity for a persistent volume
    ```typescript
  withCapacity(capacity: string): KubernetesPersistentVolumeResource
  ```
- [withCapacityParam](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withcapacityparam.md) -- `method` -- Sets a parameterized storage capacity for a persistent volume
    ```typescript
  withCapacityParam(capacity: ParameterResource): KubernetesPersistentVolumeResource
  ```
- [withStorageClass](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withstorageclass.md) -- `method` -- Sets the storage class for a persistent volume
    ```typescript
  withStorageClass(storageClassName: string): KubernetesPersistentVolumeResource
  ```
- [withStorageClassParam](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withstorageclassparam.md) -- `method` -- Sets a parameterized storage class for a persistent volume
    ```typescript
  withStorageClassParam(storageClassName: ParameterResource): KubernetesPersistentVolumeResource
  ```
- [withVolumeAnnotation](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withvolumeannotation.md) -- `method` -- Adds a Kubernetes metadata annotation to a persistent volume
    ```typescript
  withVolumeAnnotation(key: string, value: string): KubernetesPersistentVolumeResource
  ```
- [withVolumeAnnotationParam](/reference/api/typescript/aspire.hosting.kubernetes/kubernetespersistentvolumeresource/withvolumeannotationparam.md) -- `method` -- Adds a parameterized Kubernetes metadata annotation to a persistent volume
    ```typescript
  withVolumeAnnotationParam(key: string, value: ParameterResource): KubernetesPersistentVolumeResource
  ```
