diff --git a/README.md b/README.md index cbaf821..21e6097 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,102 @@ -# git.limbosolutions.com - -Welcome to public repository of my [Git Server](https://git.limbosolutions.com) - -Using [gitea](https://git.limbosolutions.com/kb/gitea) as git server. - -- [gitea - helm chart](#gitea---helm-chart) - - [add chart](#add-chart) - - [update chart](#update-chart) - - [Upgrade / Install](#upgrade--install) - -## gitea - helm chart - -### add chart - -``` bash -helm repo add gitea-charts https://dl.gitea.com/charts/ -``` - -### update chart - -``` bash -helm repo update -``` - -### Upgrade / Install - -``` bash -helm upgrade --install gitea gitea-charts/gitea \ ---values ./gitea/values.yaml \ ---values ./gitea/values.private.yaml \ ---namespace=git-limbosolutions-com -``` +# git.limbosolutions.com + +Welcome to public repository of my [Git Server](https://git.limbosolutions.com) + +Using [gitea](https://git.limbosolutions.com/kb/gitea) as git server. + +- [Setup](#setup) + - [kubernetes Namespace](#kubernetes-namespace) + - [Add Help Chart](#add-help-chart) + - [Update Helm charts](#update-helm-charts) + - [Upgrade / Install](#upgrade--install) +- [Backups](#backups) + - [kubernetes cron job - Proxmox Backup Server](#kubernetes-cron-job---proxmox-backup-server) + - [kubernetes cron job - Borg and Offsite sync](#kubernetes-cron-job---borg-and-offsite-sync) + - [borgbackup sidekick](#borgbackup-sidekick) + - [Create borgbackup-sidekick pod](#create-borgbackup-sidekick-pod) + - [Remove borgbackup-sidekick pod](#remove-borgbackup-sidekick-pod) + +## Setup + +### kubernetes Namespace + +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: git-limbosolutions-com + labels: + name: git-limbosolutions-com + +``` + +### Add Help Chart + +```bash +helm repo add gitea-charts https://dl.gitea.com/charts/ +``` + +### Update Helm charts + +```bash +helm repo update +``` + +### Upgrade / Install + +```bash +helm upgrade --install gitea gitea-charts/gitea \ +--values ./gitea/values.yaml \ +--values ./gitea/values.private.yaml \ +--namespace=git-limbosolutions-com +``` + +## Backups + +### kubernetes cron job - Proxmox Backup Server + +[kubernetes cron job](/backups/backup-cronjob.yaml) + +### kubernetes cron job - Borg and Offsite sync + +```bash +# deploy secrets +. ./backups/.env +# set variables in env file as export +export $(cut -d= -f1 ./backups/.env) +envsubst < ./backups/gitea-backup-secret.yaml | kubectl apply -f - + +``` + +[kubernetes cron job](/backups/borgbackup-offsite-cronjob.yaml) + +### borgbackup sidekick + +```bash +# list borg repo +POD_NAME=$(kubectl get pod -l app=borgbackup-sidekick -n git-limbosolutions-com -o jsonpath='{.items[0].metadata.name}') +kubectl exec -it ${POD_NAME} -- bash -c "\ +borg list ${BORG_REPO} \ +" +``` + +```bash +# get borg info +POD_NAME=$(kubectl get pod -l app=borgbackup-sidekick -n git-limbosolutions-com -o jsonpath='{.items[0].metadata.name}') +kubectl exec -it ${POD_NAME} -- bash -c "\ +borg info ${BORG_REPO}\ +" +``` + +#### Create borgbackup-sidekick pod + +```bash +kubectl apply -f ./backups/borgbackup-sidekick.yaml +``` + +#### Remove borgbackup-sidekick pod + +```bash +# delete the sidekick pod after use +kubectl delete pod -l app=borgbackup-sidekick +``` diff --git a/backup/README.md b/backup/README.md deleted file mode 100644 index 97ee6cd..0000000 --- a/backup/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# backups - -## borgbackup cockpit (companion scripts) - -Not in use anymore, the cron job already performs the following actions. Keeping it for now for notes purposes. - -### list current backups - -```bash -POD_NAME=$(kubectl get pod -l app=borgbackup-cockpit -o jsonpath='{.items[0].metadata.name}') -kubectl exec -it ${POD_NAME} -- borg list ${BORG_REPO} -``` - -### purge backups - -```bash -POD_NAME=$(kubectl get pod -l app=borgbackup-cockpit -o jsonpath='{.items[0].metadata.name}') -kubectl exec -it ${POD_NAME} -- bash -c "\ -borg prune -v --list --keep-daily=10 --keep-weekly=7 --keep-monthly=-1 ${BORG_REPO} --glob-archives='gitea-data*' && \ -borg prune -v --list --keep-daily=10 --keep-weekly=7 --keep-monthly=-1 ${BORG_REPO} --glob-archives='postgresql-export*'" -``` - -### clean up space - -```bash -POD_NAME=$(kubectl get pod -l app=borgbackup-cockpit -o jsonpath='{.items[0].metadata.name}') -kubectl exec -it ${POD_NAME} -- bash -c "\ -borg compact ${BORG_REPO} --verbose" -``` - -### Get info - -```bash -POD_NAME=$(kubectl get pod -l app=borgbackup-cockpit -o jsonpath='{.items[0].metadata.name}') -kubectl exec -it ${POD_NAME} -- bash -c "\ -borg info ${BORG_REPO} --json" -``` diff --git a/backup/backup-cronjob.yaml b/backups/backup-cronjob.yaml similarity index 100% rename from backup/backup-cronjob.yaml rename to backups/backup-cronjob.yaml diff --git a/backup/borgbackup-offsite-cronjob.yaml b/backups/borgbackup-offsite-cronjob.yaml similarity index 100% rename from backup/borgbackup-offsite-cronjob.yaml rename to backups/borgbackup-offsite-cronjob.yaml diff --git a/backups/borgbackup-sidekick.yaml b/backups/borgbackup-sidekick.yaml new file mode 100644 index 0000000..a9a0954 --- /dev/null +++ b/backups/borgbackup-sidekick.yaml @@ -0,0 +1,59 @@ +apiVersion: v1 +kind: Pod +metadata: + name: borgbackup-sidekick + namespace: git-limbosolutions-com + labels: + app: borgbackup-sidekick +spec: + containers: + - name: borgbackup-sidekick + image: git.limbosolutions.com/kb/borg-backup:latest + resources: + limits: + memory: "512Mi" + cpu: "500m" + requests: + memory: "256Mi" + cpu: "250m" + env: + - name: BORG_REPO + valueFrom: + secretKeyRef: + name: gitea-backup-secret + key: BORG_REPO + + - name: BORG_PASSPHRASE + valueFrom: + secretKeyRef: + name: gitea-backup-secret + key: BORG_PASSPHRASE + + - name: BORG_RSH + value: ssh -o StrictHostKeyChecking=no + + - name: BORG_KEY_FILE + value: /root/.borg/key + + command: ["sh", "-c"] + args: + - | + while true; do + sleep 1s + done + + volumeMounts: + + - name: gitea-backup-secret + mountPath: /root/.borg/key + subPath: BORG_KEY_FILE + + - name: gitea-backup-secret + mountPath: /root/.ssh/id_rsa + subPath: SSH_ID_RSA + volumes: + - name: gitea-backup-secret + secret: + secretName: gitea-backup-secret + defaultMode: 0600 + diff --git a/backup/gitea-backup-secret-deploy.sh b/backups/gitea-backup-secret-deploy.sh similarity index 100% rename from backup/gitea-backup-secret-deploy.sh rename to backups/gitea-backup-secret-deploy.sh diff --git a/backup/gitea-backup-secret.yaml b/backups/gitea-backup-secret.yaml similarity index 100% rename from backup/gitea-backup-secret.yaml rename to backups/gitea-backup-secret.yaml diff --git a/gitea/helm-up.sh b/gitea/helm-up.sh deleted file mode 100755 index 2e9eae7..0000000 --- a/gitea/helm-up.sh +++ /dev/null @@ -1,4 +0,0 @@ -helm upgrade --install gitea gitea-charts/gitea \ ---values ./values.yaml \ ---values ./values.private.yaml \ ---namespace=git-limbosolutions-com diff --git a/namespace.yaml b/namespace.yaml deleted file mode 100644 index 2493f59..0000000 --- a/namespace.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: git-limbosolutions-com - labels: - name: git-limbosolutions-com \ No newline at end of file