diff --git a/clusters/cl01tl/manifests/rybbit/Cluster-rybbit-postgresql-18-cluster.yaml b/clusters/cl01tl/manifests/rybbit/Cluster-rybbit-postgresql-18-cluster.yaml index 135edc433..e445eec01 100644 --- a/clusters/cl01tl/manifests/rybbit/Cluster-rybbit-postgresql-18-cluster.yaml +++ b/clusters/cl01tl/manifests/rybbit/Cluster-rybbit-postgresql-18-cluster.yaml @@ -52,6 +52,15 @@ spec: barmanObjectName: "rybbit-postgresql-18-backup-garage-local" serverName: "rybbit-postgresql-18-backup-1" bootstrap: - initdb: + recovery: database: app - owner: app + source: rybbit-postgresql-18-backup-1 + externalClusters: + - name: rybbit-postgresql-18-backup-1 + plugin: + name: barman-cloud.cloudnative-pg.io + enabled: true + isWALArchiver: false + parameters: + barmanObjectName: "rybbit-postgresql-18-recovery" + serverName: rybbit-postgresql-18-backup-1 diff --git a/clusters/cl01tl/manifests/rybbit/Deployment-rybbit-client.yaml b/clusters/cl01tl/manifests/rybbit/Deployment-rybbit-client.yaml index 18cc8d792..15fcf636e 100644 --- a/clusters/cl01tl/manifests/rybbit/Deployment-rybbit-client.yaml +++ b/clusters/cl01tl/manifests/rybbit/Deployment-rybbit-client.yaml @@ -43,7 +43,7 @@ spec: value: https://rybbit.alexlebens.dev - name: NEXT_PUBLIC_DISABLE_SIGNUP value: "false" - image: ghcr.io/rybbit-io/rybbit-client:v2.4.0 + image: harbor.alexlebens.net/images/rybbit-client:v2.4.0 imagePullPolicy: IfNotPresent name: main resources: diff --git a/clusters/cl01tl/manifests/rybbit/ExternalSecret-data-backup-secret-external.yaml b/clusters/cl01tl/manifests/rybbit/ExternalSecret-clickhouse-data-backup-secret-external.yaml similarity index 86% rename from clusters/cl01tl/manifests/rybbit/ExternalSecret-data-backup-secret-external.yaml rename to clusters/cl01tl/manifests/rybbit/ExternalSecret-clickhouse-data-backup-secret-external.yaml index 2dc04b51f..b90fc7aef 100644 --- a/clusters/cl01tl/manifests/rybbit/ExternalSecret-data-backup-secret-external.yaml +++ b/clusters/cl01tl/manifests/rybbit/ExternalSecret-clickhouse-data-backup-secret-external.yaml @@ -1,15 +1,15 @@ apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: - name: data-backup-secret-external + name: clickhouse-data-backup-secret-external namespace: rybbit labels: - helm.sh/chart: volsync-target-config-0.7.0 + helm.sh/chart: volsync-target-clickhouse-data-0.7.0 app.kubernetes.io/instance: rybbit app.kubernetes.io/part-of: rybbit app.kubernetes.io/version: "0.7.0" app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: data-backup-secret-external + app.kubernetes.io/name: clickhouse-data-backup-secret-external spec: secretStoreRef: kind: ClusterSecretStore @@ -19,7 +19,7 @@ spec: mergePolicy: Merge engineVersion: v2 data: - RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/rybbit/data" + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/rybbit/clickhouse-data" data: - secretKey: BUCKET_ENDPOINT remoteRef: diff --git a/clusters/cl01tl/manifests/rybbit/ExternalSecret-clickhouse-data-backup-secret-local.yaml b/clusters/cl01tl/manifests/rybbit/ExternalSecret-clickhouse-data-backup-secret-local.yaml new file mode 100644 index 000000000..590fb0bfb --- /dev/null +++ b/clusters/cl01tl/manifests/rybbit/ExternalSecret-clickhouse-data-backup-secret-local.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: clickhouse-data-backup-secret-local + namespace: rybbit + labels: + helm.sh/chart: volsync-target-clickhouse-data-0.7.0 + app.kubernetes.io/instance: rybbit + app.kubernetes.io/part-of: rybbit + app.kubernetes.io/version: "0.7.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: clickhouse-data-backup-secret-local +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/rybbit/clickhouse-data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_SECRET_KEY diff --git a/clusters/cl01tl/manifests/rybbit/ReplicationSource-clickhouse-data-backup-source-external.yaml b/clusters/cl01tl/manifests/rybbit/ReplicationSource-clickhouse-data-backup-source-external.yaml new file mode 100644 index 000000000..5b9f36d4a --- /dev/null +++ b/clusters/cl01tl/manifests/rybbit/ReplicationSource-clickhouse-data-backup-source-external.yaml @@ -0,0 +1,29 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: clickhouse-data-backup-source-external + namespace: rybbit + labels: + helm.sh/chart: volsync-target-clickhouse-data-0.7.0 + app.kubernetes.io/instance: rybbit + app.kubernetes.io/part-of: rybbit + app.kubernetes.io/version: "0.7.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: clickhouse-data-backup +spec: + sourcePVC: clickhouse-data + trigger: + schedule: 40 12 * * * + restic: + pruneIntervalDays: 7 + repository: clickhouse-data-backup-secret-external + retain: + daily: 7 + hourly: 0 + monthly: 3 + weekly: 4 + yearly: 1 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/rybbit/ReplicationSource-data-backup-source-external.yaml b/clusters/cl01tl/manifests/rybbit/ReplicationSource-clickhouse-data-backup-source-local.yaml similarity index 67% rename from clusters/cl01tl/manifests/rybbit/ReplicationSource-data-backup-source-external.yaml rename to clusters/cl01tl/manifests/rybbit/ReplicationSource-clickhouse-data-backup-source-local.yaml index 12e29fe57..6b479ff43 100644 --- a/clusters/cl01tl/manifests/rybbit/ReplicationSource-data-backup-source-external.yaml +++ b/clusters/cl01tl/manifests/rybbit/ReplicationSource-clickhouse-data-backup-source-local.yaml @@ -1,22 +1,22 @@ apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: - name: data-backup-source-external + name: clickhouse-data-backup-source-local namespace: rybbit labels: - helm.sh/chart: volsync-target-config-0.7.0 + helm.sh/chart: volsync-target-clickhouse-data-0.7.0 app.kubernetes.io/instance: rybbit app.kubernetes.io/part-of: rybbit app.kubernetes.io/version: "0.7.0" app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: data-backup + app.kubernetes.io/name: clickhouse-data-backup spec: - sourcePVC: data + sourcePVC: clickhouse-data trigger: - schedule: 0 9 * * * + schedule: 40 11 * * * restic: pruneIntervalDays: 7 - repository: data-backup-secret-external + repository: clickhouse-data-backup-secret-local retain: daily: 7 hourly: 0 diff --git a/clusters/cl01tl/manifests/rybbit/ScheduledBackup-rybbit-postgresql-18-scheduled-backup-live-backup.yaml b/clusters/cl01tl/manifests/rybbit/ScheduledBackup-rybbit-postgresql-18-scheduled-backup-live-backup.yaml index 366703b08..be872886c 100644 --- a/clusters/cl01tl/manifests/rybbit/ScheduledBackup-rybbit-postgresql-18-scheduled-backup-live-backup.yaml +++ b/clusters/cl01tl/manifests/rybbit/ScheduledBackup-rybbit-postgresql-18-scheduled-backup-live-backup.yaml @@ -13,7 +13,7 @@ metadata: app.kubernetes.io/name: "rybbit-postgresql-18-scheduled-backup-live-backup" spec: immediate: true - suspend: true + suspend: false schedule: "0 0 0 * * *" backupOwnerReference: self cluster: diff --git a/clusters/cl01tl/manifests/yubal/ExternalSecret-yubal-backup-secret-external.yaml b/clusters/cl01tl/manifests/yubal/ExternalSecret-yubal-backup-secret-external.yaml new file mode 100644 index 000000000..2dd9d4e23 --- /dev/null +++ b/clusters/cl01tl/manifests/yubal/ExternalSecret-yubal-backup-secret-external.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: yubal-backup-secret-external + namespace: yubal + labels: + helm.sh/chart: volsync-target-config-0.7.0 + app.kubernetes.io/instance: yubal + app.kubernetes.io/part-of: yubal + app.kubernetes.io/version: "0.7.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: yubal-backup-secret-external +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/yubal/yubal" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/digital-ocean + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/digital-ocean + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_DEFAULT_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_SECRET_ACCESS_KEY diff --git a/clusters/cl01tl/manifests/yubal/ExternalSecret-yubal-backup-secret-local.yaml b/clusters/cl01tl/manifests/yubal/ExternalSecret-yubal-backup-secret-local.yaml new file mode 100644 index 000000000..e17ddf9dd --- /dev/null +++ b/clusters/cl01tl/manifests/yubal/ExternalSecret-yubal-backup-secret-local.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: yubal-backup-secret-local + namespace: yubal + labels: + helm.sh/chart: volsync-target-config-0.7.0 + app.kubernetes.io/instance: yubal + app.kubernetes.io/part-of: yubal + app.kubernetes.io/version: "0.7.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: yubal-backup-secret-local +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/yubal/yubal" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_SECRET_KEY diff --git a/clusters/cl01tl/manifests/yubal/ReplicationSource-yubal-backup-source-external.yaml b/clusters/cl01tl/manifests/yubal/ReplicationSource-yubal-backup-source-external.yaml new file mode 100644 index 000000000..18edaeb05 --- /dev/null +++ b/clusters/cl01tl/manifests/yubal/ReplicationSource-yubal-backup-source-external.yaml @@ -0,0 +1,29 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: yubal-backup-source-external + namespace: yubal + labels: + helm.sh/chart: volsync-target-config-0.7.0 + app.kubernetes.io/instance: yubal + app.kubernetes.io/part-of: yubal + app.kubernetes.io/version: "0.7.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: yubal-backup +spec: + sourcePVC: yubal + trigger: + schedule: 42 12 * * * + restic: + pruneIntervalDays: 7 + repository: yubal-backup-secret-external + retain: + daily: 7 + hourly: 0 + monthly: 3 + weekly: 4 + yearly: 1 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/yubal/ReplicationSource-yubal-backup-source-local.yaml b/clusters/cl01tl/manifests/yubal/ReplicationSource-yubal-backup-source-local.yaml new file mode 100644 index 000000000..3a610ca81 --- /dev/null +++ b/clusters/cl01tl/manifests/yubal/ReplicationSource-yubal-backup-source-local.yaml @@ -0,0 +1,29 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: yubal-backup-source-local + namespace: yubal + labels: + helm.sh/chart: volsync-target-config-0.7.0 + app.kubernetes.io/instance: yubal + app.kubernetes.io/part-of: yubal + app.kubernetes.io/version: "0.7.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: yubal-backup +spec: + sourcePVC: yubal + trigger: + schedule: 42 11 * * * + restic: + pruneIntervalDays: 7 + repository: yubal-backup-secret-local + retain: + daily: 7 + hourly: 0 + monthly: 3 + weekly: 4 + yearly: 1 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi