# Gitea Gitea provides a helm chart [here](https://gitea.com/gitea/helm-chart/). We're not going to modify much, but we are going to solidify some of the default values in case they decide to change things. This is the first chart (besides ingress-nginx) where we need to pay attention to the MetalLB annotation. This has been set in the values.yaml file. ## Staging There is a `gitea-staging.yaml` file with staging values. This should be installed in the `gitea-staging` namespace. Follow the instructions below, but replace the `gitea` namespace with `gitea-staging`. Staging is useful for testing major release upgrades, especially since Gitea tends to change how `values.yaml` is structured. ## Install First we need to create the gitea admin secret ```bash kubectl create namespace gitea kubectl create secret generic gitea-admin-secret \ -n gitea \ --from-literal=username='gitea-admin' \ --from-literal=password="$(pwgen -c -s 64 | head -n 1)" \ --from-literal=email='' ``` ```bash helm repo add gitea-charts https://dl.gitea.io/charts/ helm repo update helm upgrade --install \ gitea \ gitea-charts/gitea \ --values kubernetes/graduated/gitea/gitea-values.yaml \ --namespace gitea \ --create-namespace ``` ## Backup and Restore If you need to backup your database you can run: ```bash # Backup kubectl exec -it -n gitea gitea-postgresql-0 -- \ pg_dump \ --no-owner \ --dbname=postgresql://gitea:gitea@localhost:5432 > gitea_backup.db # Take gitea down to zero pods kubectl scale statefulset gitea --replicas 0 # Drop the existing database kubectl exec -it -n gitea gitea-postgresql-0 -- psql -U gitea \c postgres; drop database gitea; CREATE DATABASE gitea WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8'; exit # restore from backup kubectl exec -it -n gitea gitea-postgresql-0 -- \ psql \ postgresql://gitea:gitea@localhost:5432 gitea < gitea_backup.db # Restore gitea to 1 pod kubectl scale statefulset gitea --replicas 1 ```