From 4dfa5ab8714bf276f2952ca70429b80d971b5acd Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Thu, 10 Oct 2024 21:18:36 +0200 Subject: [PATCH] docs: update Kubernetes deployments --- README.md | 2 ++ docs/how-tos/backup-to-s3.md | 50 -------------------------- docs/how-tos/backup-to-ssh.md | 52 --------------------------- docs/how-tos/deploy-on-kubernetes.md | 53 +++++++++++++++++++++++++++- docs/how-tos/migrate.md | 51 -------------------------- docs/how-tos/restore-from-s3.md | 48 +------------------------ docs/how-tos/restore-from-ssh.md | 44 ----------------------- docs/index.md | 1 + 8 files changed, 56 insertions(+), 245 deletions(-) diff --git a/README.md b/README.md index d27a294..c7f436f 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ The [jkaninda/pg-bkup](https://hub.docker.com/r/jkaninda/pg-bkup) Docker image c It handles __recurring__ backups of postgres database on Docker and can be deployed as __Job or CronJob on Kubernetes__ using local, AWS S3 or SSH compatible storage. It also supports __encrypting__ your backups using GPG. +Telegram and Email notifications on successful and failed backups. + [![Build](https://github.com/jkaninda/pg-bkup/actions/workflows/release.yml/badge.svg)](https://github.com/jkaninda/pg-bkup/actions/workflows/release.yml) [![Go Report](https://goreportcard.com/badge/github.com/jkaninda/mysql-bkup)](https://goreportcard.com/report/github.com/jkaninda/pg-bkup) diff --git a/docs/how-tos/backup-to-s3.md b/docs/how-tos/backup-to-s3.md index 5d09b48..f922495 100644 --- a/docs/how-tos/backup-to-s3.md +++ b/docs/how-tos/backup-to-s3.md @@ -82,53 +82,3 @@ networks: web: ``` -## Deploy on Kubernetes - -For Kubernetes, you don't need to run it in scheduled mode. You can deploy it as CronJob. - -### Simple Kubernetes backup CronJob: - -```yaml -apiVersion: batch/v1 -kind: CronJob -metadata: - name: bkup-job -spec: - schedule: "0 1 * * *" - jobTemplate: - spec: - template: - spec: - containers: - - name: pg-bkup - image: jkaninda/pg-bkup - command: - - /bin/sh - - -c - - backup -s s3 --path /custom_path - env: - - name: DB_PORT - value: "5432" - - name: DB_HOST - value: "" - - name: DB_NAME - value: "" - - name: DB_USERNAME - value: "" - # Please use secret! - - name: DB_PASSWORD - value: "" - - name: AWS_S3_ENDPOINT - value: "https://s3.amazonaws.com" - - name: AWS_S3_BUCKET_NAME - value: "xxx" - - name: AWS_REGION - value: "us-west-2" - - name: AWS_ACCESS_KEY - value: "xxxx" - - name: AWS_SECRET_KEY - value: "xxxx" - - name: AWS_DISABLE_SSL - value: "false" - restartPolicy: OnFailure -``` \ No newline at end of file diff --git a/docs/how-tos/backup-to-ssh.md b/docs/how-tos/backup-to-ssh.md index 9fa287c..a373b21 100644 --- a/docs/how-tos/backup-to-ssh.md +++ b/docs/how-tos/backup-to-ssh.md @@ -86,55 +86,3 @@ services: networks: web: ``` - -## Deploy on Kubernetes - -For Kubernetes, you don't need to run it in scheduled mode. -You can deploy it as CronJob. - -Simple Kubernetes CronJob usage: - -```yaml -apiVersion: batch/v1 -kind: CronJob -metadata: - name: bkup-job -spec: - schedule: "0 1 * * *" - jobTemplate: - spec: - template: - spec: - containers: - - name: pg-bkup - image: jkaninda/pg-bkup - command: - - /bin/sh - - -c - - backup -s ssh - env: - - name: DB_PORT - value: "5432" - - name: DB_HOST - value: "" - - name: DB_NAME - value: "" - - name: DB_USERNAME - value: "" - # Please use secret! - - name: DB_PASSWORD - value: "" - - name: SSH_HOST - value: "" - - name: SSH_PORT - value: "22" - - name: SSH_USER - value: "xxx" - - name: REMOTE_PATH - value: "/home/jkaninda/backups" - - name: AWS_ACCESS_KEY - value: "xxxx" - - name: SSH_IDENTIFY_FILE - value: "/home/jkaninda/backups" - restartPolicy: OnFailure -``` \ No newline at end of file diff --git a/docs/how-tos/deploy-on-kubernetes.md b/docs/how-tos/deploy-on-kubernetes.md index 5566d4e..8f5e46c 100644 --- a/docs/how-tos/deploy-on-kubernetes.md +++ b/docs/how-tos/deploy-on-kubernetes.md @@ -230,7 +230,6 @@ spec: This image also supports Kubernetes security context, you can run it in Rootless environment. It has been tested on Openshift, it works well. -Deployment on Openshift is supported, you need to remove `securityContext` section on your yaml file. ```yaml apiVersion: batch/v1 @@ -289,3 +288,55 @@ spec: # value: "xxx" restartPolicy: OnFailure ``` + +## Migrate database + +```yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: migrate-db +spec: + ttlSecondsAfterFinished: 100 + template: + spec: + containers: + - name: pg-bkup + # In production, it is advised to lock your image tag to a proper + # release version instead of using `latest`. + # Check https://github.com/jkaninda/pg-bkup/releases + # for a list of available releases. + image: jkaninda/pg-bkup + command: + - /bin/sh + - -c + - migrate + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + ## Source Database + - name: DB_HOST + value: "postgres" + - name: DB_PORT + value: "5432" + - name: DB_NAME + value: "dbname" + - name: DB_USERNAME + value: "username" + - name: DB_PASSWORD + value: "password" + ## Target Database + - name: TARGET_DB_HOST + value: "target-postgres" + - name: TARGET_DB_PORT + value: "5432" + - name: TARGET_DB_NAME + value: "dbname" + - name: TARGET_DB_USERNAME + value: "username" + - name: TARGET_DB_PASSWORD + value: "password" + restartPolicy: Never +``` diff --git a/docs/how-tos/migrate.md b/docs/how-tos/migrate.md index b59925c..336839b 100644 --- a/docs/how-tos/migrate.md +++ b/docs/how-tos/migrate.md @@ -78,54 +78,3 @@ TARGET_DB_PASSWORD=password jkaninda/pg-bkup migrate ``` -## Kubernetes - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - name: migrate-db -spec: - ttlSecondsAfterFinished: 100 - template: - spec: - containers: - - name: pg-bkup - # In production, it is advised to lock your image tag to a proper - # release version instead of using `latest`. - # Check https://github.com/jkaninda/pg-bkup/releases - # for a list of available releases. - image: jkaninda/pg-bkup - command: - - /bin/sh - - -c - - migrate - resources: - limits: - memory: "128Mi" - cpu: "500m" - env: - ## Source Database - - name: DB_HOST - value: "postgres" - - name: DB_PORT - value: "5432" - - name: DB_NAME - value: "dbname" - - name: DB_USERNAME - value: "username" - - name: DB_PASSWORD - value: "password" - ## Target Database - - name: TARGET_DB_HOST - value: "target-postgres" - - name: TARGET_DB_PORT - value: "5432" - - name: TARGET_DB_NAME - value: "dbname" - - name: TARGET_DB_USERNAME - value: "username" - - name: TARGET_DB_PASSWORD - value: "password" - restartPolicy: Never -``` \ No newline at end of file diff --git a/docs/how-tos/restore-from-s3.md b/docs/how-tos/restore-from-s3.md index 0f4a2e2..48de013 100644 --- a/docs/how-tos/restore-from-s3.md +++ b/docs/how-tos/restore-from-s3.md @@ -45,50 +45,4 @@ services: - web networks: web: -``` -## Restore on Kubernetes - -Simple Kubernetes restore Job: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - name: restore-db -spec: - template: - spec: - containers: - - name: pg-bkup - image: jkaninda/pg-bkup - command: - - /bin/sh - - -c - - restore -s s3 --path /custom_path -f store_20231219_022941.sql.gz - env: - - name: DB_PORT - value: "5432" - - name: DB_HOST - value: "" - - name: DB_NAME - value: "" - - name: DB_USERNAME - value: "" - # Please use secret! - - name: DB_PASSWORD - value: "" - - name: AWS_S3_ENDPOINT - value: "https://s3.amazonaws.com" - - name: AWS_S3_BUCKET_NAME - value: "xxx" - - name: AWS_REGION - value: "us-west-2" - - name: AWS_ACCESS_KEY - value: "xxxx" - - name: AWS_SECRET_KEY - value: "xxxx" - - name: AWS_DISABLE_SSL - value: "false" - restartPolicy: Never - backoffLimit: 4 -``` +``` \ No newline at end of file diff --git a/docs/how-tos/restore-from-ssh.md b/docs/how-tos/restore-from-ssh.md index 6aaffeb..142cbb9 100644 --- a/docs/how-tos/restore-from-ssh.md +++ b/docs/how-tos/restore-from-ssh.md @@ -44,48 +44,4 @@ services: - web networks: web: -``` -## Restore on Kubernetes - -Simple Kubernetes restore Job: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - name: restore-db -spec: - template: - spec: - containers: - - name: pg-bkup - image: jkaninda/pg-bkup - command: - - /bin/sh - - -c - - restore -s ssh -f store_20231219_022941.sql.gz - env: - - name: DB_PORT - value: "5432" - - name: DB_HOST - value: "" - - name: DB_NAME - value: "" - - name: DB_USERNAME - value: "" - # Please use secret! - - name: DB_PASSWORD - value: "" - - name: SSH_HOST_NAME - value: "" - - name: SSH_PORT - value: "22" - - name: SSH_USER - value: "xxx" - - name: SSH_REMOTE_PATH - value: "/home/jkaninda/backups" - - name: SSH_IDENTIFY_FILE - value: "/tmp/id_ed25519" - restartPolicy: Never - backoffLimit: 4 ``` \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 6c01d6a..7621f08 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,6 +8,7 @@ nav_order: 1 {:.no_toc} PostreSQL Backup is a Docker container image that can be used to backup, restore and migrate Postgres database. It supports local storage, AWS S3 or any S3 Alternatives for Object Storage, ftp and SSH compatible storage. It also supports database __encryption__ using GPG. +Telegram and Email notifications on successful and failed backups.