Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

feat: configurable plugin name, to run plugin versions side by side and upgrade in waves

Đang mở
#1,151 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
18/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go, kubernetes, postgresql
Lĩnh vực
backend, infrastructure

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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/pluginName annotation 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 ObjectStore CRD 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.

Ngôn ngữ chính
Go
Star
200
Fork
82
Merge trung bình
1 ngày 19 giờ
Pull request đã merge (30 ngày)
25

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của cloudnative-pg/plugin-barman-cloud

Tất cả issue của cloudnative-pg/plugin-barman-cloud

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.