homelab/kubernetes: cloudnative-pg how to copy existing db
- add documentation regarding how to copy existing DB using cloudnative-pg
This commit is contained in:
@ -512,7 +512,7 @@ kubectl get secret wildcard-cert-secret --namespace=cert-manager -o yaml \
|
||||
# The configMap contains the app.ini file values for gitea
|
||||
envsubst < gitea/configMap.yaml | kubectl apply -n gitea -f -
|
||||
|
||||
helm install gitea gitea-charts/gitea -f gitea/values.yaml \
|
||||
helm upgrade --install gitea gitea-charts/gitea -f gitea/values.yaml \
|
||||
--namespace gitea \
|
||||
--atomic \
|
||||
--set ingress.hosts[0].host=$GITEA_HOST \
|
||||
@ -706,10 +706,21 @@ envsubst < cloud-native-pg/backup-recovery.yaml | kubectl apply -n immich -f -
|
||||
## Create a new PostgreSQL cluster from existing Database
|
||||
|
||||
To create a new PostgreSQL cluster from an existing database, you can use the
|
||||
`create-cluster.yaml` template. This template allows you to create a new
|
||||
`create-cluster-main.yaml` as template. This template allows you to create a new
|
||||
PostgreSQL cluster from an existing database by specifying the necessary
|
||||
configurations and parameters in the YAML file.
|
||||
|
||||
This below example shows how I created a new PostgreSQL cluster from my existing
|
||||
main postgres database. The new cluster is created in the `postgres` namespace.
|
||||
The existing postgres database will be deprecated and removed in the future.
|
||||
|
||||
```bash
|
||||
source .env
|
||||
envsubst < cloud-native-pg/secrets.yaml | kubectl apply -n postgres -f -
|
||||
envsubst < cloud-native-pg/create-cluster-main.yaml | kubectl apply -n postgres -f -
|
||||
kubectl apply -f cloud-native-pg/pg-main-backup.yaml -n postgres
|
||||
```
|
||||
|
||||
# Immich Self-hosted Photo and Video Backup Solution
|
||||
|
||||
Immich is a self-hosted photo and video backup solution that is deployed in
|
||||
|
||||
49
kubernetes/cloud-native-pg/create-cluster-main.yaml
Normal file
49
kubernetes/cloud-native-pg/create-cluster-main.yaml
Normal file
@ -0,0 +1,49 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: master-postgres
|
||||
spec:
|
||||
instances: 1
|
||||
bootstrap:
|
||||
initdb:
|
||||
import:
|
||||
type: monolith
|
||||
databases:
|
||||
- giteadb
|
||||
- reservemaster
|
||||
roles:
|
||||
- gitea
|
||||
- postgres
|
||||
- taqi
|
||||
source:
|
||||
externalCluster: pg-main
|
||||
storage:
|
||||
size: 5Gi
|
||||
storageClass: longhorn-2x
|
||||
externalClusters:
|
||||
- name: pg-main
|
||||
connectionParameters:
|
||||
host: 192.168.1.142
|
||||
user: postgres
|
||||
dbname: postgres
|
||||
password:
|
||||
name: my-postgres-postgresql
|
||||
key: postgres-password
|
||||
# Backup properties for MinIO
|
||||
backup:
|
||||
barmanObjectStore:
|
||||
destinationPath: s3://pgmain
|
||||
endpointURL: ${MINIO_ENDPOINT_URL}
|
||||
s3Credentials:
|
||||
accessKeyId:
|
||||
name: minio-creds
|
||||
key: ACCESS_KEY_ID
|
||||
secretAccessKey:
|
||||
name: minio-creds
|
||||
key: ACCESS_SECRET_KEY
|
||||
wal:
|
||||
compression: gzip
|
||||
data:
|
||||
compression: gzip
|
||||
retentionPolicy: "15d"
|
||||
|
||||
10
kubernetes/cloud-native-pg/pg-main-backup.yaml
Normal file
10
kubernetes/cloud-native-pg/pg-main-backup.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: ScheduledBackup
|
||||
metadata:
|
||||
name: pg-main-backup
|
||||
spec:
|
||||
immediate: true
|
||||
schedule: "0 0 0 * * *" # At midnight every day
|
||||
backupOwnerReference: self
|
||||
cluster:
|
||||
name: master-postgres
|
||||
12
kubernetes/cloud-native-pg/pgmain-svc.yaml
Normal file
12
kubernetes/cloud-native-pg/pgmain-svc.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: pgmain-svc
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- port: 5432
|
||||
targetPort: 5432
|
||||
selector:
|
||||
cnpg.io/cluster: master-postgres
|
||||
|
||||
Reference in New Issue
Block a user