CloudNativePG 1.16 のリリース ノート

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

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

GitHub のリリース ブランチにあります。

バージョン 1.16.5

リリース日: 2022 年 12 月 21 日

警告

バージョン 1.16 はサポート終了 (EOL) になりました。バージョン 1.16.5 は、1.16 マイナー バージョン用にリリースされる最後のバージョンです。

重要なお知らせ:

  • Armando Ruocco (@armru) を新しい CloudNativePG メンテナーとして表彰 (#1167)

  • ARMv7 サポートを削除 (#1092)

  • 1.16 の最終パッチ リリース: 1.16.5。リリース 1.16 はサポート終了です。

機能強化:

  • kubectl-cnpg プラグイン用の rpm/deb パッケージを追加 (#1008)

  • 新しいクラスター定義のデフォルトの PostgreSQL バージョンを 15.1 に更新 (#908)

  • ドキュメンテーション - CNPG サンドボックスへの参照を削除 (#1120) - CNPG サンドボックスは廃止され、クイックスタート ドキュメントの監視に関する指示が優先されました - 「リリース更新」ディスカッションへのリンク (#1148) - リリース更新に関するディスカッションは次のようになります。リリースのアナウンスとディスカッションのデフォルト チャネル - GOVERNANCE.md にメンテナの名誉ステータスを文書化 (#1033) - メンテナが貢献を続ける準備ができていない場合にどのように進めるべきかを説明 - プル リクエストの作成手順を改善 (#1132) - 緊急時のトラブルシューティングバックアップ手順 (#1184)

修正:

  • ブートストラップの PGDATA パーミッションが適切に 750 に設定されていることを確認 (#1164)

  • 見つからない場合にのみシークレットとサービスを作成するようにします (#1145)

  • 復元時に設定済みの pg-wal を尊重 (#1216)

  • nodeToClusters マップからレプリカを除外 (#1194)

技術的な強化:

  • テスト サマリーに ciclops を使用 (#1064): ciclops GitHub アクションに依存して、E2E スイートのサマリーを提供し、そのプロジェクトから改善を継承します。

  • バックポート プル リクエスト ワークフローを追加 (#965) - リリース ブランチに注釈が付けられている場合、パッチを自動的にバックポートします。

  • e2e テスト スイートでオペレータ ログ レベルを設定可能に (#1094)

  • ラベルに基づくテスト実行を有効化 (#951)

  • Go のバージョンを 1.18 から 1.19 に更新 (#1166)

バージョン 1.16.4

リリース日: 2022 年 11 月 10 日

安全:

  • Pod と Containers に SeccomProfile を追加 (#888)

機能強化:

  • cnpg プラグインの status コマンド: - フェンスされたクラスターの表示を明確化 (#886) - レプリカ クラスターの表示を改善 (#871)

  • ドキュメンテーション: - 監視ページを改善し、Prometheus と Grafana を使用してローカル システムで CloudNativePG のオブザーバビリティ機能を評価する方法を説明します (#968) - カスタム コントローラーの設計上の理由に関するページを追加します (#918)

修正:

  • plpgsql 関数でデータベースをインポート (#974)

  • ポイントインタイム リカバリを実行する際に、最も近いバックアップを適切に見つける (#949)

  • ScheduledBackup フォーマットが Kubernetes CronJob フォーマットに従わないことを明確化 (#883)

  • 古い可能性がある Kubernetes ポッドの準備状況ではなく、インスタンス マネージャーからの Postgres 情報に基づいてフェイルオーバー ロジックを作成 (#890)

  • 新しく作成されたクラスターごとにアーカイブする WAL があることを確認します。欠落により、バックアップが機能しなくなる可能性があります (#897)

  • ドキュメントの barmanObjectStore の YAML キー名を修正 (#877)

  • krew リリースを修正 (#866)

バージョン 1.16.3

リリース日: 2022 年 10 月 6 日

機能強化:

  • コントローラー マネージャーに leaseDuration および renewDeadline パラメーターを導入して、オペレーターの展開におけるリーダー選出の構成を強化 (#759)

  • 初めて WAL ファイルをアーカイブする前に、バックアップ オブジェクト ストアが空であることをチェックするメカニズムを改善します。クラスタがブートストラップされた直後に .check-empty-wal-archive という新しいファイルが PGDATA に配置され、最初の WAL ファイルが実行された後に削除されます。正常にアーカイブされました

安全:

  • nonroot:nonroot ユーザーを使用して、distroless/static:nonroot コンテナー イメージにコピーされたインスタンス マネージャー バイナリのアクセス許可を明示的に設定 (#754)

修正:

  • スタンバイがプライマリに昇格した後、アクティブな接続をドロップします (#737)

  • ネイティブの Prometheus エクスポーターで MAPPEDMETRIC および DURATION メトリック タイプの変換を尊重する (#765)

バージョン 1.16.2

リリース日: 2022 年 9 月 6 日

機能強化:

  • PgBouncer 接続プーラーの実装で低レベルのネットワーク TCP 設定の構成を有効にします (#584)

  • cnpg.io/instanceName および cnpg.io/podRole ラベルがポッドおよび PVC に常に存在することを確認します (#632 および #680)

  • インスタンスの role ラベルを基礎となる PVC に伝播 (#634)

修正:

  • 新しいクラスタのプライマリをブートストラップするときに shared_preload_libraries を使用 (#642)

  • オペレーターの複数のインプレース アップグレード プロセスが同時に実行されないようにするには、別のプロセスが進行中かどうかをアトミックにチェックします (#655)。

  • 新しくアップロードされたインスタンス マネージャーを格納するためにハードコードされたファイル名を使用しないようにし、オペレーターのオンライン アップグレード中に競合状態が発生するのを防ぎます (#660)

  • GetAllAccessibleDatabases の呼び出し時にパニックが発生しないように (#641)

バージョン 1.16.1

リリース日: 2022 年 8 月 12 日

機能強化:

  • PostgreSQLのhuge_pages オプションの設定を有効化 (#456)

  • フェイルオーバーまたはスイッチオーバー後の昇格および降格中のログを強化し、昇格のリクエストから実際に書き込みが可能になるまでの経過時間を出力する (#371)

  • クラスタステータスにPostgreSQLクラスタのタイムラインを導入 (#462)

  • ジョブ、ポッド、および PVC に instanceName および clusterName ラベルを追加して、これらのリソースとの相互作用を改善 (#534)

  • PostGIS クラスターの作成方法に関する説明を追加 (#570)

安全:

  • securityContext を Pooler デプロイメントに明示的に割り当てる (#485)

  • 内部 Web サーバーに読み取りタイムアウト値を追加して、Slowloris DDoS を防止 (#437)

修正:

  • 再起動 (stopDelay ) と切り替え (switchoverDelay ) に正しい遅延を使用します。これは、以前に誤って交換されたためです。 switchoverDelay が設定されておらず、デフォルト値の 40000000 秒を使用している場合、再起動が無期限にブロックされる可能性があるため、これは重要な修正です (#531)

  • クエリがエラーを返したときにメトリクス コレクターがパニックを引き起こさないようにする (#396)

  • 場合によってはログ レベルに関係なくセグメンテーション違反につながる、未チェックのポインターを参照していた安全でないデバッグ メッセージを削除 (#491)

  • クラスターにアノテーションがない場合のフェンシング時のパニックを防止 (#512)

  • TLS 証明書が変更されていない場合、CRD の更新を回避 (#501)

  • CRD に証明書を挿入する際の競合の処理 (#547)

  • データベースのインポート: - データベースのインポートで pg_restore を実行中に postgres ユーザーを使用 (#411) - オリジン外部サーバーとの SSL 接続を制御するために、モノリスのインポート ケースで sslmode を明示的に設定する要件を文書化 (#572) - 妨げていたバグを修正connectionParameters で dbname が指定されたときの動作からのインポート (#569)

  • バックアップと復元: - Google Cloud でオブジェクト ストアの資格情報を正しく渡す (#454)

マイナーな変更:

  • デフォルトのオペランド イメージを PostgreSQL 15.0 に設定します。

バージョン 1.16.0

リリース日: 2022 年 7 月 7 日 (マイナー リリース)

特徴:

  • PostgreSQLのオフラインデータインポートとメジャーアップグレード: bootstrap.initdb.import セクションを導入して、PostgreSQL 論理バックアップの概念を使用して、真新しい CloudNativePG クラスター内の既存の PostgreSQL インスタンス (Kubernetes の外部であっても) からネットワーク経由でオブジェクトをインポートする方法を提供します。 (pg_dump /pg_restore )。同じ方法を使用して、新しいクラスターで PostgreSQL のメジャー アップグレードを実行できます。この機能では、microservice (新しいクラスターに 1 つのデータベースのみをインポート) と monolith (既存のインスタンスから選択したデータベースとロールをインポート) の 2 種類のインポートが導入されています。

  • ラベルに基づく同期レプリケーションの非アフィニティ ルール: 同期レプリカが、プライマリが実行されているノードとは異なる特性を持つノード (アベイラビリティ ゾーンなど) で実行されていることを確認します。

機能強化:

  • 1 つ以上のインスタンスがフェンシングされている場合にフェイルオーバーを無効にする既存の制限を削除することにより、フェンシングを改善します

  • DROP EXTENSION IF EXISTS を不必要に実行する代わりに、拡張機能がカタログに存在するかどうかをチェックすることで、自動化された拡張機能管理フレームワークを強化します。

  • スイッチオーバーおよびフェイルオーバー中のインスタンス マネージャーのロギングを改善

  • オブジェクト ストアから復元するとき、または pg_basebackup を介してインスタンスを複製するときに、アプリケーションのデータベースの名前、その所有者、および関連するシークレットの再定義を有効にします (これは、これまで initdb ブートストラップでのみ可能でした)。

  • バックアップと復旧: - PostgreSQL 15 の将来のサポートのためにBarman >= 3.0.0 が必要です - inheritFromAzureAD オプションを介してBarman Cloud バックアップ用の Azure AD Workload Identity を有効にします - バックアップと復旧の両方のために AWS (AWS_DEFAULT_REGION ) でリージョンを定義するために barmanObjectStore.s3Credentials.region を導入しますオブジェクトストア

  • Kubernetes 1.24 のサポート

変更点:

  • デフォルトのオペランド イメージを PostgreSQL 15.0 に設定します。

  • バックアップと WAL アーカイブのための独自の実装に依存する代わりに、Kubernetes API の条件を使用します

修正:

  • PostgreSQL サーバーの CSV ログ パイプを開始する WithActiveInstance 関数内の初期化順序を修正し、クラスターの初期化フェーズで適切なログを確保します - これは、バックアップからの回復などのブートストラップ操作で特に役立ちます (このパッチの前に、そのようなログ標準出力チャネルに送信されず、永久に失われました)

  • ホット スタンバイの機密パラメータが減少し、プライマリがすでに再起動されている場合に、不要なスイッチオーバーを回避する

  • ALTER ROLE ステートメントでロール名を適切に引用する

  • バックアップとリカバリ: - PITR の最も近いBarmanバックアップを検出するアルゴリズムを修正します。これは、要求されたリカバリ タイムスタンプをバックアップの終了ではなく開始と比較していました。 - トランザクション ID、名前付きの復元ポイント、またはrecoveryTarget セクションに backupID と呼ばれる新しいフィールドを提供することによる「即時」ターゲット - barman-cloud-wal-archive および barman-cloud-backup コマンドを呼び出す暗号化パラメーターを修正 - 現在のクラスター名と一致しないサーバー名を使用してバックアップ オブジェクト ストアから復元するときに barmanObjectStore.serverName オプションを無視しないようにする

  • cnpg プラグイン: - ユーザーが指定した場合、プラグインが -n パラメーターに準拠していることを確認します - status コマンドを修正して、結果をソートし、出力のばらつきを取り除きます