From a1ec3db8ab85aa015167468d70de1f81c08f485d Mon Sep 17 00:00:00 2001 From: Jan Larwig Date: Wed, 24 Jun 2026 17:16:12 +0200 Subject: [PATCH 01/28] fix: plugin-barman-cloud likeness and readiness probes (#776) Signed-off-by: Nolan Gilley Signed-off-by: Jan Larwig Signed-off-by: Itay Grudev Co-authored-by: Nolan Gilley Co-authored-by: Itay Grudev --- charts/plugin-barman-cloud/templates/deployment.yaml | 7 ++++++- .../simple-deployment/01-simple_deployment-assert.yaml | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/charts/plugin-barman-cloud/templates/deployment.yaml b/charts/plugin-barman-cloud/templates/deployment.yaml index 893fdc2fc8..630113b74d 100644 --- a/charts/plugin-barman-cloud/templates/deployment.yaml +++ b/charts/plugin-barman-cloud/templates/deployment.yaml @@ -78,7 +78,12 @@ spec: initialDelaySeconds: 10 periodSeconds: 10 tcpSocket: - port: 9090 + port: 8081 + livenessProbe: + initialDelaySeconds: 10 + periodSeconds: 10 + tcpSocket: + port: 8081 resources: {{- toYaml .Values.resources | nindent 10 }} securityContext: diff --git a/charts/plugin-barman-cloud/test/simple-deployment/01-simple_deployment-assert.yaml b/charts/plugin-barman-cloud/test/simple-deployment/01-simple_deployment-assert.yaml index 37e11d27bf..961ae76fad 100644 --- a/charts/plugin-barman-cloud/test/simple-deployment/01-simple_deployment-assert.yaml +++ b/charts/plugin-barman-cloud/test/simple-deployment/01-simple_deployment-assert.yaml @@ -23,7 +23,12 @@ spec: initialDelaySeconds: 10 periodSeconds: 10 tcpSocket: - port: 9090 + port: 8081 + livenessProbe: + initialDelaySeconds: 10 + periodSeconds: 10 + tcpSocket: + port: 8081 resources: limits: cpu: 100m From 33c83fc2fcf94ad461e7f6202ab9f4a5c6b46ab5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 14:25:05 +0300 Subject: [PATCH 02/28] chore(deps): update actions/setup-python action to v6.3.0 (#927) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index cfa18e45b6..1eecc97e9f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -38,7 +38,7 @@ jobs: with: version: v3.21.1 - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: python-version: 3.14 From cacd294e54dcb87461d315795dda4f735a4c7b54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 15:31:46 +0300 Subject: [PATCH 03/28] chore(deps): update azure/setup-helm action to v5.0.1 (#926) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Itay Grudev --- .github/actions/setup-kind/action.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/release-publish.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/setup-kind/action.yml b/.github/actions/setup-kind/action.yml index 709b28afd8..e81c2c2707 100644 --- a/.github/actions/setup-kind/action.yml +++ b/.github/actions/setup-kind/action.yml @@ -12,7 +12,7 @@ runs: steps: - id: helm name: Set up Helm - uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0 + uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1 with: version: v3.21.1 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1eecc97e9f..bc4d80869b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -34,7 +34,7 @@ jobs: fetch-depth: 0 - name: Set up Helm - uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0 + uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1 with: version: v3.21.1 diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 8ad8e878e0..6e72411ffe 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -34,7 +34,7 @@ jobs: echo "${{ secrets.PGP_KEY_PASSPHRASE }}" > /tmp/passphrase-file.txt - name: Set up Helm - uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0 + uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1 with: version: v3.21.1 From 7c902a33c83d89d6b8548ba5d047ee75fe3c5222 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Thu, 25 Jun 2026 23:40:53 +0300 Subject: [PATCH 04/28] fix: when is the main plugins section specified Signed-off-by: Itay Grudev --- charts/cluster/templates/cluster.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/charts/cluster/templates/cluster.yaml b/charts/cluster/templates/cluster.yaml index c2b0d98e88..dcc164b93b 100644 --- a/charts/cluster/templates/cluster.yaml +++ b/charts/cluster/templates/cluster.yaml @@ -153,16 +153,15 @@ spec: {{ include "cluster.externalClusters" . | nindent 2 -}} {{ include "cluster.backup" . | nindent 2 -}} - {{- $plugins := len .Values.cluster.plugins -}} - {{- if and (gt $plugins 0) (or (gt $plugins 1) (and .Values.backups.enabled (eq (include "cluster.barmanPluginEnabled" .) "true") (eq .Values.backups.method "plugin"))) }} + {{- if gt (len .Values.cluster.plugins) 0 }} plugins: {{ $pluginsWithoutBarman := include "helpers.omitKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYamlArray }} {{- range $pluginsWithoutBarman -}} - {{ toYaml . | indent 6 | trim }} {{- end }} - {{- if and .Values.backups.enabled (eq (include "cluster.barmanPluginEnabled" .) "true") (eq .Values.backups.method "plugin") }} + {{- if and (eq (include "cluster.barmanPluginEnabled" .) "true") (and .Values.backups.enabled (eq .Values.backups.method "plugin") (eq .Values.backups.pluginConfiguration.name "barman-cloud.cloudnative-pg.io")) }} {{- $barmanPlugin := include "helpers.fetchKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYaml -}} - - name: {{ $barmanPlugin.name }} + - name: barman-cloud.cloudnative-pg.io enabled: true isWALArchiver: true parameters: From 11d2084f41024e863f4109c80faebd639d16996f Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Thu, 25 Jun 2026 23:43:48 +0300 Subject: [PATCH 05/28] explicitly specifying backup pluginConfiguration Signed-off-by: Itay Grudev --- charts/cluster/README.md | 1 + charts/cluster/templates/backup-objectstore.yaml | 1 - charts/cluster/templates/recovery-objectstore.yaml | 1 - .../01-barman-plugin-backup-restore_cluster.yaml | 2 ++ .../05-recovery_backup_pitr_cluster.yaml | 12 +++++------- .../04.2-barman-plugin-migration_cluster.yaml | 2 ++ .../01-scheduledbackups_cluster.yaml | 2 ++ charts/cluster/values.schema.json | 4 ++++ charts/cluster/values.yaml | 3 +++ 9 files changed, 19 insertions(+), 9 deletions(-) diff --git a/charts/cluster/README.md b/charts/cluster/README.md index b3e61c4ecd..f0374394cc 100644 --- a/charts/cluster/README.md +++ b/charts/cluster/README.md @@ -138,6 +138,7 @@ Kubernetes: `>=1.29.0-0` | backups.google.path | string | `"/"` | | | backups.instanceSidecarConfiguration | object | `{}` | The configuration for the Barman Cloud Plugin sidecar that runs in the instance pods. See: https://cloudnative-pg.io/plugin-barman-cloud/docs/next/plugin-barman-cloud.v1/#instancesidecarconfiguration | | backups.method | string | `"barmanObjectStore"` | One of `barmanObjectStore` (default) or `plugin` | +| backups.pluginConfiguration | object | `{}` | | | backups.provider | string | `"s3"` | One of `s3`, `azure` or `google` | | backups.retentionPolicy | string | `"30d"` | Retention policy for backups | | backups.s3.accessKey | string | `""` | | diff --git a/charts/cluster/templates/backup-objectstore.yaml b/charts/cluster/templates/backup-objectstore.yaml index 0c23c12c25..27bf5bf219 100644 --- a/charts/cluster/templates/backup-objectstore.yaml +++ b/charts/cluster/templates/backup-objectstore.yaml @@ -28,7 +28,6 @@ spec: encryption: {{ .Values.backups.data.encryption }} {{- end }} jobs: {{ .Values.backups.data.jobs }} - {{- $d := dict "chartFullname" (include "cluster.fullname" .) "scope" .Values.backups "secretPrefix" "backup" }} {{- include "cluster.barmanObjectStoreConfig" $d | nindent 2 }} instanceSidecarConfiguration: diff --git a/charts/cluster/templates/recovery-objectstore.yaml b/charts/cluster/templates/recovery-objectstore.yaml index 8ae69b967e..b56902d99f 100644 --- a/charts/cluster/templates/recovery-objectstore.yaml +++ b/charts/cluster/templates/recovery-objectstore.yaml @@ -17,7 +17,6 @@ spec: configuration: {{- $d := dict "chartFullname" (include "cluster.fullname" .) "scope" .Values.recovery "secretPrefix" "recovery" -}} {{- include "cluster.barmanObjectStoreConfig" $d | indent 2 }} - retentionPolicy: {{ .Values.recovery.retentionPolicy }} instanceSidecarConfiguration: {{- .Values.recovery.instanceSidecarConfiguration | toYaml | nindent 4 }} {{- end }} diff --git a/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml b/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml index 22735eee56..13f8220843 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml @@ -12,6 +12,8 @@ cluster: backups: enabled: true method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io provider: s3 endpointURL: "https://minio.minio.svc.cluster.local" endpointCA: diff --git a/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml b/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml index 45b23c4407..d32fc02a4d 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml @@ -5,15 +5,12 @@ cluster: instances: 2 storage: size: 256Mi - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true recovery: method: plugin pluginConfiguration: name: barman-cloud.cloudnative-pg.io + clusterName: "barman-plugin-backup-restore-cluster" provider: s3 endpointURL: "https://minio.minio.svc.cluster.local" endpointCA: @@ -29,13 +26,14 @@ recovery: accessKey: "minio" secretKey: "minio123" region: "local" - clusterName: "barman-plugin-backup-restore-cluster" - retentionPolicy: "30d" scheduledBackups: [] + retentionPolicy: "30d" backups: - enabled: true + enabled: false method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io provider: s3 endpointURL: "https://minio.minio.svc.cluster.local" endpointCA: diff --git a/charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster.yaml b/charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster.yaml index 9ecad0b1a7..742ff648ca 100644 --- a/charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster.yaml +++ b/charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster.yaml @@ -12,6 +12,8 @@ cluster: backups: enabled: true method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io provider: s3 endpointURL: "https://minio.minio.svc.cluster.local" endpointCA: diff --git a/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml b/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml index 2cdb63446b..f46c3e282f 100644 --- a/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml +++ b/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml @@ -12,6 +12,8 @@ cluster: backups: enabled: true method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io provider: s3 endpointURL: "https://minio.minio.svc.cluster.local" endpointCA: diff --git a/charts/cluster/values.schema.json b/charts/cluster/values.schema.json index b3df291d82..29c5acb352 100644 --- a/charts/cluster/values.schema.json +++ b/charts/cluster/values.schema.json @@ -133,6 +133,10 @@ "description": "One of `barmanObjectStore` (default) or `plugin`", "type": "string" }, + "pluginConfiguration": { + "required": [], + "type": "object" + }, "provider": { "default": "s3", "description": "One of `s3`, `azure` or `google`", diff --git a/charts/cluster/values.yaml b/charts/cluster/values.yaml index 42020c3fa8..1f570d603d 100644 --- a/charts/cluster/values.yaml +++ b/charts/cluster/values.yaml @@ -466,6 +466,9 @@ backups: # -- One of `barmanObjectStore` (default) or `plugin` method: barmanObjectStore + pluginConfiguration: {} +# name: barman-cloud.cloudnative-pg.io + # Barman Object Store configuration applicable to both `barmanObjectStore` and `plugin` methods when using # the `barman-cloud.cloudnative-pg.io` plugin. From caf901d1c9937507fa7d43ecf33c2d49822538e3 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Thu, 25 Jun 2026 23:44:03 +0300 Subject: [PATCH 06/28] fix: objectstore is now a helm hook to ensure it exists before the cluster Signed-off-by: Itay Grudev --- charts/cluster/templates/backup-objectstore.yaml | 1 + charts/cluster/templates/recovery-objectstore.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/charts/cluster/templates/backup-objectstore.yaml b/charts/cluster/templates/backup-objectstore.yaml index 27bf5bf219..5de6cf7bf8 100644 --- a/charts/cluster/templates/backup-objectstore.yaml +++ b/charts/cluster/templates/backup-objectstore.yaml @@ -6,6 +6,7 @@ metadata: namespace: {{ include "cluster.namespace" . }} {{- with .Values.cluster.annotations }} annotations: + "helm.sh/hook": pre-install,pre-upgrade {{- toYaml . | nindent 4 }} {{- end }} labels: diff --git a/charts/cluster/templates/recovery-objectstore.yaml b/charts/cluster/templates/recovery-objectstore.yaml index b56902d99f..9110644e8f 100644 --- a/charts/cluster/templates/recovery-objectstore.yaml +++ b/charts/cluster/templates/recovery-objectstore.yaml @@ -6,6 +6,7 @@ metadata: namespace: {{ include "cluster.namespace" . }} {{- with .Values.cluster.annotations }} annotations: + "helm.sh/hook": pre-install,pre-upgrade {{- toYaml . | nindent 4 }} {{- end }} labels: From 8acfd9e5253cd3a74c9772206b23a070eab39300 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Thu, 25 Jun 2026 23:44:27 +0300 Subject: [PATCH 07/28] recovery s3 creds not provided on recovery Signed-off-by: Itay Grudev --- charts/cluster/templates/recovery-s3-creds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/cluster/templates/recovery-s3-creds.yaml b/charts/cluster/templates/recovery-s3-creds.yaml index d70ed2120f..043a2cd749 100644 --- a/charts/cluster/templates/recovery-s3-creds.yaml +++ b/charts/cluster/templates/recovery-s3-creds.yaml @@ -1,4 +1,4 @@ -{{- if and (eq .Values.mode "recovery" ) (eq .Values.recovery.method "object_store") (eq .Values.recovery.provider "s3") (not .Values.recovery.s3.inheritFromIAMRole) .Values.recovery.secret.create }} +{{- if and (eq .Values.mode "recovery" ) (eq .Values.recovery.provider "s3") (not .Values.recovery.s3.inheritFromIAMRole) .Values.recovery.secret.create }} apiVersion: v1 kind: Secret metadata: From 4ad88a022c894cd76e34bff9b090f0f6a4740703 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Fri, 26 Jun 2026 00:27:00 +0300 Subject: [PATCH 08/28] fix: backup import and pg_basebackup do not require s3 creds Signed-off-by: Itay Grudev --- charts/cluster/templates/recovery-s3-creds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/cluster/templates/recovery-s3-creds.yaml b/charts/cluster/templates/recovery-s3-creds.yaml index 043a2cd749..4966ebe600 100644 --- a/charts/cluster/templates/recovery-s3-creds.yaml +++ b/charts/cluster/templates/recovery-s3-creds.yaml @@ -1,4 +1,4 @@ -{{- if and (eq .Values.mode "recovery" ) (eq .Values.recovery.provider "s3") (not .Values.recovery.s3.inheritFromIAMRole) .Values.recovery.secret.create }} +{{- if and (eq .Values.mode "recovery" ) (eq .Values.recovery.provider "s3") (has .Values.recovery.method (list "backup" "import" "pg_basebackup")) (not .Values.recovery.s3.inheritFromIAMRole) .Values.recovery.secret.create }} apiVersion: v1 kind: Secret metadata: From fbbeeb463151d1821f8ad5849e5e11137a058515 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Fri, 26 Jun 2026 00:28:20 +0300 Subject: [PATCH 09/28] debug logs on failure for plugin migration Signed-off-by: Itay Grudev --- charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index 71bfe56249..3c45330f3e 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -90,6 +90,9 @@ spec: content: sleep 1 - assert: file: ./04.2-barman-plugin-migration_cluster-assert.yaml + catch: + - podLogs: + selector: cnpg.io/cluster=barman-plugin-migration-cluster - name: Create a buckup with the Barman CNPG-I plugin try: - apply: From 97ae5d251713d41d654449ab873b71be423b8b82 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Fri, 26 Jun 2026 00:28:38 +0300 Subject: [PATCH 10/28] deleted backups during cleanup to speed up cleanup Signed-off-by: Itay Grudev --- .../test/barman-plugin-scheduledbackups/chainsaw-test.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/charts/cluster/test/barman-plugin-scheduledbackups/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-scheduledbackups/chainsaw-test.yaml index 7a29e05cc3..e84283ba58 100644 --- a/charts/cluster/test/barman-plugin-scheduledbackups/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-scheduledbackups/chainsaw-test.yaml @@ -28,4 +28,6 @@ spec: try: - script: content: | - helm uninstall --namespace $NAMESPACE scheduledbackups + kubectl --namespace $NAMESPACE delete scheduledbackups.postgresql.cnpg.io --all + kubectl --namespace $NAMESPACE delete backups.postgresql.cnpg.io --all + helm --namespace $NAMESPACE uninstall scheduledbackups From d4e7a2c700cc799d46e7a801f7c1b9b7a9d8913d Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 01:14:49 +0300 Subject: [PATCH 11/28] fix: incorrect recovery-s3-creds condition Signed-off-by: Itay Grudev --- charts/cluster/templates/recovery-s3-creds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/cluster/templates/recovery-s3-creds.yaml b/charts/cluster/templates/recovery-s3-creds.yaml index 4966ebe600..cf170a647b 100644 --- a/charts/cluster/templates/recovery-s3-creds.yaml +++ b/charts/cluster/templates/recovery-s3-creds.yaml @@ -1,4 +1,4 @@ -{{- if and (eq .Values.mode "recovery" ) (eq .Values.recovery.provider "s3") (has .Values.recovery.method (list "backup" "import" "pg_basebackup")) (not .Values.recovery.s3.inheritFromIAMRole) .Values.recovery.secret.create }} +{{- if and (eq .Values.mode "recovery" ) (eq .Values.recovery.provider "s3") (not (has .Values.recovery.method (list "backup" "import" "pg_basebackup"))) (not .Values.recovery.s3.inheritFromIAMRole) .Values.recovery.secret.create }} apiVersion: v1 kind: Secret metadata: From 38d0e601aa2774d1f9f0b475813817aee7d86304 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 04:19:47 +0300 Subject: [PATCH 12/28] fix: typo in the external clusters section Signed-off-by: Itay Grudev --- charts/cluster/templates/_external_clusters.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/cluster/templates/_external_clusters.tpl b/charts/cluster/templates/_external_clusters.tpl index dc86484716..d94f49ecff 100644 --- a/charts/cluster/templates/_external_clusters.tpl +++ b/charts/cluster/templates/_external_clusters.tpl @@ -26,7 +26,7 @@ externalClusters: {{ with $pluginConfigurationParameters }} {{- toYaml . | nindent 8 -}} {{ end }} - barmanObjectname: {{ include "cluster.fullname" . }}-recovery + barmanObjectName: {{ include "cluster.fullname" . }}-recovery serverName: {{ .Values.recovery.clusterName }} {{- end }} {{- else if eq .Values.mode "replica" }} From 30aa4e13ded23ae8efdcfb4a4595efaf1d720efb Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 15:35:32 +0300 Subject: [PATCH 13/28] fix: test step order - no base backup Signed-off-by: Itay Grudev --- .../{03-backup.yaml => 02-backup.yaml} | 0 ...t.yaml => 02-backup_completed-assert.yaml} | 0 ...ert.yaml => 02-backup_running-assert.yaml} | 0 ...{03-checkpoint.yaml => 02-checkpoint.yaml} | 0 ...-assert.yaml => 03-data_write-assert.yaml} | 0 ...{02-data_write.yaml => 03-data_write.yaml} | 0 .../chainsaw-test.yaml | 38 ++++++++++--------- 7 files changed, 20 insertions(+), 18 deletions(-) rename charts/cluster/test/barman-plugin-backup-restore/{03-backup.yaml => 02-backup.yaml} (100%) rename charts/cluster/test/barman-plugin-backup-restore/{03-backup_completed-assert.yaml => 02-backup_completed-assert.yaml} (100%) rename charts/cluster/test/barman-plugin-backup-restore/{03-backup_running-assert.yaml => 02-backup_running-assert.yaml} (100%) rename charts/cluster/test/barman-plugin-backup-restore/{03-checkpoint.yaml => 02-checkpoint.yaml} (100%) rename charts/cluster/test/barman-plugin-backup-restore/{02-data_write-assert.yaml => 03-data_write-assert.yaml} (100%) rename charts/cluster/test/barman-plugin-backup-restore/{02-data_write.yaml => 03-data_write.yaml} (100%) diff --git a/charts/cluster/test/barman-plugin-backup-restore/03-backup.yaml b/charts/cluster/test/barman-plugin-backup-restore/02-backup.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-backup-restore/03-backup.yaml rename to charts/cluster/test/barman-plugin-backup-restore/02-backup.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/03-backup_completed-assert.yaml b/charts/cluster/test/barman-plugin-backup-restore/02-backup_completed-assert.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-backup-restore/03-backup_completed-assert.yaml rename to charts/cluster/test/barman-plugin-backup-restore/02-backup_completed-assert.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/03-backup_running-assert.yaml b/charts/cluster/test/barman-plugin-backup-restore/02-backup_running-assert.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-backup-restore/03-backup_running-assert.yaml rename to charts/cluster/test/barman-plugin-backup-restore/02-backup_running-assert.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/03-checkpoint.yaml b/charts/cluster/test/barman-plugin-backup-restore/02-checkpoint.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-backup-restore/03-checkpoint.yaml rename to charts/cluster/test/barman-plugin-backup-restore/02-checkpoint.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/02-data_write-assert.yaml b/charts/cluster/test/barman-plugin-backup-restore/03-data_write-assert.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-backup-restore/02-data_write-assert.yaml rename to charts/cluster/test/barman-plugin-backup-restore/03-data_write-assert.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/02-data_write.yaml b/charts/cluster/test/barman-plugin-backup-restore/03-data_write.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-backup-restore/02-data_write.yaml rename to charts/cluster/test/barman-plugin-backup-restore/03-data_write.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml index ebd6f539fd..fadc217a37 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml @@ -35,29 +35,16 @@ spec: kind: Cluster - podLogs: selector: cnpg.io/cluster=barman-plugin-backup-restore-cluster - - name: Write some data to the cluster - timeouts: - apply: 1s - assert: 30s - try: - - apply: - file: ./02-data_write.yaml - - assert: - file: ./02-data_write-assert.yaml - catch: - - describe: - apiVersion: batch/v1 - kind: Job - - podLogs: - selector: batch.kubernetes.io/job-name=data-test - name: Create a backup try: - apply: - file: ./03-backup.yaml + file: ./02-backup.yaml - apply: - file: ./03-checkpoint.yaml + file: ./02-checkpoint.yaml + - assert: + file: ./02-backup_running-assert.yaml - assert: - file: ./03-backup_completed-assert.yaml + file: ./02-backup_completed-assert.yaml catch: - describe: apiVersion: postgresql.cnpg.io/v1 @@ -67,6 +54,21 @@ spec: kind: Cluster - podLogs: selector: cnpg.io/cluster=barman-plugin-backup-restore-cluster + - name: Write some data to the cluster + timeouts: + apply: 1s + assert: 30s + try: + - apply: + file: ./03-data_write.yaml + - assert: + file: ./03-data_write-assert.yaml + catch: + - describe: + apiVersion: batch/v1 + kind: Job + - podLogs: + selector: batch.kubernetes.io/job-name=data-test - name: Write more data to the database after the backup try: - apply: From 100915a42dccd14bfeea679ddb0133a8beed5af3 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 15:36:05 +0300 Subject: [PATCH 14/28] faster cleanup by removing backups Signed-off-by: Itay Grudev --- .../test/barman-plugin-backup-restore/chainsaw-test.yaml | 2 ++ charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml index fadc217a37..28febc4e25 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml @@ -119,4 +119,6 @@ spec: try: - script: content: | + kubectl --namespace $NAMESPACE delete scheduledbackups.postgresql.cnpg.io --all + kubectl --namespace $NAMESPACE delete backups.postgresql.cnpg.io --all helm uninstall --namespace $NAMESPACE barman-plugin-backup-restore diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index 3c45330f3e..1d53e393d3 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -173,4 +173,6 @@ spec: try: - script: content: | + kubectl --namespace $NAMESPACE delete scheduledbackups.postgresql.cnpg.io --all + kubectl --namespace $NAMESPACE delete backups.postgresql.cnpg.io --all helm uninstall --namespace $NAMESPACE barman-plugin-migration From c901832d88ef0c4fcfc18a6d9695936a14487e77 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 15:36:41 +0300 Subject: [PATCH 15/28] simpler upgrade procedure because the objectstore is a helm hook Signed-off-by: Itay Grudev --- ...rman-plugin-migration_cluster-assert.yaml} | 0 ...> 04-barman-plugin-migration_cluster.yaml} | 0 ...arman-plugin-migration_cluster-assert.yaml | 12 ------- .../04.1-barman-plugin-migration_cluster.yaml | 31 ------------------- .../chainsaw-test.yaml | 15 ++------- 5 files changed, 2 insertions(+), 56 deletions(-) rename charts/cluster/test/barman-plugin-migration/{04.2-barman-plugin-migration_cluster-assert.yaml => 04-barman-plugin-migration_cluster-assert.yaml} (100%) rename charts/cluster/test/barman-plugin-migration/{04.2-barman-plugin-migration_cluster.yaml => 04-barman-plugin-migration_cluster.yaml} (100%) delete mode 100644 charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster-assert.yaml delete mode 100644 charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster.yaml diff --git a/charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster-assert.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster-assert.yaml rename to charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml diff --git a/charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster.yaml similarity index 100% rename from charts/cluster/test/barman-plugin-migration/04.2-barman-plugin-migration_cluster.yaml rename to charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster.yaml diff --git a/charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster-assert.yaml b/charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster-assert.yaml deleted file mode 100644 index 7aed154fc2..0000000000 --- a/charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster-assert.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: barman-plugin-migration-cluster -status: - readyInstances: 2 - phase: Cluster in healthy state ---- -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: barman-plugin-migration-cluster-backups diff --git a/charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster.yaml b/charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster.yaml deleted file mode 100644 index 9abd52993e..0000000000 --- a/charts/cluster/test/barman-plugin-migration/04.1-barman-plugin-migration_cluster.yaml +++ /dev/null @@ -1,31 +0,0 @@ -type: postgresql -mode: standalone -cluster: - instances: 2 - storage: - size: 256Mi - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true - -backups: - enabled: true - method: barmanObjectStore - provider: s3 - endpointURL: "https://minio.minio.svc.cluster.local" - endpointCA: - name: kube-root-ca.crt - key: ca.crt - wal: - encryption: "" - data: - encryption: "" - s3: - bucket: "mybucket" - path: "/barman-plugin-migration/v1" - accessKey: "minio" - secretKey: "minio123" - region: "local" - scheduledBackups: [] - retentionPolicy: "30d" diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index 1d53e393d3..b469420dbf 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -74,22 +74,11 @@ spec: kubectl -n $NAMESPACE create secret generic kube-root-ca.crt --from-literal=ca.crt="$(kubectl -n kube-system get configmaps kube-root-ca.crt -o jsonpath='{.data.ca\.crt}')" --dry-run=client -o yaml | kubectl apply -f - helm upgrade \ --namespace $NAMESPACE \ - --values ./04.1-barman-plugin-migration_cluster.yaml \ + --values ./04-barman-plugin-migration_cluster.yaml \ --wait \ barman-plugin-migration ../../ - assert: - file: ./04.1-barman-plugin-migration_cluster-assert.yaml - - script: - content: | - helm upgrade \ - --namespace $NAMESPACE \ - --values ./04.2-barman-plugin-migration_cluster.yaml \ - --wait \ - barman-plugin-migration ../../ - - script: - content: sleep 1 - - assert: - file: ./04.2-barman-plugin-migration_cluster-assert.yaml + file: ./04-barman-plugin-migration_cluster-assert.yaml catch: - podLogs: selector: cnpg.io/cluster=barman-plugin-migration-cluster From 3fed398564a3a583a6a8edb1017210e742e7ac98 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 15:52:00 +0300 Subject: [PATCH 16/28] removed backup running assert as it is unreliable. keeping completed only Signed-off-by: Itay Grudev --- .../02-backup_running-assert.yaml | 12 ------------ .../barman-plugin-backup-restore/chainsaw-test.yaml | 2 -- 2 files changed, 14 deletions(-) delete mode 100644 charts/cluster/test/barman-plugin-backup-restore/02-backup_running-assert.yaml diff --git a/charts/cluster/test/barman-plugin-backup-restore/02-backup_running-assert.yaml b/charts/cluster/test/barman-plugin-backup-restore/02-backup_running-assert.yaml deleted file mode 100644 index e708dd4429..0000000000 --- a/charts/cluster/test/barman-plugin-backup-restore/02-backup_running-assert.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: post-init-backup -spec: - cluster: - name: barman-plugin-backup-restore-cluster - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -status: - phase: running diff --git a/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml index 28febc4e25..61fb0fdba8 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/chainsaw-test.yaml @@ -41,8 +41,6 @@ spec: file: ./02-backup.yaml - apply: file: ./02-checkpoint.yaml - - assert: - file: ./02-backup_running-assert.yaml - assert: file: ./02-backup_completed-assert.yaml catch: From 8777a916ed8a60beec827dbe0bf148890079da70 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 19:33:40 +0300 Subject: [PATCH 17/28] fix: missing minio/mc image tag Signed-off-by: Itay Grudev --- .../test/barman-plugin-backup-restore/00-minio_cleanup.yaml | 2 +- .../cluster/test/barman-plugin-migration/00-minio_cleanup.yaml | 2 +- .../test/barman-plugin-scheduledbackups/00-minio_cleanup.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/charts/cluster/test/barman-plugin-backup-restore/00-minio_cleanup.yaml b/charts/cluster/test/barman-plugin-backup-restore/00-minio_cleanup.yaml index bc381b893f..4d8c6b1d17 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/00-minio_cleanup.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/00-minio_cleanup.yaml @@ -8,7 +8,7 @@ spec: restartPolicy: OnFailure containers: - name: minio-cleanup - image: minio/mc + image: minio/mc:latest command: ['sh', '-c'] args: - | diff --git a/charts/cluster/test/barman-plugin-migration/00-minio_cleanup.yaml b/charts/cluster/test/barman-plugin-migration/00-minio_cleanup.yaml index 92b77ba8c6..a06dbb2bf8 100644 --- a/charts/cluster/test/barman-plugin-migration/00-minio_cleanup.yaml +++ b/charts/cluster/test/barman-plugin-migration/00-minio_cleanup.yaml @@ -8,7 +8,7 @@ spec: restartPolicy: OnFailure containers: - name: minio-cleanup - image: minio/mc + image: minio/mc:latest command: ['sh', '-c'] args: - | diff --git a/charts/cluster/test/barman-plugin-scheduledbackups/00-minio_cleanup.yaml b/charts/cluster/test/barman-plugin-scheduledbackups/00-minio_cleanup.yaml index 7ee8bc0340..4fef8e057d 100644 --- a/charts/cluster/test/barman-plugin-scheduledbackups/00-minio_cleanup.yaml +++ b/charts/cluster/test/barman-plugin-scheduledbackups/00-minio_cleanup.yaml @@ -8,7 +8,7 @@ spec: restartPolicy: OnFailure containers: - name: minio-cleanup - image: minio/mc + image: minio/mc:latest command: ['sh', '-c'] args: - | From 1c7d456dc9f016660fdc50705bc74dba30d47326 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 28 Jun 2026 19:38:13 +0300 Subject: [PATCH 18/28] fix: migration test timeout and improved debug logs Signed-off-by: Itay Grudev --- .../test/barman-plugin-migration/chainsaw-test.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index b469420dbf..756c445f71 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -55,7 +55,7 @@ spec: - name: Write some data to the cluster timeouts: apply: 1s - assert: 30s + assert: 1m try: - apply: file: 03-data_write.yaml @@ -68,6 +68,8 @@ spec: - podLogs: selector: batch.kubernetes.io/job-name=data-write - name: Switch the cluster to using Barman CNPG-I for backups + timeouts: + apply: 10s try: - script: content: | @@ -77,9 +79,14 @@ spec: --values ./04-barman-plugin-migration_cluster.yaml \ --wait \ barman-plugin-migration ../../ + - sleep: + duration: 5s - assert: file: ./04-barman-plugin-migration_cluster-assert.yaml catch: + - describe: + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster - podLogs: selector: cnpg.io/cluster=barman-plugin-migration-cluster - name: Create a buckup with the Barman CNPG-I plugin From 4d5b001483aae53314c730f120719ad49de8f121 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Mon, 29 Jun 2026 04:48:56 +0300 Subject: [PATCH 19/28] fixed hook annotations Signed-off-by: Itay Grudev --- .../cluster/templates/backup-objectstore.yaml | 6 +++--- .../cluster/templates/recovery-objectstore.yaml | 6 +++--- ...-barman-plugin-migration_cluster-assert.yaml | 17 ----------------- 3 files changed, 6 insertions(+), 23 deletions(-) delete mode 100644 charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml diff --git a/charts/cluster/templates/backup-objectstore.yaml b/charts/cluster/templates/backup-objectstore.yaml index 5de6cf7bf8..e1f44e1522 100644 --- a/charts/cluster/templates/backup-objectstore.yaml +++ b/charts/cluster/templates/backup-objectstore.yaml @@ -4,11 +4,11 @@ kind: ObjectStore metadata: name: {{ include "cluster.fullname" . }}-backups namespace: {{ include "cluster.namespace" . }} - {{- with .Values.cluster.annotations }} annotations: "helm.sh/hook": pre-install,pre-upgrade - {{- toYaml . | nindent 4 }} - {{- end }} + {{- with .Values.cluster.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "cluster.labels" . | nindent 4 }} {{- with .Values.cluster.additionalLabels }} diff --git a/charts/cluster/templates/recovery-objectstore.yaml b/charts/cluster/templates/recovery-objectstore.yaml index 9110644e8f..ec0bf02454 100644 --- a/charts/cluster/templates/recovery-objectstore.yaml +++ b/charts/cluster/templates/recovery-objectstore.yaml @@ -4,11 +4,11 @@ kind: ObjectStore metadata: name: {{ include "cluster.fullname" . }}-recovery namespace: {{ include "cluster.namespace" . }} - {{- with .Values.cluster.annotations }} annotations: "helm.sh/hook": pre-install,pre-upgrade - {{- toYaml . | nindent 4 }} - {{- end }} + {{- with .Values.cluster.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} labels: {{- include "cluster.labels" . | nindent 4 }} {{- with .Values.cluster.additionalLabels }} diff --git a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml deleted file mode 100644 index 27991bd3c8..0000000000 --- a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: barman-plugin-migration-cluster -status: - readyInstances: 2 - phase: Cluster in healthy state -spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true ---- -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: barman-plugin-migration-cluster-backups From 61db9dfd95562f71699bcb732a031143fc51af1a Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Mon, 29 Jun 2026 05:05:13 +0300 Subject: [PATCH 20/28] fix duplicated line Signed-off-by: Itay Grudev --- ...-barman-plugin-migration_cluster-assert.yaml | 17 +++++++++++++++++ .../barman-plugin-migration/chainsaw-test.yaml | 1 - 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml diff --git a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml new file mode 100644 index 0000000000..27991bd3c8 --- /dev/null +++ b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml @@ -0,0 +1,17 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: barman-plugin-migration-cluster +status: + readyInstances: 2 + phase: Cluster in healthy state +spec: + plugins: + - name: barman-cloud.cloudnative-pg.io + enabled: true + isWALArchiver: true +--- +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: barman-plugin-migration-cluster-backups diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index 756c445f71..9fa26a029c 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -73,7 +73,6 @@ spec: try: - script: content: | - kubectl -n $NAMESPACE create secret generic kube-root-ca.crt --from-literal=ca.crt="$(kubectl -n kube-system get configmaps kube-root-ca.crt -o jsonpath='{.data.ca\.crt}')" --dry-run=client -o yaml | kubectl apply -f - helm upgrade \ --namespace $NAMESPACE \ --values ./04-barman-plugin-migration_cluster.yaml \ From 9e3207b19554b84c18c3075473162288f4da2bc1 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Mon, 29 Jun 2026 14:45:41 +0300 Subject: [PATCH 21/28] fix: ability to override the barman plugin configuration Signed-off-by: Itay Grudev --- charts/cluster/templates/_helpers.tpl | 10 ++++++++++ charts/cluster/templates/cluster.yaml | 8 ++++---- .../01-barman-plugin-backup-restore_cluster.yaml | 4 ---- .../05-recovery_backup_pitr_cluster.yaml | 2 +- .../04-barman-plugin-migration_cluster.yaml | 4 ---- .../01-scheduledbackups_cluster.yaml | 4 ---- 6 files changed, 15 insertions(+), 17 deletions(-) diff --git a/charts/cluster/templates/_helpers.tpl b/charts/cluster/templates/_helpers.tpl index c642655635..6628bac870 100644 --- a/charts/cluster/templates/_helpers.tpl +++ b/charts/cluster/templates/_helpers.tpl @@ -230,3 +230,13 @@ Given a list of objects, returns the first item that matches the key value pairs {{- define "cluster.barmanPluginEnabled" -}} {{- eq (include "helpers.hasKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io") (list "isWALArchiver" true)))) "true" -}} {{- end -}} + +{{- define "cluster.barmanPluginRequired" -}} + {{- $required := false -}} + {{- if and .Values.backups.enabled (eq .Values.backups.method "plugin") -}} + {{- if eq .Values.backups.pluginConfiguration.name "barman-cloud.cloudnative-pg.io" -}} + {{- $required = true -}} + {{- end -}} + {{- end -}} + {{- $required -}} +{{- end -}} diff --git a/charts/cluster/templates/cluster.yaml b/charts/cluster/templates/cluster.yaml index dcc164b93b..9ca1bfd9ab 100644 --- a/charts/cluster/templates/cluster.yaml +++ b/charts/cluster/templates/cluster.yaml @@ -159,16 +159,16 @@ spec: {{- range $pluginsWithoutBarman -}} - {{ toYaml . | indent 6 | trim }} {{- end }} - {{- if and (eq (include "cluster.barmanPluginEnabled" .) "true") (and .Values.backups.enabled (eq .Values.backups.method "plugin") (eq .Values.backups.pluginConfiguration.name "barman-cloud.cloudnative-pg.io")) }} + {{- if or (eq (include "cluster.barmanPluginEnabled" .) "true") (eq (include "cluster.barmanPluginRequired" .) "true") }} {{- $barmanPlugin := include "helpers.fetchKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYaml -}} - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true + enabled: {{ or (eq (include "cluster.barmanPluginRequired" .) "true") $barmanPlugin.enabled }} + isWALArchiver: {{ or (eq (include "cluster.barmanPluginRequired" .) "true") $barmanPlugin.isWALArchiver }} parameters: {{- $parameters := (omit (coalesce $barmanPlugin.parameters dict) "barmanObjectName") -}} {{ with $parameters }} {{ toYaml . | indent 8 | trim }} {{- end }} - barmanObjectName: {{ include "cluster.fullname" . }}-backups + barmanObjectName: {{ printf "%s-backups" (include "cluster.fullname" .) | default $barmanPlugin.barmanObjectName }}-backups {{- end }} {{- end }} diff --git a/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml b/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml index 13f8220843..141de74506 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/01-barman-plugin-backup-restore_cluster.yaml @@ -4,10 +4,6 @@ cluster: instances: 2 storage: size: 256Mi - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true backups: enabled: true diff --git a/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml b/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml index d32fc02a4d..8b6cb27f59 100644 --- a/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml +++ b/charts/cluster/test/barman-plugin-backup-restore/05-recovery_backup_pitr_cluster.yaml @@ -30,7 +30,7 @@ recovery: retentionPolicy: "30d" backups: - enabled: false + enabled: true method: plugin pluginConfiguration: name: barman-cloud.cloudnative-pg.io diff --git a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster.yaml index 742ff648ca..430dae6cff 100644 --- a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster.yaml +++ b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster.yaml @@ -4,10 +4,6 @@ cluster: instances: 2 storage: size: 256Mi - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true backups: enabled: true diff --git a/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml b/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml index f46c3e282f..3962add8c6 100644 --- a/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml +++ b/charts/cluster/test/barman-plugin-scheduledbackups/01-scheduledbackups_cluster.yaml @@ -4,10 +4,6 @@ cluster: instances: 1 storage: size: 256Mi - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true backups: enabled: true From 5fbd4a2d0a0b630866677edec8af882ebc5b5715 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Mon, 29 Jun 2026 14:47:31 +0300 Subject: [PATCH 22/28] ability to override enabled and isWALArchiver Signed-off-by: Itay Grudev --- charts/cluster/templates/cluster.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/cluster/templates/cluster.yaml b/charts/cluster/templates/cluster.yaml index 9ca1bfd9ab..b31158ed2f 100644 --- a/charts/cluster/templates/cluster.yaml +++ b/charts/cluster/templates/cluster.yaml @@ -162,8 +162,8 @@ spec: {{- if or (eq (include "cluster.barmanPluginEnabled" .) "true") (eq (include "cluster.barmanPluginRequired" .) "true") }} {{- $barmanPlugin := include "helpers.fetchKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYaml -}} - name: barman-cloud.cloudnative-pg.io - enabled: {{ or (eq (include "cluster.barmanPluginRequired" .) "true") $barmanPlugin.enabled }} - isWALArchiver: {{ or (eq (include "cluster.barmanPluginRequired" .) "true") $barmanPlugin.isWALArchiver }} + enabled: {{ eq (include "cluster.barmanPluginRequired" .) "true" | default $barmanPlugin.enabled }} + isWALArchiver: {{ eq (include "cluster.barmanPluginRequired" .) "true" | default $barmanPlugin.isWALArchiver }} parameters: {{- $parameters := (omit (coalesce $barmanPlugin.parameters dict) "barmanObjectName") -}} {{ with $parameters }} From aa5d60156c87e76f6b8af4da5bd650e54b4d1fd2 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Mon, 29 Jun 2026 16:40:45 +0300 Subject: [PATCH 23/28] test for plugin configuration passthrough Signed-off-by: Itay Grudev --- ...plugin_explicit_config_cluster-assert.yaml | 14 +++++++ ...barman_plugin_explicit_config_cluster.yaml | 37 +++++++++++++++++ ...plugin_config_override_cluster-assert.yaml | 17 ++++++++ ...barman_plugin_config_override_cluster.yaml | 40 ++++++++++++++++++ .../barman-plugin-explicit/chainsaw-test.yaml | 41 +++++++++++++++++++ 5 files changed, 149 insertions(+) create mode 100644 charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster-assert.yaml create mode 100644 charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster.yaml create mode 100644 charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster-assert.yaml create mode 100644 charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster.yaml create mode 100644 charts/cluster/test/barman-plugin-explicit/chainsaw-test.yaml diff --git a/charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster-assert.yaml b/charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster-assert.yaml new file mode 100644 index 0000000000..6d3310f623 --- /dev/null +++ b/charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster-assert.yaml @@ -0,0 +1,14 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: barman-plugin-explicit-config-cluster +spec: + plugins: + - name: foo.example.com + enabled: true + isWALArchiver: false + parameters: + foo: bar + - name: barman-cloud.cloudnative-pg.io + enabled: true + isWALArchiver: true diff --git a/charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster.yaml b/charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster.yaml new file mode 100644 index 0000000000..dce181cf13 --- /dev/null +++ b/charts/cluster/test/barman-plugin-explicit/01-barman_plugin_explicit_config_cluster.yaml @@ -0,0 +1,37 @@ +type: postgresql +mode: standalone +cluster: + instances: 1 + storage: + size: 256Mi + plugins: + - name: foo.example.com + enabled: true + isWALArchiver: false + parameters: + foo: bar + - name: barman-cloud.cloudnative-pg.io + enabled: true + isWALArchiver: true + +backups: + enabled: true + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/barman-plugin-scheduledbackups/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + retentionPolicy: "30d" diff --git a/charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster-assert.yaml b/charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster-assert.yaml new file mode 100644 index 0000000000..e595e8bd2f --- /dev/null +++ b/charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster-assert.yaml @@ -0,0 +1,17 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: barman-plugin-config-override-cluster +spec: + plugins: + - name: foo.example.com + enabled: true + isWALArchiver: false + parameters: + foo: bar + - name: barman-cloud.cloudnative-pg.io + enabled: false + isWALArchiver: false + parameters: + foo: bar + barmanObjectName: asd diff --git a/charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster.yaml b/charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster.yaml new file mode 100644 index 0000000000..a06a6eef10 --- /dev/null +++ b/charts/cluster/test/barman-plugin-explicit/02-barman_plugin_config_override_cluster.yaml @@ -0,0 +1,40 @@ +type: postgresql +mode: standalone +cluster: + instances: 1 + storage: + size: 256Mi + plugins: + - name: foo.example.com + enabled: true + isWALArchiver: false + parameters: + foo: bar + - name: barman-cloud.cloudnative-pg.io + enabled: false + isWALArchiver: false + parameters: + foo: bar + barmanObjectName: asd + +backups: + enabled: true + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/barman-plugin-scheduledbackups/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + retentionPolicy: "30d" diff --git a/charts/cluster/test/barman-plugin-explicit/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-explicit/chainsaw-test.yaml new file mode 100644 index 0000000000..0fd08835e8 --- /dev/null +++ b/charts/cluster/test/barman-plugin-explicit/chainsaw-test.yaml @@ -0,0 +1,41 @@ +# Tests the Barman Cloud CNPG-I Plugin with explicit plugin configuration +apiVersion: chainsaw.kyverno.io/v1alpha1 +kind: Test +metadata: + name: barman-plugin-explicit +spec: + timeouts: + apply: 1s + assert: 5s + cleanup: 1m + steps: + - name: Install a cluster with a custom plugin section + try: + - script: + content: | + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./01-barman_plugin_explicit_config_cluster.yaml \ + --wait \ + barman-plugin-explicit-config ../../ + - assert: + file: ./01-barman_plugin_explicit_config_cluster-assert.yaml + - name: Install the cluster with a custom plugin section that overrides the default configuration + try: + - script: + content: | + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./02-barman_plugin_config_override_cluster.yaml \ + --wait \ + barman-plugin-config-override ../../ + - assert: + file: ./02-barman_plugin_config_override_cluster-assert.yaml + - name: Cleanup + try: + - script: + content: | + helm --namespace $NAMESPACE uninstall barman-plugin-explicit-config + helm --namespace $NAMESPACE uninstall barman-plugin-config-override From ac87e6042af5e389bef8917ec432ffee8343b3da Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Mon, 29 Jun 2026 16:40:55 +0300 Subject: [PATCH 24/28] fix: plugin configuration passthrough Signed-off-by: Itay Grudev --- charts/cluster/templates/cluster.yaml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/charts/cluster/templates/cluster.yaml b/charts/cluster/templates/cluster.yaml index b31158ed2f..623188e6df 100644 --- a/charts/cluster/templates/cluster.yaml +++ b/charts/cluster/templates/cluster.yaml @@ -153,22 +153,23 @@ spec: {{ include "cluster.externalClusters" . | nindent 2 -}} {{ include "cluster.backup" . | nindent 2 -}} - {{- if gt (len .Values.cluster.plugins) 0 }} + {{- if or (gt (len .Values.cluster.plugins) 0) (eq (include "cluster.barmanPluginRequired" .) "true") }} plugins: {{ $pluginsWithoutBarman := include "helpers.omitKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYamlArray }} {{- range $pluginsWithoutBarman -}} - {{ toYaml . | indent 6 | trim }} {{- end }} {{- if or (eq (include "cluster.barmanPluginEnabled" .) "true") (eq (include "cluster.barmanPluginRequired" .) "true") }} - {{- $barmanPlugin := include "helpers.fetchKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYaml -}} + {{- $barmanPlugin := include "helpers.fetchKeyValue" (list .Values.cluster.plugins (list (list "name" "barman-cloud.cloudnative-pg.io"))) | fromYaml }} - name: barman-cloud.cloudnative-pg.io - enabled: {{ eq (include "cluster.barmanPluginRequired" .) "true" | default $barmanPlugin.enabled }} - isWALArchiver: {{ eq (include "cluster.barmanPluginRequired" .) "true" | default $barmanPlugin.isWALArchiver }} + enabled: {{ eq $barmanPlugin.enabled nil | ternary (eq (include "cluster.barmanPluginRequired" .) "true") $barmanPlugin.enabled }} + isWALArchiver: {{ eq $barmanPlugin.isWALArchiver nil | ternary (eq (include "cluster.barmanPluginRequired" .) "true") $barmanPlugin.isWALArchiver }} parameters: - {{- $parameters := (omit (coalesce $barmanPlugin.parameters dict) "barmanObjectName") -}} - {{ with $parameters }} - {{ toYaml . | indent 8 | trim }} + {{- $parameters := (coalesce $barmanPlugin.parameters dict) -}} + {{- $parametersWithoutObjectName := (omit $parameters "barmanObjectName") }} + {{ with $parametersWithoutObjectName }} + {{- toYaml . | indent 8 | trim }} {{- end }} - barmanObjectName: {{ printf "%s-backups" (include "cluster.fullname" .) | default $barmanPlugin.barmanObjectName }}-backups + barmanObjectName: {{ $parameters.barmanObjectName | default (printf "%s-backups" (include "cluster.fullname" .)) }} {{- end }} {{- end }} From cbe7650d7f8fecab960b173cf128ce80b7ea2314 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Tue, 30 Jun 2026 20:12:03 +0300 Subject: [PATCH 25/28] fix: updated objectstore condition based on the new configuration options Signed-off-by: Itay Grudev --- charts/cluster/templates/backup-objectstore.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/cluster/templates/backup-objectstore.yaml b/charts/cluster/templates/backup-objectstore.yaml index e1f44e1522..21e025e16d 100644 --- a/charts/cluster/templates/backup-objectstore.yaml +++ b/charts/cluster/templates/backup-objectstore.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.backups.enabled (eq (include "cluster.barmanPluginEnabled" .) "true") }} +{{- if eq (include "cluster.barmanPluginRequired" .) "true" }} apiVersion: barmancloud.cnpg.io/v1 kind: ObjectStore metadata: From 5d235703e9cbc8459d54aed7579b51f128b71465 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Thu, 2 Jul 2026 11:59:51 +0300 Subject: [PATCH 26/28] added pre-rollback hooks to the objectstores Signed-off-by: Itay Grudev --- charts/cluster/templates/backup-objectstore.yaml | 2 +- charts/cluster/templates/recovery-objectstore.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/cluster/templates/backup-objectstore.yaml b/charts/cluster/templates/backup-objectstore.yaml index 21e025e16d..7bedc6ee58 100644 --- a/charts/cluster/templates/backup-objectstore.yaml +++ b/charts/cluster/templates/backup-objectstore.yaml @@ -5,7 +5,7 @@ metadata: name: {{ include "cluster.fullname" . }}-backups namespace: {{ include "cluster.namespace" . }} annotations: - "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback {{- with .Values.cluster.annotations }} {{- toYaml . | nindent 4 }} {{- end }} diff --git a/charts/cluster/templates/recovery-objectstore.yaml b/charts/cluster/templates/recovery-objectstore.yaml index ec0bf02454..d1b2f8c4d5 100644 --- a/charts/cluster/templates/recovery-objectstore.yaml +++ b/charts/cluster/templates/recovery-objectstore.yaml @@ -5,7 +5,7 @@ metadata: name: {{ include "cluster.fullname" . }}-recovery namespace: {{ include "cluster.namespace" . }} annotations: - "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback {{- with .Values.cluster.annotations }} {{- toYaml . | nindent 4 }} {{- end }} From 20e887c5d8a9abdb8bf04e35791e43496e982c09 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Thu, 2 Jul 2026 12:00:18 +0300 Subject: [PATCH 27/28] added an additional upgrade assertion Signed-off-by: Itay Grudev --- ...ugin-migration_cluster-healthy-assert.yaml} | 2 ++ ...gin-migration_cluster-upgrading-assert.yaml | 18 ++++++++++++++++++ .../barman-plugin-migration/chainsaw-test.yaml | 4 +++- 3 files changed, 23 insertions(+), 1 deletion(-) rename charts/cluster/test/barman-plugin-migration/{04-barman-plugin-migration_cluster-assert.yaml => 04-barman-plugin-migration_cluster-healthy-assert.yaml} (81%) create mode 100644 charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml diff --git a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-healthy-assert.yaml similarity index 81% rename from charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml rename to charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-healthy-assert.yaml index 27991bd3c8..56204cb54b 100644 --- a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-assert.yaml +++ b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-healthy-assert.yaml @@ -10,6 +10,8 @@ spec: - name: barman-cloud.cloudnative-pg.io enabled: true isWALArchiver: true + parameters: + barmanObjectName: barman-plugin-migration-cluster-backups --- apiVersion: barmancloud.cnpg.io/v1 kind: ObjectStore diff --git a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml new file mode 100644 index 0000000000..61fde5a935 --- /dev/null +++ b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml @@ -0,0 +1,18 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: barman-plugin-migration-cluster +status: + phase: Upgrading cluster +spec: + plugins: + - name: barman-cloud.cloudnative-pg.io + enabled: true + isWALArchiver: true + parameters: + barmanObjectName: barman-plugin-migration-cluster-backups +--- +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: barman-plugin-migration-cluster-backups diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index 9fa26a029c..c90edf325b 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -81,7 +81,9 @@ spec: - sleep: duration: 5s - assert: - file: ./04-barman-plugin-migration_cluster-assert.yaml + file: ./04-barman-plugin-migration_cluster-upgrading-assert.yaml + - assert: + file: ./04-barman-plugin-migration_cluster-healthy-assert.yaml catch: - describe: apiVersion: postgresql.cnpg.io/v1 From f73ee7e08b483f15fd363104f48e5d16abd0def2 Mon Sep 17 00:00:00 2001 From: Abdullah Alaqeel Date: Thu, 2 Jul 2026 17:35:50 +0300 Subject: [PATCH 28/28] test(cluster): fix barman-plugin-migration test assertions The barman-plugin-migration chainsaw test fails consistently in CI. The migration itself works correctly (verified against operator source and the plugin migration docs); the failures are in test assertions of transient states, plus one secret-name typo. - Migration 'Upgrading cluster' phase (step 4): status.phase is set for only a fraction of a second (the operator models rollouts as PhaseUpgrade -> PhaseWaitingForInstancesToBeActive, see tests/e2e/probes_test.go), and helm --wait does not gate CNPG CRDs, so polling always missed it. Replaced with a polling assert on the persistent UpgradingInstance Event. - Backup 'running' phase (step 5): the backup completes in ~10s, faster than polling. Replaced with a polling assert on the persistent backup 'Starting' Event (backup_controller.go:337). - PITR secret name (step 8): referenced recovery-backup-pitr-superuser (release name) instead of recovery-backup-pitr-cluster-superuser (cluster name), causing CreateContainerConfigError. Fixed. Verified end-to-end in isolated fork CI (identical test( cluster ) workflow), including PITR recovery. Signed-off-by: Abdullah Alaqel Signed-off-by: Abdullah Alaqeel --- ...in-migration_cluster-upgrading-assert.yaml | 23 +++++-------------- .../05-backup_running-assert.yaml | 17 +++++--------- .../barman-plugin-migration/08-data_test.yaml | 2 +- .../chainsaw-test.yaml | 4 ---- 4 files changed, 13 insertions(+), 33 deletions(-) diff --git a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml index 61fde5a935..6682a100fa 100644 --- a/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml +++ b/charts/cluster/test/barman-plugin-migration/04-barman-plugin-migration_cluster-upgrading-assert.yaml @@ -1,18 +1,7 @@ -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: +apiVersion: v1 +kind: Event +reason: UpgradingInstance +involvedObject: + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster name: barman-plugin-migration-cluster -status: - phase: Upgrading cluster -spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - enabled: true - isWALArchiver: true - parameters: - barmanObjectName: barman-plugin-migration-cluster-backups ---- -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: barman-plugin-migration-cluster-backups diff --git a/charts/cluster/test/barman-plugin-migration/05-backup_running-assert.yaml b/charts/cluster/test/barman-plugin-migration/05-backup_running-assert.yaml index c1fa64a4c1..8a0ff0dc64 100644 --- a/charts/cluster/test/barman-plugin-migration/05-backup_running-assert.yaml +++ b/charts/cluster/test/barman-plugin-migration/05-backup_running-assert.yaml @@ -1,12 +1,7 @@ -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: +apiVersion: v1 +kind: Event +reason: Starting +involvedObject: + apiVersion: postgresql.cnpg.io/v1 + kind: Backup name: post-migrate-backup -spec: - cluster: - name: barman-plugin-migration-cluster - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -status: - phase: running diff --git a/charts/cluster/test/barman-plugin-migration/08-data_test.yaml b/charts/cluster/test/barman-plugin-migration/08-data_test.yaml index 694a7ba252..5fb4faf395 100644 --- a/charts/cluster/test/barman-plugin-migration/08-data_test.yaml +++ b/charts/cluster/test/barman-plugin-migration/08-data_test.yaml @@ -12,7 +12,7 @@ spec: - name: DB_URI valueFrom: secretKeyRef: - name: recovery-backup-pitr-superuser + name: recovery-backup-pitr-cluster-superuser key: uri image: alpine:3.19 command: ['sh', '-c'] diff --git a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml index c90edf325b..9cfea96fb9 100644 --- a/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml +++ b/charts/cluster/test/barman-plugin-migration/chainsaw-test.yaml @@ -68,8 +68,6 @@ spec: - podLogs: selector: batch.kubernetes.io/job-name=data-write - name: Switch the cluster to using Barman CNPG-I for backups - timeouts: - apply: 10s try: - script: content: | @@ -78,8 +76,6 @@ spec: --values ./04-barman-plugin-migration_cluster.yaml \ --wait \ barman-plugin-migration ../../ - - sleep: - duration: 5s - assert: file: ./04-barman-plugin-migration_cluster-upgrading-assert.yaml - assert: