cozystack/api/apps/v1alpha1
Aleksei Sviridkin bdaaae92e2
feat(postgres): add serverName parameter for backup recovery (#2362)
## Summary

Add `serverName` field to bootstrap configuration to support backup
recovery when the Barman server name in `backup.info` differs from the
Kubernetes cluster name.

This fixes "no target backup found" errors during CloudNativePG recovery
operations.

## Problem

CloudNativePG forms the backup path as `destinationPath + "postgres-" +
oldName`, but searches for backups using the `server_name` field from
`backup.info`. When these values don't match (e.g., cluster name is
`grafana` but `server_name` is `cloud`), recovery fails with "no target
backup found".

## Solution

- Add optional `serverName` parameter to `bootstrap` configuration
- When specified, CloudNativePG uses this value to search for backups in
S3
- Falls back to `oldName` when `serverName` is not provided (backwards
compatible)

## Changes

- Add `ServerName` field to PostgreSQL CRD type definition
- Add conditional `serverName` to Cluster `externalClusters` template  
- Update `values.yaml` and README.md with `serverName` documentation
- Regenerate `values.schema.json` and `postgres.yaml` CRD

## Test plan

- [ ] Deploy postgres cluster with backups enabled
- [ ] Create backup
- [ ] Create new postgres instance with `bootstrap.enabled=true`,
`bootstrap.oldName=<original-name>`, and
`bootstrap.serverName=<value-from-backup.info>`
- [ ] Verify recovery completes successfully

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added an optional bootstrap.serverName setting to specify the Barman
server name from the original cluster’s backup.info (used when that
server name differs from the Kubernetes cluster name).

* **Documentation**
* Clarified that bootstrap.oldName must match the serverName value
recorded in backup.info; updated docs and examples to reflect the new
bootstrap.serverName option.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-28 15:32:57 +03:00
..
bucket [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
clickhouse [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
foundationdb [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
harbor [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
httpcache [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
kafka [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
kubernetes feat(kubernetes): make wait-for-kubeconfig image overridable for air-gapped registries 2026-04-27 13:50:08 +03:00
mariadb [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
mongodb [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
nats [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
openbao [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
opensearch [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
postgresql docs(postgres): clarify bootstrap field descriptions 2026-04-21 14:34:30 +03:00
qdrant [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
rabbitmq [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
redis [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
tcpbalancer [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
tenant [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
vmdisk [api] Regenerate deepcopy and CRD manifests via make generate 2026-04-14 19:59:19 +05:00
vminstance [vm-instance] Add externalAllowICMP knob, drop in-PR changelog 2026-04-28 08:37:13 +02:00
vpc [api] Regenerate deepcopy and CRD manifests via make generate 2026-04-14 19:59:19 +05:00
vpn [docs] Fixed controller-gen markers 2026-03-25 15:57:25 +05:00
go.mod [docs] Added go types codegeneration for managed apps 2026-03-25 15:57:13 +05:00
go.sum [docs] Added go types codegeneration for managed apps 2026-03-25 15:57:13 +05:00