cloudnative-pg / cloudnative-pg/plugin-barman-cloud
I try to use plugin-barman-cloud as plugin but it does not work for me whit the examples.
- Lenguaje dominante
- Go
- Estrellas
- 191
- Forks
- 72
- Merge medio
- 2 d 21 h
- PR fusionados (30 d)
- 21
Descripción
Hello,
Please find my configuration below. It works as expected with native backups, but fails when using the plugin.
Do you have any idea what might be causing this, or is there a known bug or workaround?
Objectstore.yaml
```
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: rhbok-barman-store
spec:
retentionPolicy: "1m"
instanceSidecarConfiguration:
env:
- name: AWS_REQUEST_CHECKSUM_CALCULATION
value: when_required
- name: AWS_RESPONSE_CHECKSUM_VALIDATION
value: when_required
retentionPolicyIntervalSeconds: 1800
resources:
requests:
memory: "64Mi"
cpu: "250m"
configuration:
destinationPath: s3://$BUCKET/backup
endpointURL: https://$S3-Storage #Own S3 Storage with Ceph Backend. It works with native Backup but with plugin not.
s3Credentials:
accessKeyId:
name: s3-config
key: ACCESS_KEY_ID
secretAccessKey:
name: s3-config
key: ACCESS_SECRET_KEY
wal:
compression: gzip
encryption: AES256
maxParallel: 8
data:
additionalCommandArgs:
- "--max-single-put-size 16777216"
- "--min-chunk-size=5MB"
- "--read-timeout=60"
- "-e AES256"
```
cluster.yaml
```
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
plugins:
- name: barman-cloud.cloudnative-pg.io
isWALArchiver: true
parameters:
barmanObjectName: rhbok-barman-store
storage:
size: 1Gi
walStorage:
size: 1Gi
```
backup.yaml
```
apiVersion: postgresql.cnpg.io/v1
kind: Backup
metadata:
name: backup-example
spec:
cluster:
name: cluster-example
method: plugin
pluginConfiguration:
name: barman-cloud.cloudnative-pg.io
```
Logs:
```
{"level":"info","ts":"2025-06-30T06:11:49.628098638Z","msg":"Pre hook reconciliation start"}
{"level":"info","ts":"2025-06-30T06:11:49.968887541Z","msg":"Pre hook reconciliation start"}
{"level":"info","ts":"2025-06-30T06:11:50.224816628Z","msg":"Pre hook reconciliation start"}
{"level":"debug","ts":"2025-06-30T06:11:50.224986386Z","msg":"parsing cluster definition","caller":"/workspace/internal/cnpgi/operator/reconciler.go:61"}
{"level":"debug","ts":"2025-06-30T06:11:50.225403843Z","msg":"parsing barman object configuration","name":"cluster-example","namespace":"cnpg-system","caller":"/workspace/internal/cnpgi/operator/reconciler.go:75"}
{"level":"info","ts":"2025-06-30T06:11:50.225514962Z","msg":"Pre hook reconciliation completed","name":"cluster-example","namespace":"cnpg-system"}
{"level":"info","ts":"2025-06-30T06:11:50.339214842Z","logger":"lifecycle","msg":"Lifecycle hook reconciliation start"}
{"level":"info","ts":"2025-06-30T06:11:50.339665074Z","logger":"lifecycle","msg":"Reconciling pod"}
{"level":"debug","ts":"2025-06-30T06:11:50.340237236Z","logger":"plugin-barman-cloud-lifecycle","msg":"generated patch","podName":"cluster-example-3","caller":"/workspace/internal/cnpgi/operator/lifecycle.go:269","content":"[{\"op\":\"add\",\"path\":\"/spec/volumes/4\",\"value\":{\"name\":\"plugins\",\"emptyDir\":{}}},{\"op\":\"add\",\"path\":\"/spec/volumes/5\",\"value\":{\"name\":\"barman-certificates\",\"projected\":{\"sources\":null}}},{\"op\":\"add\",\"path\":\"/spec/initContainers/1\",\"value\":{\"name\":\"plugin-barman-cloud\",\"image\":\"ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar:v0.5.0\",\"args\":[\"instance\"],\"env\":[{\"name\":\"PGDATA\",\"value\":\"/var/lib/postgresql/data/pgdata\"},{\"name\":\"POD_NAME\",\"value\":\"cluster-example-3\"},{\"name\":\"NAMESPACE\",\"value\":\"cnpg-system\"},{\"name\":\"CLUSTER_NAME\",\"value\":\"cluster-example\"},{\"name\":\"PSQL_HISTORY\",\"value\":\"/controller/tmp/.psql_history\"},{\"name\":\"PGPORT\",\"value\":\"5432\"},{\"name\":\"PGHOST\",\"value\":\"/controller/run\"},{\"name\":\"TMPDIR\",\"value\":\"/controller/tmp\"},{\"name\":\"SPOOL_DIRECTORY\",\"value\":\"/controller/wal-restore-spool\"},{\"name\":\"CUSTOM_CNPG_GROUP\",\"value\":\"postgresql.cnpg.io\"},{\"name\":\"CUSTOM_CNPG_VERSION\",\"value\":\"v1\"},{\"name\":\"AWS_REQUEST_CHECKSUM_CALCULATION\",\"value\":\"when_required\"},{\"name\":\"AWS_RESPONSE_CHECKSUM_VALIDATION\",\"value\":\"when_required\"}],\"resources\":{\"requests\":{\"cpu\":\"250m\",\"memory\":\"64Mi\"}},\"restartPolicy\":\"Always\",\"volumeMounts\":[{\"name\":\"barman-certificates\",\"mountPath\":\"/barman-certificates\"},{\"name\":\"pgdata\",\"mountPath\":\"/var/lib/postgresql/data\"},{\"name\":\"scratch-data\",\"mountPath\":\"/run\"},{\"name\":\"scratch-data\",\"mountPath\":\"/controller\"},{\"name\":\"shm\",\"mountPath\":\"/dev/shm\"},{\"name\":\"pg-wal\",\"mountPath\":\"/var/lib/postgresql/wal\"},{\"name\":\"plugins\",\"mountPath\":\"/plugins\"}],\"startupProbe\":{\"exec\":{\"command\":[\"/manager\",\"healthcheck\",\"unix\"]},\"timeoutSeconds\":10,\"failureThreshold\":10},\"securityContext\":{\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"runAsNonRoot\":true,\"readOnlyRootFilesystem\":true,\"allowPrivilegeEscalation\":false,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}}}},{\"op\":\"add\",\"path\":\"/spec/containers/0/volumeMounts/5\",\"value\":{\"name\":\"plugins\",\"mountPath\":\"/plugins\"}}]"}
{"level":"info","ts":"2025-06-30T06:11:50.342558264Z","logger":"lifecycle","msg":"Lifecycle hook reconciliation start"}
{"level":"info","ts":"2025-06-30T06:11:50.342927602Z","logger":"lifecycle","msg":"Reconciling pod"}
```
```
{"level":"info","ts":"2025-06-30T06:10:20.892168744Z","msg":"Cluster has become healthy","controller":"cluster","controllerGroup":"postgresql.cnpg.io","controllerKind":"Cluster","Cluster":{"name":"cluster-example","namespace":"cnpg-system"},"namespace":"cnpg-system","name":"cluster-example","reconcileID":"07805cef-6ab2-4ddf-9676-f9540774ce74"}
{"level":"info","ts":"2025-06-30T06:11:49.610067684Z","logger":"backup-resource","msg":"Defaulting for Backup","version":"v1","name":"backup-example","namespace":"cnpg-system"}
{"level":"info","ts":"2025-06-30T06:11:49.616925609Z","logger":"backup-resource","msg":"Validation for Backup upon creation","version":"v1","name":"backup-example","namespace":"cnpg-system"}
{"level":"info","ts":"2025-06-30T06:11:49.747317895Z","msg":"Starting backup","controller":"backup","controllerGroup":"postgresql.cnpg.io","controllerKind":"Backup","Backup":{"name":"backup-example","namespace":"cnpg-system"},"namespace":"cnpg-system","name":"backup-example","reconcileID":"6b8b8b08-11e4-4f5c-8e94-b20f7cfd54d4","cluster":"cluster-example","pod":"cluster-example-2"}
{"level":"info","ts":"2025-06-30T06:11:49.96993148Z","msg":"Backup is already running on","controller":"backup","controllerGroup":"postgresql.cnpg.io","controllerKind":"Backup","Backup":{"name":"backup-example","namespace":"cnpg-system"},"namespace":"cnpg-system","name":"backup-example","reconcileID":"4507ee3d-9fd3-4316-b76f-c9c6fa207d65","cluster":"cluster-example","pod":"cluster-example-2","started at":""}
```
```
{"level":"info","ts":"2025-06-30T06:11:49.965084729Z","msg":"Plugin backup started","pluginConfiguration":{"name":"barman-cloud.cloudnative-pg.io"},"backupName":"backup-example","backupNamespace":"backup-example","logging_pod":"cluster-example-2"}
{"level":"error","ts":"2025-06-30T06:11:51.522984631Z","msg":"Error while calling Backup, failing","pluginName":"barman-cloud.cloudnative-pg.io","logging_pod":"cluster-example-2","error":"rpc error: code = Unknown desc = exit status 3","stacktrace":"github.com/cloudnative-pg/machinery/pkg/log.(*logger).Error\n\tpkg/mod/github.com/cloudnative-pg/machinery@v0.2.0/pkg/log/log.go:125\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cnpi/plugin/client.(*data).Backup\n\tinternal/cnpi/plugin/client/backup.go:154\ngithub.com/cloudnative-pg/cloudnative-pg/pkg/management/postgres/webserver.(*PluginBackupCommand).invokeStart\n\tpkg/management/postgres/webserver/plugin_backup.go:117"}
{"level":"error","ts":"2025-06-30T06:11:51.523125378Z","msg":"Backup failed","logging_pod":"cluster-example-2","error":"rpc error: code = Unknown desc = exit status 3","stacktrace":"github.com/cloudnative-pg/machinery/pkg/log.(*logger).Error\n\tpkg/mod/github.com/cloudnative-pg/machinery@v0.2.0/pkg/log/log.go:125\ngithub.com/cloudnative-pg/cloudnative-pg/pkg/management/postgres/webserver.(*PluginBackupCommand).markBackupAsFailed\n\tpkg/management/postgres/webserver/plugin_backup.go:172\ngithub.com/cloudnative-pg/cloudnative-pg/pkg/management/postgres/webserver.(*PluginBackupCommand).invokeStart\n\tpkg/management/postgres/webserver/plugin_backup.go:124"}
{"level":"info","ts":"2025-06-30T06:14:29.786853273Z","logger":"postgres","msg":"record","logging_pod":"cluster-example-2","record":{"log_time":"2025-06-30 06:14:29.786 UTC","process_id":"27","session_id":"68622a19.1b","session_line_num":"1","session_start_time":"2025-06-30 06:09:29 UTC","transaction_id":"0","error_severity":"LOG","sql_state_code":"00000","message":"restartpoint starting: time","backend_type":"checkpointer","query_id":"0"}}
{"level":"info","ts":"2025-06-30T06:14:34.11099954Z","logger":"postgres","msg":"record","logging_pod":"cluster-example-2","record":{"log_time":"2025-06-30 06:14:34.110 UTC","process_id":"27","session_id":"68622a19.1b","session_line_num":"2","session_start_time":"2025-06-30 06:09:29 UTC","transaction_id":"0","error_severity":"LOG","sql_state_code":"00000","message":"restartpoint complete: wrote 45 buffers (0.3%); 0 WAL file(s) added, 0 removed, 0 recycled; write=4.315 s, sync=0.002 s, total=4.325 s; sync files=10, longest=0.002 s, average=0.001 s; distance=32768 kB, estimate=32768 kB; lsn=0/5000080, redo lsn=0/5000028","backend_type":"checkpointer","query_id":"0"}}
{"level":"info","ts":"2025-06-30T06:14:34.111058351Z","logger":"postgres","msg":"record","logging_pod":"cluster-example-2","record":{"log_time":"2025-06-30 06:14:34.110 UTC","process_id":"27","session_id":"68622a19.1b","session_line_num":"3","session_start_time":"2025-06-30 06:09:29 UTC","transaction_id":"0","error_severity":"LOG","sql_state_code":"00000","message":"recovery restart point at 0/5000028","detail":"Last completed transaction was at log time 2025-06-30 06:10:44.41361+00.","backend_type":"checkpointer","query_id":"0"}}
```
Guía de contribución
Línea de trabajo
Reproduce el fallo con los manifiestos de ObjectStore, Cluster y Backup proporcionados contra el endpoint personalizado compatible con S3. Empieza por internal/cnpi/plugin/client/backup.go y pkg/management/postgres/webserver/plugin_backup.go y, después, inspecciona los logs del plugin y del pod alrededor del estado de salida 3. La tarea estará terminada cuando las copias de seguridad del plugin se completen correctamente con esta configuración o el problema tenga una causa y una solución alternativa documentadas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- go, kubernetes, postgresql
- Área
- cloud, databases, devops
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100