An open API service indexing awesome lists of open source software.

https://github.com/mgoltzsche/pvc-remover

Kubernetes controllers to remove particular PVCs on Pod completion
https://github.com/mgoltzsche/pvc-remover

Last synced: about 1 year ago
JSON representation

Kubernetes controllers to remove particular PVCs on Pod completion

Awesome Lists containing this project

README

          

# pvc-remover

Kubernetes controllers to remove a `PersistentVolumeClaim` (PVC) of a particular
`StorageClass` when an associated `Pod` is completed.

This project's primary purpose is the early deletion of volumes provisioned by
[cache-provisioner](https://github.com/mgoltzsche/cache-provisioner) so that the
volume contents can be committed and quickly reused for the next (build) job.

## How it works

The *Pod controller* annotates and deletes matching PVCs (`storageClassName`, `accessMode=ReadWriteOnce`)
that are associated with a matching, completed Pod (`annotations`?, `labels`?, `status.phase=Succeeded`, `restartPolicy=Never`).
The *PVC controller* removes the finalizer `kubernetes.io/pvc-protection` from PVCs
that have a deletion timestamp and the annotation `pvc-remover.mgoltzsche.github.com/no-pvc-protection`
allowing unsafe deletion while still referenced by Pods.

## Build

```
make
```

## Test

Run controller tests:
```
make test
```

Test interactively against a real cluster:
```
make manager
./bin/manager --storage-class=
```