Release notes for CloudNativePG 1.28

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

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

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

バージョン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_TIMEOUT0 に設定します。 #9317

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

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

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

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

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

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

  • 識別と管理を簡単にするために、PostgreSQL majorVersionBackup オブジェクトのステータスに追加しました。 ( #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 の下のclientTLSSecretclientCASecretserverTLSSecret 、および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はデフォルトのイメージです