Kubectl: Download Postgres db-export gzipped from an on-the-fly Postgres k8s pod

Elvis Ciotti
Aug 2, 2023

--

Useful to download RDS Postgres db from a k8s namespace where pg_dump is not installed

POD_NAME=pgdump-temp-elvis
BACKUP_FILE="backup-file.sql"
BACKUP_FILE_GZ="backup-file.sql.gz"
K8S_NAMESPACE=my-k8s-namepsace

# create postgres pod
kubectl -n $K8S_NAMESPACE get "pods/${POD_NAME}" || ( kubectl -n $K8S_NAMESPACE run $POD_NAME --image=postgres:13-alpine --env="POSTGRES_USER=x" --env="POSTGRES_PASSWORD=x" --env="POSTGRES_DB=x" --image=postgres:13-alpine --restart=Never; sleep 10; )
# run pg_dump + gzip
kubectl -n $K8S_NAMESPACE exec "pods/${POD_NAME}" -- sh -c "PGPASSWORD=<pass> pg_dump -x -O -U <user> postgresql://<host>:5432/<db> | gzip > /tmp/db.sql.gz"
# download locally then extraxt
kubectl -n $K8S_NAMESPACE cp ${POD_NAME}:/tmp/db.sql.gz $BACKUP_FILE_GZ
gunzip $BACKUP_FILE_GZ

--

--

Elvis Ciotti
Elvis Ciotti

Written by Elvis Ciotti

Software Contractor — Java, Spring, k8s, AWS, Javascript @ London - hire me at https://elvisciotti.github.io/

No responses yet