Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#1,151 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
18/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
go, kubernetes, postgresql

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
Go
スター
200
フォーク
82
平均マージ
2日 6時間
マージ済み PR(30日)
19

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

cloudnative-pg/plugin-barman-cloud のほかの issue

cloudnative-pg/plugin-barman-cloud の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。