# Rebuilding the kluster

When rebuilding the kluster from scratch, the CNPG containers will be considered as new and will be set up according to their `initdb` config.

Since most of the clusters here are formally defined as a fresh clusters, the following will happen:
- in the relevant PVC the `pgdata` folder will be renamed to `pgdata-old`
- a fresh `pgdata` folder will be created
- a database with RBAC as defined in the `initdb` config will be created

This is problematic since the PVC content is the actual state of the database in the present setup. In order to get back to a functional state, some manual intervention is therefore required.

1. Bootstrap the kubernetes cluster
2. Wait for the CNPG containers to be up and running - they will be setup fresh at this point
3. follow the procedure from [https://cloudnative-pg.io/documentation/1.20/declarative_hibernation/](https://cloudnative-pg.io/documentation/1.20/declarative_hibernation/):
    - hibernate the postgresql cluster
    - wait for the pod to be shut down
    - copy the `pgdata-old` content to the `pgdata` folder
    - de-hibernate the postgresql cluster
4. The database should now be in a functional state



Also see https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Controlling-Resource-Modification/#preserving-changes-made-to-an-applications-annotations-and-labels