Release notes for CloudNativePG 1.28
CloudNativePG 1.28のリリースノート
CloudNativePGの1.28マイナーリリースのユーザーに表示される変更の履歴。
変更の完全なリストについては、 commits を参照してください。
GitHubのリリースブランチで。
バージョン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プラグイン:
バージョン1.28.0
発売日 2025年12月9日
機能
クォーラムベースのフェイルオーバーが安定版に昇格 1.27.0で実験的に導入されたクォーラムベースのフェイルオーバー機能を安定したAPIに昇格させました。このデータ駆動型フェイルオーバーメカニズムは、
spec.postgresql.synchronous.failoverQuorumフィールドを介して構成され、以前のalpha.cnpg.io/failoverQuorumアノテーションから卒業しました。 #8589宣言的外部データ管理
DatabaseCRDを拡張することにより、外部データラッパーFDWの包括的な宣言管理を導入しました。この機能は.spec.fdwsおよび.spec.serversフィールドを追加し、FDW拡張機能とそれに対応する外部サーバーをDatabaseリソースから直接管理できます。この作業は、LFXメンターシッププログラム2025第2期の一部として、Ying Zhu@EdwinaZhuによって実装されました。 #7942 、 #8401
変更
機能強化
primaryUpdateMethod: restartを使用する場合のイメージと構成の同時変更が有効になり、同じ操作でコンテナイメージPostgreSQLバージョンまたは拡張機能を含むとPostgreSQL構成設定を更新できます。primaryUpdateMethod: switchoverを使用する場合でも、イメージと構成の変更を個別に実行して、スイッチオーバープロセス中の構成の不一致を回避する必要があることに注意してください。 #8241デフォルトの
tcp_user_timeoutを5秒に設定することにより、レプリカインスタンスのネットワーク障害の検出が向上しました。この変更により、レプリカはサイレントネットワークドロップをより迅速に検出および回復できます。以前は、レプリカはこのような障害を検出するまでに最大127秒待機することができました。新しいタイムアウトでは、5秒以内にプライマリに再接続します。以前の動作を保持するには、オペレーター構成でSTANDBY_TCP_USER_TIMEOUTを0に設定します。 #9317CloudNativePGによって生成されたすべてのリソースクラスター、バックアップ、プーラーなどに標準の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コンテナサイドカーを正しく処理します。 #9026PGBOUNCER_IMAGE_NAMEオペレーター構成パラメーターを追加して、デフォルトのPgBouncerイメージをオーバーライドできるようにします。これは、エアギャップ環境または内部レジストリを使用する場合に役立ちます。 ( #9232 )cnpgプラグイン:
セキュリティ
PgBouncerの詳細なカスタムTLS構成を提供できます。
PoolerCRDは、.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 PUBLICATIONSQL生成を修正しました。以前に生成された構文は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はデフォルトのイメージです