feat: configurable plugin name, to run plugin versions side by side and upgrade in waves
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 18/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- go, kubernetes, postgresql
- Área
- backend, infrastructure
Línea de trabajo
Start with the constant internal/cnpgi/metadata.PluginName and the cnpg.io/pluginName Service annotation, which discovery and identity both rely on. Before coding, the maintainers need to agree on the design: a configurable name, per-instance RBAC and object keys, and a shared ObjectStore CRD. Done means two plugin deployments with different names can serve different Clusters without touching each other's objects.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Is your feature request related to a problem?
Upgrading the plugin restarts every Cluster that uses it at the same time. The sidecar image comes from the plugin deployment (SIDECAR_IMAGE), so a new plugin version changes the instance pod spec of every Cluster that references barman-cloud.cloudnative-pg.io, and the operator rolls all of them. On a test cluster this was a 41 s outage for single-instance Clusters and a 12 s switchover for HA ones, all within the same minutes. There's no in-place path for the sidecar, unlike the instance manager's ENABLE_INSTANCE_MANAGER_INPLACE_UPDATES.
Where many independent databases share one Kubernetes cluster, we'd like to roll a plugin upgrade out in waves, the way a Postgres minor version can be moved one ImageCatalog at a time. Today that isn't possible: the plugin's name is a constant (internal/cnpgi/metadata.PluginName), so two plugin deployments at different versions can't run side by side. ObjectStore.spec.instanceSidecarConfiguration sets env, resources, args and log level, but not the sidecar image.
Describe the solution you'd like
A configurable plugin name: a flag or env var on the plugin deployment, defaulting to barman-cloud.cloudnative-pg.io. Then several plugin deployments can run side by side (for example barman-cloud-w1.cloudnative-pg.io and barman-cloud-w2.cloudnative-pg.io, each with its own sidecar image). Each Cluster names the instance it uses in .spec.plugins[].name, and an upgrade moves one instance at a time.
Details we expect it would need:
- The name used for plugin discovery (the Service's
cnpg.io/pluginNameannotation and the identity response) and the name the sidecar and operator compare against both come from that setting. - The RBAC and resources the plugin creates per Cluster are keyed so that two instances never manage the same Cluster's objects.
- The
ObjectStoreCRD stays shared. Instances at different versions must accept the same CRD version, which is already the case for patch releases.
Describe alternatives you've considered
- A sidecar image field on
ObjectStore: per database rather than per wave, and a larger change. - Operator
CLUSTERS_ROLLOUT_DELAY: spaces the restarts out, but it is one cluster-wide queue that can't be aligned with maintenance windows. - The in-tree
barmanObjectStore: deprecated.
Additional context
We'd be glad to send a PR if the approach is acceptable.
- Lenguaje dominante
- Go
- Estrellas
- 200
- Forks
- 82
- Merge medio
- 2 d 6 h
- PR fusionados (30 d)
- 19
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cloudnative-pg/plugin-barman-cloud
-
Wrong `ObjectStore` key logged when the backup object store can't be retrieved in the instance sidecarPosiblemente ocupada @BoxBoxJason la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
cloudnative-pg/plugin-barman-cloud#1142 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
cloudnative-pg/plugin-barman-cloud#1117 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
data.compression rejects zstd although barman-cloud-backup supports itPosiblemente ocupada @dgsardina la tomó hace 11 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
cloudnative-pg/plugin-barman-cloud#1104 · 4 reacciones ·
Los mantenedores suelen responder en 1 día
-
Add RBAC aggregation labels to ObjectStore editor/viewer ClusterRolesPosiblemente ocupada @stefanpeknik la tomó hace 30 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
cloudnative-pg/plugin-barman-cloud#1102 ·
Los mantenedores suelen responder en 1 día
-
Prefetched WAL segments are not returned until the whole batch finishesPosiblemente ocupada @Kobayashi-UwU la tomó hace 7 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
cloudnative-pg/plugin-barman-cloud#1149 ·
Los mantenedores suelen responder en 1 día
Todos los issues de cloudnative-pg/plugin-barman-cloud
Issues similares
-
bug
Dificultad 2/5 Medio día Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
kubernetes-sigs/external-dns#6816 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
ANSI translator ignores SGR 22/24 (and other attribute-off codes): bold and underline never turn offAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Named Tuple element with a space in its name fails to parsePosiblemente ocupada @spicysharkco la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ClickHouse/clickhouse-go#2073 ·
Los mantenedores suelen responder en 1 día