From ba6b9d2d8c281516fb037d1ab4a8b8a9fe2d6082 Mon Sep 17 00:00:00 2001 From: William P Date: Tue, 27 May 2025 14:20:12 -0400 Subject: [PATCH] cloudnativepg: create separate cluster for immich --- postgres/config/clusters/immich.yaml | 53 +++++++++++++++++++ .../{cluster.yaml => clusters/main.yaml} | 0 postgres/config/databases/immich_db.yaml | 12 ----- postgres/config/scheduled_backup.yaml | 12 ++++- 4 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 postgres/config/clusters/immich.yaml rename postgres/config/{cluster.yaml => clusters/main.yaml} (100%) delete mode 100644 postgres/config/databases/immich_db.yaml diff --git a/postgres/config/clusters/immich.yaml b/postgres/config/clusters/immich.yaml new file mode 100644 index 0000000..70ee846 --- /dev/null +++ b/postgres/config/clusters/immich.yaml @@ -0,0 +1,53 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: immich +spec: + # At the time of writing, immich is only compatible with pgvecto.rs <0.4. Latest postgres image with that version is 16.5. + imageName: ghcr.io/tensorchord/cloudnative-pgvecto.rs:16.5-v0.3.0@sha256:be3f025d79aa1b747817f478e07e71be43236e14d00d8a9eb3914146245035ba + # A bug was reported in v0.3.0, which does not allow a replicated setup: + # https://github.com/immich-app/immich-charts/issues/149#issuecomment-2559012759 + instances: 1 + + postgresql: + shared_preload_libraries: + - "vectors.so" + + # The "postgres" superuser is needed only for import and it can be deactivated after migration. + enableSuperuserAccess: true + # superuserSecret: immich-superuser + + managed: + roles: + - name: immich + superuser: true + login: true + passwordSecret: + name: immich-auth + + bootstrap: + initdb: + database: immich + owner: immich + # secret: + # name: immich-postgres-user + postInitSQL: + - CREATE EXTENSION IF NOT EXISTS "vectors"; + - CREATE EXTENSION IF NOT EXISTS "cube" CASCADE; + - CREATE EXTENSION IF NOT EXISTS "earthdistance" CASCADE; + + storage: + size: 8Gi + storageClass: rook-ceph-block + + backup: + barmanObjectStore: + destinationPath: "s3://weyma-talos-shared-pgsql-backup/" + endpointURL: http://10.105.15.20:9000 + s3Credentials: + accessKeyId: + key: s3AccessKey + name: s3-backup-creds + secretAccessKey: + key: s3SecretKey + name: s3-backup-creds \ No newline at end of file diff --git a/postgres/config/cluster.yaml b/postgres/config/clusters/main.yaml similarity index 100% rename from postgres/config/cluster.yaml rename to postgres/config/clusters/main.yaml diff --git a/postgres/config/databases/immich_db.yaml b/postgres/config/databases/immich_db.yaml deleted file mode 100644 index 2bf97af..0000000 --- a/postgres/config/databases/immich_db.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: postgresql.cnpg.io/v1 -kind: Database -metadata: - name: immich-db - namespace: cloudnativepg -spec: - cluster: - name: weyma-pgsql - databaseReclaimPolicy: retain - ensure: present - name: immich - owner: immich \ No newline at end of file diff --git a/postgres/config/scheduled_backup.yaml b/postgres/config/scheduled_backup.yaml index 0d3e411..7abbdd3 100644 --- a/postgres/config/scheduled_backup.yaml +++ b/postgres/config/scheduled_backup.yaml @@ -6,4 +6,14 @@ spec: schedule: "0 4 * * *" backupOwnerReference: self cluster: - name: weyma-pgsql \ No newline at end of file + name: weyma-pgsql +--- +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: immich-postgres-nightly +spec: + schedule: "0 4 * * *" + backupOwnerReference: self + cluster: + name: immich \ No newline at end of file