cloudnative-pg / cloudnative-pg/plugin-barman-cloud

Invalid value: "object": BackupSpec is immutable once set

Open
#610 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Go
Stars
191
Forks
72
Avg merge
1d 16h
Merged PRs (30d)
18

Description

Hi, Team !

I'm doing migrations from Barman Native to Barman Plugin (0.7.0) using the same set of commands.

I have two setups:
1) CNPG 1.26.1
2) CNPG 1.27.0

My configs are:

```
tee $cluster_name.yaml.NATIVE << EOF
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: $cluster_name
namespace: $oname-system
spec:
instances: 3
imageName: $cnpg_image_name
storage:
size: 1Gi
backup:
retentionPolicy: "1d"
barmanObjectStore:
destinationPath: s3://cluster-backups/
endpointURL: http://minio-service:9000
s3Credentials:
accessKeyId:
name: minio-creds
key: ACCESS_KEY_ID
secretAccessKey:
name: minio-creds
key: ACCESS_SECRET_KEY
wal:
compression: gzip
EOF
```

```
tee barman-backup.yaml.NATIVE << EOF
apiVersion: postgresql.cnpg.io/v1
kind: Backup
metadata:
name: barman-backup
namespace: $oname-system
spec:
cluster:
name: $cluster_name
target: prefer-standby
EOF
```

```
tee minio-store.yaml << EOF
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: minio-store
namespace: $oname-system
spec:
configuration:
destinationPath: s3://cluster-backups/
endpointURL: http://minio-service:9000
s3Credentials:
accessKeyId:
name: minio-creds
key: ACCESS_KEY_ID
secretAccessKey:
name: minio-creds
key: ACCESS_SECRET_KEY
wal:
compression: gzip
retentionPolicy: "1d"
EOF
```

```
tee $cluster_name.yaml.PLUGIN << EOF
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: $cluster_name
namespace: $oname-system
spec:
instances: 3
imagePullPolicy: Always
imageName: $cnpg_image_name
storage:
size: 1Gi
plugins:
- name: barman-cloud.cloudnative-pg.io
isWALArchiver: true
parameters:
barmanObjectName: minio-store
EOF
```

```
tee barman-backup.yaml.PLUGIN << EOF
apiVersion: postgresql.cnpg.io/v1
kind: Backup
metadata:
name: barman-backup
namespace: $oname-system
spec:
cluster:
name: $cluster_name
method: plugin
pluginConfiguration:
name: barman-cloud.cloudnative-pg.io
target: prefer-standby
EOF
```

The set of commands is:
a) `kubectl apply --server-side -f $oname-$cnpg_full_version.yaml`
b) `kubectl apply -f minio.yaml`
c) `kubectl apply -f $cluster_name.yaml.NATIVE`
d) `kubectl apply -f barman-backup.yaml.NATIVE`
e) `kubectl apply -f cert-manager.yaml`
f) `kubectl apply -f manifest.yaml`
g) `kubectl apply -f minio-store.yaml`
h) `kubectl apply -f $cluster_name.yaml.PLUGIN`
i) `kubectl apply -f barman-backup.yaml.PLUGIN`

This set of commands works fine for the setup 1) (CNPG 1.26.1).
However for the setup 2) (CNPG 1.27.0) I have the following message for the step i)

```
[alexey@wsl2 ~]$ kubectl apply -f barman-backup.yaml.PLUGIN
The Backup "barman-backup" is invalid: spec: Invalid value: "object": BackupSpec is immutable once set
```

What's wrong with it ?

Contributor guide

Open the contributing guide

Research direction

Start with the CNPG 1.26.1 and 1.27.0 manifests, especially barman-backup.yaml.NATIVE and barman-backup.yaml.PLUGIN, and reproduce step i with kubectl apply. Trace where BackupSpec immutability is validated and compare the native-to-plugin migration sequence. Done means the documented command sequence either applies successfully on CNPG 1.27.0 or the incompatibility and required configuration are clearly documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes, postgresql
Domain
databases, devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.