EDB Postgres AI for CloudNativePG™ Cluster(旧EDB Postgres for Kubernetes)1.28.1

日本語訳|EDB CloudNativePG Cluster 1.28.1

※GoogleのAutoML Translationを使用して翻訳しております。

英語原文|EDB CloudNativePG Cluster 1.28.1

概要

1. CNPG Clusterとは何か?
EDB Postgres AI for CloudNativePG Cluster は、EnterpriseDB (EDB) によって設計、開発、およびサポートされているKubernetesオペレーターです。これは、オープンソースのCloudNativePGプロジェクトから派生した、エンタープライズ向けの特化型フォーク(派生版)です。

その主な目的は、Kubernetes内部での高可用性PostgreSQLデータベースクラスターの完全なライフサイクル管理をカバーすることです。ネイティブのストリーミングレプリケーションを用いたプライマリ/スタンバイアーキテクチャを採用しており、標準のPostgreSQL、EDB Postgres Extended Server、およびOracleデータベース互換性を提供するEDB Postgres Advanced Server (EPAS) をサポートしています。

2. システム環境でCNPG Clusterを使用するメリット
CNPG Clusterオペレーターを使用してデータベースをデプロイすることで、Kubernetes環境に以下のようなエンタープライズクラスのメリットをもたらします:

  • 高可用性とビジネス継続性: 自動フェイルオーバー、自己修復機能、およびディザスタリカバリ (DR) のための複数データセンターやリージョンをまたぐ分散「レプリカクラスター」のサポートを提供します。
  • シームレスなライフサイクル管理: マイナーバージョンのゼロダウンタイム・ローリングアップデート、自動化されたキャパシティスケーリング(スケールアップ/ダウン)、および効率化されたオフラインでのインプレース・メジャーバージョンアップグレードを容易にします。
  • 堅牢なバックアップとリカバリ: ポイントインタイムリカバリ (PITR)、継続的なWrite-Ahead Log (WAL) アーカイブ、およびオブジェクトストア (AWS S3、Azure Blob、GCS) やKubernetesボリュームスナップショットを経由したバックアップをネイティブにサポートします。
  • 強化されたセキュリティ: 保存データの透過的データ暗号化 (TDE)、デフォルトのTLS/SSLクライアント・サーバー暗号化、AppArmor/Seccompプロファイル、および外部シークレットマネージャー (HashiCorp Vaultなど) との統合をサポートします。
  • パフォーマンス最適化: PgBouncerを介した組み込みのコネクションプーリング、および読み書き用と読み取り専用 (スタンバイ) のルーティングを分けるKubernetesサービスの自動作成機能を提供します。
  • 高度な可観測性 (Observability): Prometheus互換のメトリクスを標準で公開しており、管理者がデータベースの健全性、レプリケーションの遅延、ストレージの制限などを容易に監視できるようにします。

3. メリットの実現方法 / CNPG Clusterの仕組み
CNPG Clusterは、Kubernetesに深く統合されたネイティブで宣言的なアーキテクチャを通じて、これらのメリットを実現しています:

  • 宣言的なカスタムリソース (CRD): ユーザーはサーバーを手動で設定しません。代わりに、Cluster、Pooler、Backup、ScheduledBackupなどのCRDを使用して、データベースの「あるべき状態(Desired State)」を定義します。オペレーターは継続的に調整(リコンシリエーション)ループを実行し、実際の状態がこのあるべき状態と一致するように保証します。
  • カスタムPodコントローラー (StatefulSetの非使用): 競合する多くのオペレーターとは異なり、CNPGはKubernetesのStatefulSetを使用しません。PodとPersistent Volume Claim (PVC) を直接作成・管理します。このアーキテクチャ上の選択により、動的なPVCのサイズ変更が可能になり、ノード障害時のデータ破損を防ぎ、オペレーターがプライマリとレプリカの更新順序を独自にオーケストレーションできるようになります。
  • 自己完結型のインスタンスマネージャー: Patroniのような外部の高可用性ツールに依存する代わりに、CNPGは各PodにPID 1プロセスとして軽量なインスタンスマネージャーを組み込みます。このマネージャーがKubernetesのプローブ(startup、liveness、readiness)やPostgreSQLのグレースフルなシャットダウンを処理し、Kubernetes APIと直接通信してサードパーティへの依存なしでフェイルオーバーを連携します。
  • CNPG-I プラグインアーキテクチャ: バックアップとアーカイブの拡張性は、gRPCベースのプラグインインターフェース (CNPG-I) を介して処理され、Barman Cloud Plugin、Kasten、Veleroなどのツールとのシームレスな統合を可能にします。
  • シェアードナッシング・アーキテクチャ: オペレーターは、KubernetesのPodアンチアフィニティルールとノードセレクターに依存して、インスタンスが別々のワーカーノードやアベイラビリティゾーンにデプロイされることを保証し、ハードウェアやストレージレベルでの単一障害点 (SPoF) が存在しないようにします。

4. バージョン 1.28.1 の新機能
リリース 1.28.1(2025年2月10日リリース)は、1.28長期サポート (LTS) ブランチのメンテナンスリリースです。特定の機能強化と重要なバグ修正が含まれています:

主な機能強化:

  • Azure認証: バックアップおよびリカバリ操作のためのAzure DefaultAzureCredential 認証メカニズムのサポートを追加しました。これにより、明示的なストレージアカウントキーやSASトークンを必要とせずに認証が可能になり、Azure環境でのデプロイが簡素化されます。

注目すべきバグ修正:

  • Timeline ID の修正: メジャーバージョンアップグレード後に、クラスターのステータス内の TimelineID が正しく「1」にリセットされないという致命的な問題を修正しました。これにより、レプリカがオブジェクトストアから互換性のない履歴ファイルを復元しようとしてクラッシュする問題が防止されました。
  • 拡張機能の命名規則: アンダースコアを含むPostgreSQL拡張機能名(例: pg_partman)のバリデーションを修正し、Kubernetesのボリューム命名要件に準拠するように自動的にハイフンへサニタイズ(無害化)されるようになりました。
  • PoolerのTLS修正: PgBouncer Poolerにおいて、仕様から削除された後も古いTLSステータスフィールドがクリアされない問題を修正しました。以前はこの問題により「サポートされていない証明書」という接続エラーが発生していました。
  • レプリカのクラッシュループ: WALアーカイブに古いファイルが残っている場合、レプリカが将来のタイムラインから履歴ファイルをダウンロードしようとしてクラッシュループに陥る可能性があったバグを修正しました。
  • 削除処理の高速化: クラスターが削除対象としてマークされた際、オペレーターが直ちにリソースのクリーンアップを開始するように削除処理のパスを最適化し、クラスターが Terminating ステータスのまま滞留する時間を短縮しました。

CloudNativePG

前の記事

CloudNativePG 1.28.1