Release notes for CloudNativePG 1.28

CloudNativePGの1.28マイナーリリースのユーザーに表示される変更の履歴。

変更の完全なリストについては、 commits を参照してください。

GitHubのリリースブランチで。

バージョン1.28.4

発売日 2026年6月29日

警告

これは、1.28.xシリーズの最後のリリースです。 1.28はサポートされていないため、新しいマイナーバージョンにアップグレードすることを強くお勧めします。

重要な変更

  • ネイティブツリー内Barman Cloudサポートの非推奨通知を更新して、1.30.0ではなくCloudNativePG 1.31.0で削除されることを反映しています。ユーザーは引き続きBarman Cloudプラグインに移行することをお勧めします。 ( #11083 )

  • cluster 参照は、Database 、Pooler 、Publication 、Subscription 、およびScheduledBackup リソースで不変になりました。別のクラスターでこれらのオブジェクトのいずれかをポイントすることには、明確に定義されたセマンティクスがなく、以前はコントローラを一貫性のない状態のままにしました。更新は、CEL検証ルールを介してAPIサーバーで拒否されるようになりました。 ( #10743 )

機能強化

  • ラベルセレクターをCluster スケールサブリソースstatus.selector に追加し、Cluster を垂直ポッドオートスケーラーVPAおよび水平ポッドオートスケーラーHPAの有効なtargetRef にします。Cluster をインスタンスポッドにマッピングできるようになりました。 @sebv004による寄稿。 ( #8996 )

  • プライマリポッドがkubeletパースペクティブからReady であるが、オペレーターの/pg/status チェックが失敗し、フェイルオーバーが遅延される場合、オペレーターはCluster でWarning PrimaryStatusCheckFailed イベントを発行するようになり、ユーザーにkubectl describe cluster を介して遅延を可視化します。 ( #10509 )

  • オペレーターは、ポッドがロールされたときにCNPG-iプラグインを自動的にリロードするようになりました。EndpointSlices バッキングプラグインServices を監視し、新しいポッドがReady になるとプラグインを使用してすべてのクラスターを再エンキューするため、アップグレードされたプラグインは待機せずに選択されます次の再同期。 ( #10836 )

セキュリティとサプライチェーン

  • ``CVE-2026-55769`` / ``GHSA-x8c2-3p4r-v9r6`` オペレーター発行の接続での``search_path`` ピンニング データベース所有者はpublic スキーマにオーバーロードされたビルトイン演算子を植え、search_path を変更して、クラスタースーパーユーザーとして実行される演算子イントロスペクションプローブがこれらのオーバーロードを解決できるようにpg_catalog の前に、 COPY ... FROM PROGRAM を介してポッド内RCEにつながる可能性があるCWE-426 特権エスカレーションチェーンCVE-2018-1058 と同じクラス。オペレーターは、プールされたすべての接続にsearch_path = pg_catalog, public, pg_temp を固定するため、起動メッセージで出荷され、テナント制御のデフォルトより優先されます。 ( #10774 、

GHSA-x8c2-3p4r-v9r6 )

  • ``CVE-2026-55765`` / ``GHSA-w3gf-xc94-wvmj`` オペレーターサイドのSCRAM-SHA-256パスワードエンコーディング オペレーターは現在SCRAM-SHA-256がCREATE /ALTER ROLE ... PASSWORD を発行する前にクリアテキストロールパスワードをエンコードするため、リテラルPostgreSQLが解析およびpg_stat_statements などの拡張機能またはpgaudit がキャプチャする場合があります)は、平文シークレットではなくSCRAMベリファイアです。事前ハッシュされたMD5またはSCRAM値は変更せずに転送され、シークレットごとのアノテーションcnpg.io/passwordPassthrough: "enabled" はオプトアウトします。 ( #10724 、

GHSA-w3gf-xc94-wvmj )

変更

  • Kubernetes 1.35のサポートを追加し、Kubernetes 1.36での単体テストを有効にしました。 ( #10900 )

  • デフォルトのPostgreSQLバージョンを18.4に更新しました。 ( #10719 )

  • パブリッククラウドプロバイダーでオペレーターのテストに使用されるKubernetesバージョンを更新しました。 ( #10720 , #10563 , #11033 )

修正

  • 有効なPostgreSQLパラメーター名ではないキーを受け入れるspec.postgresql.parameters を修正しました。これにより、postgresql.conf に任意の指示子を注入する可能性があります。キー名がWebhookによって検証されるようになりました。 ( #11029 )

  • クラスターがレプリカに降格された後、古いプライマリ側のステータスを報告する宣言的なDatabase 、Publication 、およびSubscription オブジェクトを修正しました。コントローラはレプリカの状態を再チェックし、Cluster を監視するようにして、降格がすぐに検出されるようにします。 ( #10871 )

  • 対応するJob およびPVCが作成される前にインスタンスシリアルカウンタが進められたことが原因で発生した非シークエンシャルのポッド名たとえば -1 、-3 を修正した。バンプは、これらのリソースが存在した場合にのみ持続されるようになりました。 ( #10491 )

  • WAL-archiverプラグインが既存のクラスターで有効になっている場合のスイッチオーバーデッドロックを修正しました。primaryUpdateMethod: switchover では、クリーンな降格にはまだ不足しているアーカイバーサイドカーが必要であるため、プライマリをロールアウトできませんでした。オペレーターはプライマリポッドを再作成するため、サイドカーが挿入され、アーカイブが再開されます。このチェックは、 Barman CloudプラグインなどのネイティブサイドカーrestartPolicy: Always を備えたinitコンテナとしてアーカイバーを注入するプラグインもカバーしています。 ( #11032 , #11059 )

  • インスタンス作成ジョブがバックオフ制限を使い果たしたときに、クラスターがSetting up primary に無期限に滞在する問題を修正した。オペレーターは、ターミナルジョブの障害を検出し、クラスターを回復不可としてマークし、失敗したジョブに名前を付け、そのログをポイントします。 ( #11035 )

  • ファイナライザーリコンサイラーの前にレプリカゲートが実行され、ファイナライザーがリリースされない、レプリカクラスターのTerminating で行き詰まったDatabase 、Publication 、またはSubscription の削除を修正しました。レプリカでは、PostgreSQLオブジェクトはプライマリクラスターに残されます。 ( #10853 )

  • 生き残ったCRが所有するPostgreSQLオブジェクトをドロップするdelete 再利用ポリシーと競合する重複Database またはSubscription を修正しました。ドロップは、記録された調整に基づいてゲートされるようになりました。 ( #10870 )

  • キャッシュされたシークレットバージョンが無効化されず、パスワードが再適用されなかったため、スーパーユーザーアクセスが無効になってから再度有効になった後、postgres スーパーユーザーがロックアウトされたままになる問題を修正した。 @mhartmann-jaconiによって診断されました。 ( #10834 )

  • バックアップがrunning に到達する前に、バックアップを実行しているインスタンスマネージャーが再起動された場合たとえば、オペレーターのアップグレードに続くインプレースアップグレードによって、バックアップがstarted フェーズでスタックする問題を修正した。調整が再スケジュールされるため、失われたセッションが検出されます。 ( #10859 )

  • 並列Backup オブジェクトが競合した場合のリソースリークを修正しました。バックアップは厳密に作成時の順序で実行されるようになりました、したがって、既に実行中のバックアップが新しいバックアップにプリエンプトされることはなく、そのレプリケーションスロットとPostgreSQLセッションは、プライマリで孤立しなくなりました。 @GabriFedi97による寄稿。 ( #10747 )

  • 参照されたシークレットを取得できなかった場合に、PostgreSQLロールのパスワードをクリアするロール調整を修正しました。シークレットが利用可能になるまでロールは変更されず、アクションごとのエラーが集計されて可視性が向上します。 ( #10053 )

  • メトリックエクスポーターのセットアップエラー一般的にコントローラとの重複キーレースがロールバックしstreaming_replica 作成とウェッジレプリカ参加をロールバックしたブートストラップ障害を修正しました。 metrics-exporterステップが別のトランザクションで実行されるようになりました。 @BlaiseAntonyによる寄稿。 ( #10749 )

  • Backup は作成されたが、そのステータスパッチが着地しなかったときに発生するScheduledBackup コントローラループを修正しました。コントローラは、次の反復にAlreadyExists でループする代わりに、既存のBackup を採用するようになりました。 ( #10612 )

  • Cluster が削除されたPooler をリコンサイルするときのnilポインターパニックを修正しました。 ( #10667 )

  • すべての名前付けログパイプpostgres 、postgres.csv 、およびpostgres.json がWithActiveInstance 中にコンシューマを取得し、名前付けパイプの代わりに通常のファイルが作成されないようにブートストラップログ処理を修正しました。 ( #10043 )

  • アドレスを角かっこで囲むことにより、無効なIPv6 URLの生成を修正しました。 @Infinoidによる寄稿。 ( #10682 )

  • 構成がenabled: false を設定している場合、外部クラスタープラグインがアクティブなものとして扱われるのを修正しました。 ( #10932 )

  • 復元ジョブが古いCluster プライマリがまだ記録されておらず、タイムラインがまだ設定されていないを読み取り、その.history ファイルがスプリットブレインガードによって拒否される可能性があるオブジェクトストアからのブートストラップリカバリ中のレースを修正しました。これが発生すると、リカバリはベースバックアップのタイムラインで停止し、後のタイムラインでコミットされたトランザクションをサイレントにドロップしました。クラスタータイムラインが設定されていないときに履歴ファイルを使用できるようになりました。 @dennispidunによる寄稿。 ( #10818 )

  • サーバーとクライアントCAが同じシークレットデフォルトに解決する場合、クラスター作成中のキャッシュレースを修正しました。古いインフォーマーキャッシュは、AlreadyExists で失敗した冗長Create をトリガーし、クラスターがUnable to create required cluster objects でスタックしたままになる可能性がありました。オペレーターは、名前が一致する場合、既に取得したCAシークレットを再利用するようになりました。 ( #10989 )

  • 他のブートストラップ方法で既に適用されているのと同じプリフライトディレクトリチェックを強制することにより、既存のPGDATA たとえばレプリカポッドの再起動後を上書きまたは失敗するpg_basebackup ブートストラップパスを修正しました。これにより、静的にプロビジョニングされたPVCがサイレントに上書きされるのを防ぎます。 ( #11006 )

  • リコンサイル後のプラグインフックがエラーを返したときのHealthy とプラグイン障害フェーズ間のCluster フェーズのフラッピングを修正しました。 Healthy フェーズは、成功したリコンシリエーションの最後のステップとして登録されるため、プラグインエラーで終了するループはHealthy を報告しません。 @GabriFedi97による寄稿。 ( #10421 )

  • 外部サーバーのシークレットがローテーションされた後の古い証明書データと部分的な読み取りを修正しましたたとえば、2つの証明書から1つに縮小するCAバンドル。ファイルはアトミックに書き込まれるようになったため、libpqは常に古い値または新しい値を読み取ります。ミックスする。 @Anand-240による寄稿。 ( #10975 )

  • 短い名前の代わりにプラグインService FQDNを使用するようにプラグインの接続を修正し、クラスターレベルのプロキシがポッドに自動的に注入される際の障害を回避します。 @kdautreyによる寄稿。 ( #10921 )

  • 要求ごとのCluster 作成/更新検証Webhookメッセージからの過剰なオペレーターログノイズを修正し、info ではなくdebug にログに記録されるようになりました。 ( #10984 )

  • データPVCが作成された後、初期化ジョブが開始される前に、ステータスパッチが競合するファーストプライマリブートストラップデッドロックを修正しました。孤立した保留中のPVCがインスタンスとしてカウントされ、ブートストラップゲートをブロックしたままになります。 PVC状態リコンサイラーは、割り当てられたシリアルを再利用してブートストラップジョブを再作成します。 ( #11039 )

  • 外部クラスター名とシークレットセレクター参照が検証なしでファイルシステムパスに結合されるのを修正し、インスタンスマネージャーが接続マテリアルをダンプするときに.. コンポーネントまたはパスセパレーターが外部シークレットディレクトリをエスケープします。これらの値は検証Webhookで拒否され、書き込みサイトで再チェックされます。 @r0binakによって報告されました。 ( #11045 )

  • 古いキャッシュにより、オペレーターが既にプロビジョニングしたスナップショットを再作成し、 AlreadyExists で失敗した場合、失敗として永久にマークされる宣言的VolumeSnapshot バックアップが修正されました。既存のスナップショットがこのバックアップのラベルを運び、それを採用する場合、オペレーターは衝突を許容するようになりました。外部スナップショットとの衝突は引き続きエラーとして表面化します。 ( #11071 )

  • スナップショットが既にプロビジョニングされている場合でも、ファイナライズステップ中に一時的なインスタンスマネージャー接続エラーたとえば、短いポッドネットワークの中断からのダイヤルタイムアウトで破棄されるボリュームスナップショットバックアップを修正した。このようなネットワークエラーは、ターミナルとして扱われる代わりに再試行されるようになりました。 ( #11069 )

  • トークンの保存と移行メタデータのクリーンアップの間でリコンサイルが再キューイングされたときに、status.demotionToken を失うレプリカスイッチオーバーを修正しましたたとえば、不安定なWebhookに対して失敗したクリーンアップパッチ。空の変更なしトークンは、格納されている値をパッチして戻されません。 ( #11075 )

  • cnpg プラグイン:

  • Windowsでkubectl cnpg psql を修正しました。実行はUnix専用のシステムコールに依存し、「Windowsではサポートされていません」で失敗しました。 Windowsは子プロセスとしてkubectl exec を起動するようになりました。 @Utkarsh-sharma47による寄稿。 #10972 !– 1.29 1.28 1.25 –>

  • ロググループごとのタイマーが解放されなかった、ビジークラスターでのkubectl cnpg logs -f の無制限のメモリリークを修正しました。タイマーが反復にわたって再利用されるようになりました。 @Anand-240による寄稿。 ( #10976 )

バージョン1.28.3

発売日 2026年5月8日

セキュリティとサプライチェーン

  • ``CVE-2026-44477`` / ``GHSA-423p-g724-fr39`` メトリックエクスポーター特権エスカレーション メトリックエクスポーターはpostgres スーパーユーザーとして認証されなくなりました。 pg_monitor 特権のみを持つ専用のcnpg_metrics_exporter ロールを使用し、低特権のデータベースユーザーがPostgreSQLスーパーユーザーを取得するチェーンを閉じます。 (

GHSA-423p-g724-fr39 )

アップグレードの影響 ユーザー所有テーブルを読み取るカスタムモニタリングクエリー、またはPUBLIC CONNECT が取り消されたデータベースに対してtarget_databases: '*' を使用するカスタムモニタリングクエリーは、 cnpg_metrics_exporter に対する明示的なGRANT ステートメントが必要です。 Custom query privileges and safety および Manually creating the metrics exporter role を参照

モニタリング文書で。

レプリカクラスターの場合、ソースプライマリクラスターを使用するレプリカクラスターの前に、ソースプライマリクラスターをアップグレードします。 cnpg_metrics_exporter ロールはソースプライマリで作成され、ダウンストリームに複製されます。最初にアップグレードされたレプリカクラスターは、ソースプライマリがアップグレードされるまで、不足しているロールをスクレイピングします。上記のリンクのあるmanual-recoveryセクションでは、レプリカクラスターについてもカバーしています。

  • デフォルトのモニタリングクエリーのスキーマ修飾カタログ参照 すべてのpg_catalog オブジェクトを明示的に修飾することにより、出荷されたモニタリング構成とドキュメントサンプルを強化しました。非修飾の参照は、search_path を介して解決されます。データベースユーザーはこれを操作して、ビルトインオブジェクトをシャドウできます。 ( #10576 )

  • 検出可能なSBOMと来歴証明書 オペレーターコンテナイメージに添付されるSBOMおよびSLSA来歴がOCI 1.1リファラー仕様に従うようになったため、標準のレジストリツールとサプライチェーンスキャナーでそれらを自動的に検出できます。 ( #10601 )

  • ``github.com/jackc/pgx/v5`` のCVE修正 CVE-2026-33816 pgproto3 のメモリセーフティとGHSA-j88v-2chj-qfwx 単純プロトコルのドル引用符で囲まれた文字列処理を介したSQLインジェクションのアップストリームの修正をピックアップするためにv5.9.2にバンプされました。 ( #10436 、 #10498 )

  • GoランタイムのCVE修正 crypto/x509 、crypto/tls 、net/http 、およびnet のアップストリームの修正をピックアップするためにGo 1.26.3でビルドされています。CVE-2026-32280、CVE-2026-32281、CVE-2026-33810 、CVE-2026-33814、CVE-2026-33811、CVE-2026-39825)。 ( #10462 、 #10647 )

  • ビルドパイプラインの強化 Go 1.26.3バンプはCVE-2026-42501 cmd/go モジュールチェックサム検証にも対処し、リリースビルド中のサプライチェーンのエクスポージャを削減します。影響を受けるコードパスには、実行中のオペレーターから到達できません。 ( #10647 )

変更

  • TLSピア検証をVerifyPeerCertificate からVerifyConnection に切り替えました。これは、完了したハンドシェイクごとに実行されます前者は、再開されたTLS 1.3セッションでスキップされます。現在、CloudNativePGではセッションの再開が有効になっていないため、これに目に見える効果はありませんが、後でセッションキャッシュが導入された場合の将来的な検証になります。 ( #10478 )

修正

  • 元のプライマリがプライマリラベルを保持したフェールオーバーウィンドウを修正しました。フェイルオーバー中に一時的なネットワーク分割の後などに返された場合、 -rw サービスはそれにルーティングし続け、レプリカは再接続でき、コミットされた書き込みはpg_rewind に失われます。古いプライマリにはunhealthy のラベルが付けられ、フェールオーバー中にサービストラフィックから分離されます。 ( #10409 )

  • プライマリをホストするノードが到達不能になったときにトリガーされないフェールオーバーを修正しました。オペレーターは、そのシナリオではTrue として古いままであるContainersReady ではなく、ポッドのReady 条件kubeletがレポートを停止するとノードコントローラによってFalse に反転されるを読み取るようになりました。スプリアスフェールオーバーガード #10445 と組み合わせると、Kubernetes自分自身がポッドを準備ができていないことをマークした場合にのみフェールオーバーがトリガーされます。 ( #10448 )

  • プライマリのHTTPステータスエンドポイントでの一時的な障害によって発生した偽のフェイルオーバーを修正しました。 ( #10445 )

  • PostgreSQL構成値のバックスラッシュと制御文字のエスケープを修正しました。以前は、 log_line_prefix のようなパラメーターのこのような文字は、構成ファイルを破損するか、実行時にサイレントに削除される可能性がありました。 ( #10515 )

  • 各引数をシェル引用符で囲むようにrestore_command コンストラクトを修正しました。空白を含むdestinationPath たとえば s3://my bucket/wal などの値は、POSIXシェルによってワード分割され、別の引数としてWAL復元ツールに渡されました。 ( #10518 )

  • 入場WebフックのrecoveryTarget 検証の強化 targetXID は負でない32ビット整数であり、targetName は64バイト未満でASCII制御文字が含まれていない必要があります。不正な値は、後のPostgreSQL復旧中に失敗するのではなく、受付時に拒否されます。 ( #10565 )

  • 残りのpgsql_tmp* ディレクトリがデータディレクトリに存在する場合、スナップショットのリストアが失敗する問題を修正しました。 ( #10447 )

  • PVCストレージサイズとリソース要求が同時に変更された場合に発生するデッドロックを修正しました。 ( #10427 )

バージョン1.28.2

発売日 2026年3月31日

重要な変更

  • ネイティブツリー内Barman Cloudサポートの非推奨通知を更新して、1.29.0ではなくCloudNativePG 1.30.0で削除されることを反映しています。ユーザーは引き続きBarman Cloudプラグインに移行することをお勧めします。 ( #10167 )

機能強化

  • TLS暗号スイートと最小/最大TLSバージョンの詳細な構成のサポートによりPooler CRDを改善しました。これにより、管理者は、プーラーからクライアント、およびプーラーからサーバーへの接続に関する厳密なセキュリティコンプライアンス要件を満たすことができます。 @alex1989huによる投稿。 ( #9571 )

  • アップグレードジョブでBackoffLimit=0 を設定することにより、メジャーアップグレードの信頼性が向上し、失敗したpg_upgrade の不必要な再試行を防止します。ユーザーがコンテナイメージを元に戻すときに、オペレーターは失敗したジョブを自動的に削除するため、クラスターが元のバージョンで正常に再起動できます。 ( #10104 、 #10298 )

  • 各調整サイクルの前にインスタンスがプライマリであることを確認することによりロール管理を向上させ、読み取り専用レプリカでの不要な調整試行と偽のエラーメッセージを回避します。 ( #9971 )

  • 1.29で導入されたextensions 、bin_path 、およびenv フィールドを受け入れるようにCluster 、ImageCatalog 、およびClusterImageCatalog のCRDスキーマを拡張しました。オペレーターは古いバージョンでこれらのフィールドを無視しますが、スキーマでそれらを受け入れることにより、ユーザーは異なるCNPGバージョンを実行しているクラスター間で単一のマニフェストを共有できます。 ( #10131 、 #10387 )

  • オペレーターは、クラスターに新しいPVCを追加するときにprimaryUpdateMethod を優先するようになりました、ストレージの拡張または追加中にロールアウト戦略たとえば、スイッチオーバー対リスタートが尊重されるようにします。 ( #9720 )

  • alpha.cnpg.io/unrecoverable アノテーションロジックを洗練して、Ready 状態にまだ到達していないポッドでも機能できるようにし、スタックしたインスタンスのリカバリーを容易にします。 ( #9968 )

セキュリティとサプライチェーン

  • セキュリティベストプラクティスの統合 OpenSSFベースラインスキャナーを統合し、SECURITY-INSIGHTS.yaml ファイルをリポジトリに追加して、業界標準のセキュリティレポートと調整します。 ( #10054 , #10062 )

  • SLSA来歴とSBOM リリースバイナリとコンテナイメージにSLSAサプライチェーンレベルソフトウェアアーティファクトの来歴を追加しました。さらに、GoReleaserパイプライン内のソフトウェア部品表SBOM生成を有効にして、依存関係の透明性を向上させました。 ( #10048 , #10074 )

  • パスワード漏洩防止 PostgreSQLが特定の調整フェーズ中にログにロールパスワードを漏洩する可能性がある潜在的なセキュリティリスクを修正しました。 ( #9950 )

変更

  • デフォルトのPostgreSQLバージョンを18.3イメージ 18.3-system-trixie に更新しました。 ( #10090 )

修正

  • 同期レプリケーションを使用するクラスターに影響を与えるオペレーターのアップグレード中のデッドロックを修正しました。新旧のオペレーターバージョンを実行するポッドが異なるPostgreSQL構成ハッシュを計算し、均一性チェックが無期限にブロックされ、ローリング更新とインプレースアップグレードの両方の進行を防ぎます。 ( #10342 )

  • ディスク領域チェックがインスタンスマネージャーの起動をブロックしたため、WALディスクがいっぱいになったときにフェンシングアノテーションを処理できない問題を修正しました。チェックは、ライフサイクルループの後半で、フェンシングが評価された後、実行されるようになりました。 ( #10302 )

  • 初期ブートストラップに使用されるVolumeSnapshot が削除されている場合、レプリカがPending 状態でスタックしてしまう問題を修正しました。オペレーターは、使用前にスナップショットの存在を検証するようになりました。スナップショットが見つからない場合は、次の利用可能な候補を使用しようとするか、 pg_basebackup にフォールバックします。 ( #10192 )

  • 「監視対象プライマリ」ロールアウト戦略が、以前にスケジュールされた更新の遅延を引き起こしていた、使用可能なすべてのロールアウトスロットを消費しないようにしました。 @ermakov-olegによる寄稿。 ( #9977 )

  • 特定のホットスタンバイパラメーターの変更がレプリカクラスターに正しく適用されなかった問題を修正しました。 ( #9952 )

  • 「Continue」結果が返されたときに後続のプラグインをスキップする可能性があるCNPG-Iリコンサイラーフックのバグを修正しました。 @sharifmshakerによる寄稿。 ( #9978 )

  • 現在ポッドに接続されていないPVCのファイルシステムのサイズを変更しようとしたときに発生したデッドロックシナリオを修正しました。 @jmealoによる寄稿。 ( #9981 )

  • ConnectionParameters で構成された外部クラスターを受け入れるようにブートストラップリカバリソースのWebhook検証を修正しました pg_basebackup ベースのリカバリーの場合。以前は、 BarmanオブジェクトストアまたはCNPG-iプラグインも構成されていない限り、これらは誤って拒否されました。 ( #10268 )

  • 拡張機能とテーブルスペースのボリューム名に接頭辞が付けられ、標準のクラスターボリュームとの名前の衝突を回避します。 ( #9973 )

  • 正常でないクラスターを冬眠させる場合、オペレーターはWaitingForHealthy 条件を報告するようになり、cnpg status を介して遅延されたハイバーネーション状態を可視化します。 ( #10193 )

  • ターゲットポッドが存在しない場合でも、フェンシングが正しく動作するように修正しました。フェンシングはクラスターレベルのアノテーションで動作し、ポッドの存在に依存しないでください。インスタンス名の検証は、 cnpg fencing on コマンドでのみ実行されます。 ( #10035 )

  • クラスターおよびプーラーサービスリコンサイラーを修正して、パッチ更新戦略を使用するときにすべての仕様フィールドの変更を正しく処理します。リコンサイラーはRFC 7386 JSONマージパッチを使用するようになり、クラウドプロバイダー設定フィールド loadBalancerClass など 誤って削除されるのを防ぎます。 ( #10190 、 #10311 )

  • パラレルWALリストアに影響を与える非推奨のツリー内Barman Cloudバックアップ実装の競合状態を修正しました。ここで、プリフェッチされたファイルはダウンロード中に読み取られる可能性があり、「invalid Checkpoint Record」エラーでPostgreSQLのリカバリーが失敗します。 ( #10285 )

  • タイムライン履歴ファイルの検証を修正して、プラグインベースのWALリストアにも適用されます。以前は、 #9650 で導入された保護はツリー内リストアのみをカバーしており、プラグインがチェックをバイパスして将来のタイムライン履歴ファイルをダウンロードできるため、レプリカでタイムライン不一致エラーが発生していました。 ( #9849 )

  • cnpg プラグイン

  • cnpgプラグインは、ImagePullSecretをpgbench ジョブポッドテンプレートに正しく伝播するようになりました。 ( #10174 )

バージョン1.28.1

発売日 2026年2月5日

機能強化

  • バックアップおよびリカバリ操作のためのAzureのDefaultAzureCredential 認証メカニズムのサポートを追加しました。これは、バックアップ構成でazureCredentials.useDefaultAzureCredentials: true を設定することにより有効にでき、明示的なストレージアカウントキーまたはSASトークンを必要とせずにAzure環境での認証を簡素化します。 ( #9468 )

修正

  • アンダースコアを含むPostgreSQL拡張機能名の検証を修正しましたたとえば pg_partman 、pg_ivm 。アンダースコアを含む拡張機能名は、マウントパスに元の名前を保持しながら、Kubernetesボリューム名にハイフンを使用するように自動的にサニタイズされます。 Webhook検証は、サニタイズ後の名前の競合を防ぎます。 @shusaanさんからの投稿。 ( #9386 )

  • メジャーバージョンのアップグレード後に、クラスターステータスのTimelineID が1にリセットされない重要な問題を修正しました。 pg_upgrade は新しいタイムラインを初期化するため、古いIDたとえばタイムライン2を保持すると、レプリカがオブジェクトストレージから互換性のない履歴ファイルを復元しようとし、致命的な「要求されたタイムラインはこのサーバーの履歴の子ではありません」エラーが発生しました。 ( #9830 )

  • Pooler の古いTLSステータスフィールドが仕様から削除された後、クリアされなかった問題を修正しました。これは、ServerTLS フィールドが再利用され、PgBouncerが誤った証明書を使用し、すべてのアプリケーションの接続をブロックする「unsupportedcertificate」エラーが発生したv1.28.0にアップグレードする場合に特に重要でした。オペレーターは、構成されなくなった場合にServerCA 、ClientCA 、ClientTLS 、およびServerTLS ステータスフィールドを明示的にクリアするようになりました。 #9397

  • レプリカが将来のタイムラインからタイムライン履歴ファイルをダウンロードしようとすることにより、クラッシュループに入る可能性があるバグを修正しました。これは、古いファイルが以前のクラスターライフからWALアーカイブに残り、レプリカがリカバリ中に誤ってそれらを取得しようとした場合に発生しました。 ( #9650 )

  • 指定されたプライマリ移行中のreplica_cluster セットアップの競合状態を修正し、レプリカクラスターでの一時的な「プライマリなし」状態を防止します。 ( #9601 )

  • バックアップコントローラは、一意のインスタンスセッションIDを使用して、インスタンスマネージャーの再起動を検出するようになりました。これにより、基になるコンテナがクラッシュして再起動した場合、オペレーターがバックアップがまだ進行中であると誤って仮定するのを防ぎます。これにより、以前は孤立したバックアップオブジェクトが発生しました。 ( #9370 )

  • 明示的な資格情報ストレージキーまたはSASトークンなどを使用する場合にstorageAccount が必要とされなかったAzureオブジェクトストア構成の検証ギャップを修正しました。オペレーターは、これらの場合にストレージアカウント名が提供され、connectionString が他の認証パラメーターと相互排他的であることを適用するようになりました。 ( #9604 )

  • クラスターが削除対象としてマークされると、オペレーターがすぐにリソースのクリーンアップを開始するように、削除パスを最適化しました。これにより、内部調整ループの待機中にクラスターがTerminating ステータスに留まる時間が大幅に削減されます。 ( #9555 )

  • 機能が無効になっている場合、またはクラスターが再構成されているときに、レプリケーションスロットがレプリカから適切にドロップされない問題を修正しました。これにより、未使用のスロットがプライマリでWALのビルドアップを発生させないようになります。 ( #9381 )

  • Pooler 用に作成されたServiceAccount にimagePullSecrets が追加されない問題を修正しました。以前は、これらのシークレットは展開には適用されましたが、SAには適用されなかったため、特定のセキュリティポリシーを使用して制限された環境でイメージのプルに失敗しました。 ( #9427 )

  • オペレーターがPodMonitor を削除する前に、所有権を確認するチェックを追加しました。これにより、オペレーターが、予想されるCNPGリソースと名前を共有する手動管理モニタリングリソースを誤って削除するのを防ぎます。 @juliamertzによる寄稿。 ( #9340 )

  • pg_stat_archiver メトリックが、スイッチオーバー後にスタンバイインスタンスで古いデータを報告し続けるバグを修正しました。 PostgreSQLはプライマリで有効なアーカイバー統計のみを提供するため、エクスポーターはスタンバイでこれらのメトリックをスキップするようになりました。 ( #9411 )

  • リカバリーtargetTime のタイムスタンプ形式の解釈を明確にしました。明示的なタイムゾーンなしで提供されたタイムスタンプは、一貫してUTCとして解釈されるようになりました。 @pchovelonによる寄稿。 ( #8937 )

  • バックアップステータスの更新を修正して、コンカレント更新中の「リソースが変更されました」エラーを防ぎます。 ( #9551 )

  • バックアップポッドが見つからない場合に、正しいポッド名を使用するようにイベントレポートを修正しました。 ( #9552 )

  • 非常に多くの履歴バックアップを持つクラスターのスケジュールされたバックアップ操作のパフォーマンスの向上。 ( #9489 )

  • Database オブジェクトのファイナライザーを削除する際のエラー処理を修正しました。 ( #9431 )

  • cnpg プラグイン:

  • skipWalArchiving アノテーションがクラスターに存在する場合に「Disabled」を表示するようにstatus コマンドを更新しました。これは、WALアーカイブが意図的にバイパスされる場合の、混乱を招く「起動中」または「不明」状態を置き換えます。 #9709 !– 1.27 1.25 –>

  • logs --follow コマンドを修正して、現在のログストリームがすべて完了したときに途中で終了するのではなく、新しいポッドのポーリングを継続します。 ( #9599 )

バージョン1.28.0

発売日 2025年12月9日

機能

  • クォーラムベースのフェイルオーバーが安定版に昇格 1.27.0で実験的に導入されたクォーラムベースのフェイルオーバー機能を安定したAPIに昇格させました。このデータ駆動型フェイルオーバーメカニズムは、 spec.postgresql.synchronous.failoverQuorum フィールドを介して構成され、以前のalpha.cnpg.io/failoverQuorum アノテーションから卒業しました。 #8589

  • 宣言的外部データ管理 Database CRDを拡張することにより、外部データラッパーFDWの包括的な宣言管理を導入しました。この機能は.spec.fdws および.spec.servers フィールドを追加し、FDW拡張機能とそれに対応する外部サーバーをDatabase リソースから直接管理できます。この作業は、LFXメンターシッププログラム2025第2期の一部として、Ying Zhu@EdwinaZhuによって実装されました。 #7942 、 #8401

変更

  • デフォルトのPostgreSQLバージョンを18.1-system-trixie に更新しました。 ( #9178 )

  • 新しいPooler 展開用に、デフォルトのPgBouncerバージョンを 1.25.1 に更新しました。 ( #9367 )

機能強化

  • primaryUpdateMethod: restart を使用する場合のイメージと構成の同時変更が有効になり、同じ操作でコンテナイメージPostgreSQLバージョンまたは拡張機能を含むとPostgreSQL構成設定を更新できます。 primaryUpdateMethod: switchover を使用する場合でも、イメージと構成の変更を個別に実行して、スイッチオーバープロセス中の構成の不一致を回避する必要があることに注意してください。 #8241

  • デフォルトのtcp_user_timeout を5秒に設定することにより、レプリカインスタンスのネットワーク障害の検出が向上しました。この変更により、レプリカはサイレントネットワークドロップをより迅速に検出および回復できます。以前は、レプリカはこのような障害を検出するまでに最大127秒待機することができました。新しいタイムアウトでは、5秒以内にプライマリに再接続します。以前の動作を保持するには、オペレーター構成でSTANDBY_TCP_USER_TIMEOUT を0 に設定します。 #9317

  • CloudNativePGによって生成されたすべてのリソースクラスター、バックアップ、プーラーなどに標準のKubernetes推奨ラベルたとえば app.kubernetes.io/name を採用しました。 @JefeDavisによる寄稿。 #8087

  • ポッドレベルでsecurityContext を導入し、個々のコンテナ用にcontainerSecurityContext を導入しました postgres 、init 、サイドカーを含むこれにより、セキュリティ設定の詳細な制御が提供され、以前のクラスター全体のpostgres およびoperator ユーザー設定を置き換えます。 @x0ddfによる投稿。 #6614

  • レプリカポッドのalpha.cnpg.io/unrecoverable=true アノテーションを導入しました。このアノテーションは、適用されると、ポッドとPVCを削除することによりインスタンスを完全に削除するようにオペレーターに指示します。その後、プライマリからレプリカを再作成します。 #8178

  • ユーザー定義のモニタリングクエリーの新しいキャッシュレイヤーを導入して、PostgreSQLデータベースの負荷を削減します。 #8003

  • auth_dbname をpgbouncer データベースに自動的に設定することによりPgBouncer統合を強化し、認証セットアップを簡素化します。 #8671

  • データベースのインポート中にステージ固有のpg_restore オプション preRestore 、postRestore 、dataRestore を提供できます。 @hanshal101による寄稿。 #7690

  • 識別と管理を簡単にするために、PostgreSQL majorVersion をBackup オブジェクトのステータスに追加しました。 ( #8464 )

  • 復元プロセスを開始する前に、すべてのinitコンテナが完了するのを待機するようにクラスターの復元を強化しました。これにより、initコンテナで実行されているバックアップツールは、復元が開始される前にデータの準備を終了します。実装は、 RestartPolicy=Always を使用したサイドカーを無視することにより、Kubernetes initコンテナサイドカーを正しく処理します。 #9026

  • PGBOUNCER_IMAGE_NAME オペレーター構成パラメーターを追加して、デフォルトのPgBouncerイメージをオーバーライドできるようにします。これは、エアギャップ環境または内部レジストリを使用する場合に役立ちます。 ( #9232 )

  • cnpg プラグイン:

  • クラスターサイズの計算などのファイルシステム操作のタイムアウトを構成するためのkubectl cnpg status コマンドに--timeout フラグを追加しました。デフォルトは10秒のままですが、操作に時間がかかる場合がある大規模なクラスターの場合、調整できます。 #9201 )

  • cnpg report を改良して、よりシェルフレンドリーなファイル名を生成しました。 ( #8984 )

セキュリティ

  • PgBouncerの詳細なカスタムTLS構成を提供できます。 Pooler CRDは、 .spec.pgbouncer の下のclientTLSSecret 、clientCASecret 、serverTLSSecret 、およびserverCASecret フィールドで拡張されました。これらのフィールドにより、ユーザーはクライアントからプーラー、およびプーラーからサーバーの両方の接続に独自の証明書を提供でき、オペレーターが生成した証明書よりも優先されます。 #8692

  • オペレーターのメトリックサーバーポート8080にオプションのTLSサポートを追加しました。この機能はオプトインであり、 METRICS_CERT_DIR 環境変数を設定することにより有効にされます。これは、指定されたディレクトリでtls.crt およびtls.key ファイルを探すようにオペレーターに指示します。設定しない場合、サーバーは下位互換性のためにHTTPを使用し続けます。 #8997

  • オペレーターの展開のみを必要とすることにより、cnpg report operator が最小限の権限で動作できるようにしました。他のすべてのリソースポッド、シークレット、構成マップ、イベント、Webhook、およびOLMデータはオプショナルであり、ベストエフォートベースで収集されます。コマンドは、完全に失敗するのではなく、明確な警告をログに記録し、使用可能なデータでレポート生成を続行することにより、これらのリソースの権限エラーを適切に処理します。これにより、ユーザーが名前空間スコープの権限を制限できる最小特権アクセスが有効になります。 #8982

修正

  • 一時的なKubernetes APIサーバーの接続問題に対するすべてのプローブタイプライブネス、準備状況、およびスタートアップの復元力の向上。プローブは、短時間のネットワークの中断中にキャッシュされたクラスター定義にフォールバックするキャッシュメカニズムを使用するようになり、不必要なポッドの再起動とプローブの失敗を防ぎます。 ( #9148 )

  • CNPG-Iバックアップ/WALプラグインplugin-barman-cloud などを使用してボリュームスナップショットから復元するときに正しく実行されるようにCheckEmptyWalArchive セーフガードを修正しました。以前は、このチェックはプラグインベースの実装でスキップされていました。 ( #9306 )

  • ImageCatalogの取得が失敗した場合のエラー報告を改善しました。オペレーターはWarningイベントを発行し、NotFound エラーだけでなくすべての障害タイプのエラーをログに記録するようになり、構成の問題の可視性が向上しました。 ( #9266 )

  • cnpg.io/pluginServerName アノテーションを追加することにより、CNPG-Iプラグインに接続する際のTLS証明書検証の問題を修正しました。これにより、プラグインの証明書がサービス名とは別のDNS名を使用する環境で、証明書の検証に使用されるDNS名をカスタマイズできます。 ( #9222 )

  • インスタンスマネージャーコントローラがエラーの後に再起動に失敗し、「コントローラは既に存在します」メッセージを報告する問題を修正しました。コントローラは、後続の初期化試行にSkipNameValidation を使用するようになりました。 @mateusoliveira43による寄稿。 ( #9123 )

  • 宛先パスが絶対である場合、プラグインでの誤ったWAL復元パスの処理を修正し、パスの重複の問題を防ぎます。 @Endevirによる寄稿。 ( #9093 )

  • PostgreSQL 13+との下位互換性があるように、マルチテーブルパブリケーションのCREATE PUBLICATION SQL生成を修正しました。以前に生成された構文はPostgreSQL 15+でのみ有効であり、古いバージョンでは構文エラーが発生しました。 ( #8888 )

  • インデックスではなく名前でpostgres コンテナを確実に選択することにより、複雑なポッド定義でのバックアップの失敗を修正しました。 @Joda89による寄稿。 ( #8964 )

  • cnpg プラグイン

  • cnpg report ログ収集、特に以前のログを取得する場合のバグを修正しました。コレクターは、以前のログと現在のログを別の要求で正しく取得し、欠落している以前のログたとえば、再起動履歴のないコンテナを適切に処理し、現在のログが常に収集されるようにします。 ( #8992 )

サポートされているバージョン

  • Kubernetes 1.34、1.33、および1.32

  • PostgreSQL 18、17、16、15、および14 - PostgreSQL 18.1はデフォルトのイメージです