CloudNativePG 1.28.1

日本語訳|CloudNativePG 1.28.1

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

英語原文|CloudNativePG 1.28.1

概要

1. システム開発・運用管理における Kubernetes 利用のメリット
Kubernetes は、クラウドネイティブ・アプリケーションのデプロイ、管理、スケーリングを自動化するため、コンテナオーケストレーションの事実上の標準(デファクトスタンダード)となっています。システム開発において、以下のメリットを提供します:

  • Infrastructure as Code (IaC): チームはインフラストラクチャの希望する状態(あるべき姿)を宣言的に定義できます。
  • マイクロサービスと不変性(イミュータビリティ): イミュータブル(不変)なアプリケーションコンテナに基づくアーキテクチャを促進します。これにより、ワークロードの再現性が高まり、デプロイが安全になり、ロールバックが容易になります。
  • 回復力と自動化: 自己修復機能、ロードバランシング、自動ロールアウト/ロールバック、そして正確なリソース制御(CPU/メモリ制限)を標準で提供します。
  • ステートフル・ワークロードのサポート: ローカル永続ボリュームやカスタムオペレーターなどの機能が成熟したことにより、Kubernetes 上でデータベースのような高性能なステートフル・ワークロードを本番環境で確実に実行できるようになりました。

2. CloudNativePG とは
CloudNativePG (CNPG) は、サポートされている任意の Kubernetes クラスター上で PostgreSQL ワークロードを実行および管理するために設計された、オープンソースの Kubernetes オペレーターです。元々は EDB によって開発され、現在は Cloud Native Computing Foundation (CNCF) のサンドボックスプロジェクトとなっており、PostgreSQL クラスターのライフサイクル全体をシームレスに処理します。 Cluster というカスタム Kubernetes リソースを導入し、読み書き操作用の単一のプライマリインスタンスと、高可用性(HA)および読み取りスケール用のオプションのスタンバイ・レプリカで構成される PostgreSQL データベースを表現します。

3. Kubernetes 環境における CloudNativePG のメリット
CloudNativePG は「Kubernetes ネイティブ」として特別に設計されており、Kubernetes のエコシステムと競合するのではなく、深く統合されています。主なメリットは以下の通りです:

  • 外部 HA ツールが不要: 外部のコンセンサスツール(Patroni、repmgr、ZooKeeper/etcd など)に依存する他のオペレーターとは異なり、CNPG は高可用性、フェイルオーバー、リーダー選出のオーケストレーションを Kubernetes API サーバー自体に直接依存して行います。
  • カスタム Pod コントローラー: データベースに必要な柔軟性(PVC のサイズ変更や、プライマリとレプリカで異なるターゲット更新の実行など)が欠けている Kubernetes の StatefulSet に依存する代わりに、CNPG は Persistent Volume Claim (PVC) を直接管理するカスタムコントローラーを使用します。
  • イミュータブル・インフラストラクチャ: イミュータブルなアプリケーションコンテナを使用します。稼働中のインスタンスに直接パッチを当てたり設定変更したりするのではなく、宣言的な設定を更新することでオペレーターがローリングアップデートを処理し、デプロイメントの予測可能性と安全性を高めます。
  • クラウドニュートラル: プライベート、パブリック、ハイブリッド、マルチクラウド環境全体でのデータベース展開を可能にし、開発者をベンダーロックインから保護します。

4. CloudNativePG の主な機能
CloudNativePG は、クラスターの完全自動化された「レベル V – オートパイロット」DBA(データベース管理者)として機能します。主な機能は以下の通りです:

  • 自己修復と高可用性: 最新のデータを持つレプリカへの自動フェイルオーバー、障害が発生したスタンバイの自動再作成、PostgreSQL のマイナーバージョンやオペレーターのアップグレード時の自動ローリングアップデート。
  • 高度なレプリケーション: 非同期および同期ストリーミング・レプリケーション(クォーラムベースおよび優先度ベース)のサポート、複数の Kubernetes クラスターにまたがる分散トポロジー(レプリカクラスター)、および特定時点の履歴データにアクセスするための遅延レプリカ。
  • 包括的なバックアップとリカバリ: CNPG-I プラグイン(Barman Cloudなど)を介したオブジェクトストア(AWS S3、Azure Blob、Google Cloud Storage)への継続的な WAL(Write-Ahead Log)アーカイブと物理ベースバックアップ、または Kubernetes ボリュームスナップショットを介したネイティブなバックアップ。Point-In-Time Recovery (PITR) を完全にサポートします。
  • コネクションプーリング: データベースのコネクションスケーリングを効率的に管理するための PgBouncer のネイティブな統合とデプロイ。
  • 宣言的なデータベース管理: PostgreSQL のロール、ユーザー、データベース、テーブルスペース、スキーマ、および拡張機能を YAML マニフェストを通じて直接、宣言的に管理できます。
  • 深い可観測性 (Observability): 標準の JSON フォーマットでの出力ログ(PGAudit 統合を含む)、組み込みの Prometheus メトリクスエクスポーター、および事前にパッケージ化された Grafana ダッシュボード。
  • メジャーアップグレードと移行: オフラインのインプレース・メジャーバージョンアップグレード(例: PG 16 から 17)や、既存の PostgreSQL データベースからのオンライン/オフラインデータインポートをサポート。

5. バージョン 1.28.1 の新機能
バージョン 1.28.1(2026年2月5日リリース)は、安定性、バグ修正、セキュリティの強化に重点を置いたパッチリリースです。

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

主な修正点:

  • メジャーアップグレードのリカバリ: メジャーバージョンアップグレード後に TimelineID が 1 にリセットされず、レプリカがオブジェクトストアから互換性のない履歴ファイルを復元しようとしてクラッシュする致命的な問題を修正しました。
  • Pooler の TLS 修正: PgBouncer Pooler において、設定削除後に古い TLS ステータスフィールドがクリアされず、アプリケーションの接続をブロックする証明書エラーが発生する問題を修正しました。
  • レプリケーションとフェイルオーバー: 以前のクラスターライフサイクルの古い WAL アーカイブファイルが原因でレプリカがクラッシュループに陥るバグを修正し、レプリカクラスターでの Designated Primary (指定されたプライマリ) 移行時の競合状態 (レースコンディション) を解決しました。
  • 拡張機能管理: アンダースコアを含む PostgreSQL 拡張機能(pg_partman など)の検証ロジックを修正し、元のパスを失うことなく Kubernetes ボリューム名として適切にサニタイズされるようにしました。
  • 最適化: クラスターの削除処理を最適化し、オペレーターが内部の調整(Reconciliation)ループを待つのではなく即座にリソースのクリーンアップを開始するようにしたことで、クラスターが Terminating 状態にとどまる時間を短縮しました。