CloudNativePG
CloudNativePG は、オープンソースの operator
サポートされている Kubernetes クラスターで PostgreSQL ワークロードを管理するように設計されています。 レプリカクラスターから分散トポロジへ により、プライベート、パブリック、ハイブリッド、およびマルチクラウド環境での展開をサポート
機能。
CloudNativePGは、宣言的構成や不変のインフラストラクチャなどのDevOpsの原則と概念を遵守しています。
Cluster
と呼ばれる新しいKubernetesリソースを定義します。高可用性と読み取り専用クエリのオフロードのために、選択したKubernetes名前空間に共存する単一のプライマリとオプションの数のレプリカで構成されるPostgreSQLクラスターを表します。
同じKubernetesクラスターにあるアプリケーションは、オペレーターがのみ管理するサービスを使用してPostgreSQLデータベースにアクセスでき、フェールオーバーまたはスイッチオーバーに伴うプライマリロールの変更を心配する必要はありません。
Kubernetesクラスターの外部にあるアプリケーションは、サービステンプレート機能とLoadBalancer
サービスを活用して、TCP経由でPostgreSQLを公開できます。さらに、Webアプリケーションは、PgBouncerに基づいたネイティブ接続プーラーを利用できます。
CloudNativePGは、もともと EDB によってビルドされ、Apache License 2.0の下でオープンソースをリリースしました。 CNCF Sandbox in September 2024 に送信されました。 source code repository is in Github 。
注釈
Operator Capability Levels model に基づいて、ユーザーはCloudNativePGオペレーターからの**「レベルV - 自動パイロット」**機能のサブセットを期待できます。
サポートされているKubernetesディストリビューション
CloudNativePGの各マイナーリリースは、さまざまなKubernetesバージョン、通常、マイナーバージョンが最初にリリースされたときにCNCFによってサポートされているバージョンで動作するように設計されています。
詳細は サポートされているリリース ページを参照してください。
コンテナイメージ
CloudNativePG community は、オペレーターとPostgreSQLオペランドの両方のコンテナイメージを維持します。
オペレーター
- CloudNativePGオペレーターコンテナイメージは、
cloudnative-pg で入手できます。
3つの異なるフレーバーで
Debian 12ディストリビューション
Red Hat UBI 9 microサフィックス
-ubi9Red Hat UBI 8 microサフィックス
-ubi8
Red Hat UBIイメージは、主にOLM使用を目的としています。
オペランド
- PostgreSQLオペランドコンテナイメージは、複数のアーキテクチャにわたって、すべての PGDG supported versions of PostgreSQL で
postgres-containers から直接利用できます。
毎日のジョブにより、スタック全体の重大な脆弱性CVEが迅速に対処されます。
さらに、コミュニティは PostGIS extension のイメージを提供しています。
主な機能
外部ツールを必要とせずに、高可用性を実現するKubernetes APIサーバーとの直接統合
最も調整されたレプリカ
レプリカの自動再作成を促進することによるプライマリインスタンスの
フェイルオーバーを介した自己修復機能
選択したレプリカの昇格によるプライマリインスタンスの計画的なスイッチオーバー
スケールアップ/ダウン機能
任意の数のインスタンスの定義最小1 - 1つのプライマリサーバー
アプリケーションをクラスターの唯一のプライマリサーバーに接続するための_read-write_サービスの定義
_read-only_サービスの定義、ワークロードを読み取るためのインスタンスにアプリケーションを接続するため
クラスターを介した特定の人気のPostgres拡張機能を含むPostgreSQL構成の宣言管理
specpgaudit、auto_explain、pg_stat_statements、およびpg_failover_slotsPostgresのロール、ユーザー、グループの宣言的管理
PVCテンプレートを使用したローカル永続ボリュームのサポート
ポッドの永続ボリュームストレージの再利用
WALファイルとテーブルスペースの個別のボリューム
一時テーブルスペースを含むPostgresテーブルスペースの宣言的管理
PostgreSQLマイナーバージョンのローリングアップデート
オペレーターアップグレードのインプレースまたはローリング更新
TLS接続とクライアント証明書認証
カスタムTLS証明書のサポートcert-managerとの統合を含む
オブジェクトストアへの継続的なWALアーカイブAWS S3およびS3互換、Azure Blob Storage、およびGoogle Cloud Storage
ボリュームスナップショットのバックアップ基になるストレージクラスでサポートされている場合
オブジェクトストアのバックアップAWS S3およびS3互換、Azure Blob Storage、およびGoogle Cloud Storage
ボリュームスナップショットまたはオブジェクトストアの既存のバックアップからのフルリカバリーおよびポイントインタイムリカバリー
PostgreSQLのメジャーアップグレードを含む、既存のPostgreSQLデータベースのオフラインインポート
PostgreSQLネイティブ論理レプリケーションを介したPostgreSQLのメジャーアップグレードを含む既存のPostgreSQLデータベースのオンラインインポート
cnpgプラグインを介して必須宣言的な方法でのPostgreSQLクラスター全体、またはインスタンスのサブセットのフェンシング
宣言的な方法でのPostgreSQLクラスターの休止状態
クォーラムベースおよび優先度ベースの同期レプリケーションのサポート
クラスターレベルでのHA物理レプリケーションスロットのサポート
ユーザー定義の物理レプリケーションスロットの同期
スタンバイからのバックアップ
バックアップ保持ポリシーリカバリウィンドウに基づいて、オブジェクトストアのみ
並列WALアーカイブと復元により、データベースが大量の書き込みシステムでのWAL生成に追いつくことができます
オブジェクトストアにアップロードされたバックアップファイルのタグ付けをサポートして、オブジェクトストアレイヤーでオプションの保持管理を有効にします
複数のKubernetesクラスターにまたがるPostgreSQL分散トポロジのレプリカクラスター。制御されたスイッチオーバーのサポートを備えたプライベート、パブリック、ハイブリッド、およびマルチクラウドアーキテクチャを有効にします。
遅延レプリカクラスター
PgBouncerを使用した接続プーリング
nodeSelectorを介したノードアフィニティのサポートmetricsポート9187を介したプロメテウスのユーザー定義メトリックのネイティブなカスタマイズ可能なエクスポーターJSON形式のPostgreSQLエラーメッセージの標準出力ログ
ポッドの
readOnlyRootFilesystemセキュリティコンテキストを自動的に設定しますkubectl用のcnpgプラグイン単純なバインドと検索+バインドのLDAPクライアント認証
マルチアーチフォーマットのコンテナイメージ
OLMのインストール
このガイドについて
クイックスタート の指示に従って、KindまたはMinikubeを使用してローカルKubernetesクラスターでCloudNativePGをテストします。
KubernetesとPostgreSQLの基本的な用語に慣れていない場合は、 始める前に を参照してください。
_ Postgres, PostgreSQL and the Slonik Logo
は、カナダPostgreSQLコミュニティ協会の商標または登録商標であり、その許可を得て使用しています。