CloudNativePG 1.26.1
1. CloudNativePG (CNPG) バージョン1.26.1とは?
CloudNativePG (CNPG) バージョン1.26.1は、Kubernetes環境内でPostgreSQLデータベースクラスタの完全なライフサイクルを管理するために設計された、オープンソースのKubernetesオペレーターであり、バージョン1.26系のパッチリリースです。
CNCF (Cloud Native Computing Foundation) のサンドボックスプロジェクトとして、宣言的設定やイミュータブルインフラストラクチャーといったクラウドネイティブの原則に従っています。その中核機能として、Clusterというカスタムリソース定義(CRD)を導入しており、これによりユーザーは、書き込み操作用の単一プライマリインスタンスと、高可用性(HA)およびリードスケーリング用のオプショナルなレプリカを含む完全なPostgreSQLクラスタを、すべてYAMLマニフェストを通じて定義できます。
バージョン1.26.1は、バージョン1.26.0で導入された主要なアーキテクチャ変更に続く、バグ修正と機能強化に焦点を当てたメンテナンスリリースです。
2. なぜCNPGは開発されたのか?(目的)
ステートフルなアプリケーションであるPostgreSQLを、ステートレス指向のプラットフォームであるKubernetes上で実行するには、大きな課題が伴います。CNPGは、これらの課題に対処するために以下の主要な目的を持って開発されました。
- ライフサイクル全体の自動化: 単純なデプロイメントにとどまらず、高可用性、フェイルオーバー、バックアップ、リカバリ、アップグレード、設定管理といった、複雑で間違いやすいタスクを自動化し、仮想的なデータベース管理者(DBA)として機能すること。
- 真のクラウドネイティブ統合の実現: 外部ツールやスクリプトに依存するのではなく、Kubernetesと深く統合することを目指しています。Kubernetes APIサーバーをクラスタ状態の唯一の信頼できる情報源(Single Source of Truth)として使用し、Kubernetesエコシステム内でのシームレスな運用を可能にします。
- 堅牢な高可用性と災害復旧の提供: PostgreSQLクラスタの回復力と耐久性を確保することが中心的な目標です。自動フェイルオーバーと信頼性の高いバックアップソリューションを通じて、ダウンタイム(RTO)とデータ損失(RPO)を最小限に抑えます。
- 標準的なKubernetesプリミティブよりも高度な制御を提供: StatefulSetのような標準ツールは、データベースの特定の運用ニーズに対しては汎用的すぎます。CNPGは、データベースの整合性にとって重要な、ストレージ管理(PVCリサイズ)、インスタンス昇格ロジック、正常なシャットダウンといったプロセスに対して、よりきめ細かな制御を提供するために作られました。
3. CNPGはこれらの目的をどのように達成しているのか?
CNPGは、カスタムコントローラーと、KubernetesおよびPostgreSQLの機能をインテリジェントに活用することで、その目的を実現しています。
- カスタムPodコントローラー: CNPGは意図的にStatefulSetの使用を避けています。代わりに、独自のコントローラーを実装してPodと永続ボリューム要求(PVC)を直接管理します。これにより、オンラインでのPVCリサイズ、更新時のプライマリとレプリカの役割の区別、関連するPVC(データ用とWAL用など)の一貫性管理といった、データベース固有のロジックを扱うことができます。
- インスタンスマネージャー: 軽量なエージェント(cnpgバイナリ)が、すべてのPostgreSQLコンテナ内でプライマリプロセス(PID 1)として注入されます。このインスタンスマネージャーがPostgreSQLサーバーのライフサイクルを管理し、Kubernetesのプローブ(liveness, readiness)に応答し、オペレーターからのコマンドを実行し、インスタンスの状態をオペレーターに報告します。これが自己修復機能の鍵となります。
- 宣言的設定: ユーザーは、ClusterのYAMLファイルにPostgreSQLクラスタの「あるべき状態」を定義します。オペレーターは、実際の状態をこの「あるべき状態」に一致させるために継続的に調整(reconcile)します。これにより、データベース管理が予測可能になり、Infrastructure as Code (IaC)やGitOpsワークフローとの互換性が高まります。
- PostgreSQLネイティブレプリケーション: 高可用性のために、CNPGはPostgreSQLに組み込まれた、実績のある物理ストリーミングレプリケーションを使用します。接続設定、TLS証明書によるレプリケーションユーザーの管理、レプリケーションスロットの管理を自動で行い、レプリカの同期外れを防ぎます。
- プラグイン可能なバックアップとリカバリ (CNPG-I): CNPGはバックアップのためのプラグインベースアーキテクチャを採用しています。Barman Cloudのようなツールと連携してオブジェクトストレージへのバックアップ(AWS S3、Azure Blobなど)をサポートし、ネイティブなKubernetes Volume Snapshotにも対応しています。これにより、ポイントインタイムリカバリ(PITR)のための柔軟かつ強力な選択肢を提供します。
4. CNPGによって得られるメリット
このアーキテクチャを使用することで、CloudNativePGはいくつかの主要なメリットを提供します。
- 運用オーバーヘッドの削減: 日常的および緊急時のDBAタスクを自動化し、開発チームや運用チームの負担を軽減します。
- 高可用性: 自動フェイルオーバーとスイッチオーバーを提供し、障害時やメンテナンス中のダウンタイムを最小限に抑えます。
- 信頼性の高い災害復旧: 堅牢で柔軟なバックアップおよびポイントインタイムリカバリ(PITR)機能を提供し、データの安全性を確保します。
- パフォーマンスと効率の向上: PgBouncerによる統合されたコネクションプーリングがデータベースへの接続オーバーヘッドを削減し、最適化されたストレージ構成(WALボリュームの分離など)がI/Oパフォーマンスを向上させます。
- セキュリティの強化: 暗号化通信のためのTLS証明書を管理し、セキュリティコンテキストを強制し、標準的なKubernetes RBACと統合します。
5. バージョン1.26.1の新機能・変更点
バージョン1.26.1は、1.26.0リリースに続く安定性向上と改善に焦点を当てたパッチリリースです。主な更新点は以下の通りです。
- 重要な変更 – ネイティブバックアップフィールドの非推奨化: これが最も重要な変更点です。より柔軟なプラグインベースのアーキテクチャへの移行の一環として、Clusterリソースの.status内のいくつかのフィールドと、関連するバックアップ用のPrometheusメトリクスが非推奨になりました(例: firstRecoverabilityPoint, lastSuccessfulBackup)。これらは古いネイティブBarman CloudやVolume Snapshot機能のユーザー向けには引き続き機能しますが、新しいプラグインベースのバックアップでは更新されなくなります。
- 機能強化 (Enhancements):
- KubernetesのHugePages設定を正しく考慮するようにshared_buffersの検証を改善。
- メモリ不足の状況でLinuxカーネルがプロセスをより良く扱えるよう、PostgreSQLワーカープロセスのoom_score_adjを設定。
- アプリケーションの接続文字列の管理を簡素化するため、ユーザーシークレットにfqdn-uriとfqdn-jdbc-uriを追加。
- 修正 (Fixes):
- コネクションプーラーにミューテックスを追加し、競合状態を防ぐことで安定性を向上。
- レプリカクラスタのインスタンス順序付けを修正し、スイッチオーバー時の安定性を改善。
- ターゲットPodが不健康になった場合にオンラインバックアップが正常に失敗するようにし、不完全なバックアップを防ぐ。
- Liveness Probe、WALリストア、bootstrap-controllerに関する他のいくつかのバグを修正。
日本語訳|CloudNativePG 1.26.1
※GoogleのAutoML Translationを使用して翻訳しております。
![]() |
![]() |
英語原文|CloudNativePG 1.26.1
![]() |
![]() |





