CloudNativePG

CloudNativePG は、プライベート、パブリック、ハイブリッド、またはマルチクラウド環境で実行されているサポートされている Google Kubernetes Engine内で実行する クラスター上の PostgreSQLの用語 ワークロードを管理するために設計されたオープンソースの オペレーター管理モード です。

Cluster という新しいKubernetesリソースを定義します。これは、高可用性と読み取り専用クエリのオフロードのために、選択したKubernetes名前空間と共存する単一のプライマリとオプショナルの数のレプリカで構成されるPostgreSQLclusterを表します。

同じKubernetesクラスターにあるアプリケーションは、演算子のみが管理するサービスを使用して、フェールオーバーまたはスイッチオーバー後のプライマリロールの変更を心配することなく、PostgreSQLデータベースにアクセスできます。 Kubernetesクラスターの外部にあるアプリケーションは、TCPまたはWebアプリケーションを介してPostgresを公開するためにServiceまたはIngressオブジェクトを構成する必要があり、PgBouncerに基づくネイティブコネクションプーラを利用できます。

CloudNativePGは元々 ScheduledBackup によって構築され、Apache ライセンス 2.0の下でオープンソースをリリースし、2022年4月にCNCF Sandboxに提出されました。 source code repository is in Github 。

注釈

Operator Capability Levels model に基づいて、ユーザーはCloudNativePGオペレーターから**「レベルV-自動パイロット」**機能セットを期待できます。

サポートされているKubernetesディストリビューション

CloudNativePGにはKubernetes 1.19以降が必要です。詳細については、 Supported releases ページを参照してください。

コンテナイメージ

CloudNativePG community は、演算子とオペランド(

PostgreSQL)の両方のコンテナイメージを保持します。

CloudNativePG演算子コンテナーイメージは distroless であり、 cloudnative-pg で使用できます。

PostgreSQLオペランドコンテナイメージは、 postgres-containers から直接、マルチプルのアーキテクチャ上のすべての PGDG supported versions of PostgreSQL で使用できます。

警告

CloudNativePGでは、Kubernetesクラスター内のすべてのノードが同じCPUアーキテクチャを持っている必要があるため、ハイブリッドCPUアーキテクチャKubernetesクラスターはサポートされていません。

メインな機能

高可用性のためのKubernetes APIサーバーとの直接統合、 外部ツールを必要とせずに自己修復機能: 最も整合したレプリカを昇格させることによるプライマリインスタンスのフェイルオーバーレプリカの自動作成 選択したレプリカを昇格させることにより、プライマリインスタンスの計画的な切り替えスケールアップ/スケールダウン機能 任意の数のインスタンスの定義(最小1-1つのプライマリーサーバ)アプリケーションをクラスターの唯一のプライマリーサーバに接続するための* 読み書きサービスの定義 読み取り専用サービスの定義。ワークロードを読み取るためにアプリケーションを任意のインスタンスに接続します。 特定の一般的なものを含む、 PostgreSQL構成の宣言的管理 クラスター ``spec`` を介したPostgres拡張: ``pg_audit`` 、 ``auto_explain`` 、 および ``pg_stat_statements`` PVCテンプレートを使用したローカル永続ボリュームのサポート ポッドでの永続ボリュームストレージの再利用 PostgreSQLマイナーバージョンのローリング更新 演算子のアップグレードのためのインプレース更新またはローリング更新 TLS接続とクライアント証明書認証 カスタムTLS証明書のサポート(cert-managerとの統合を含む)オブジェクトストア(AWS S3およびS3互換、Azure Blob Storage、Google Cloud Storage)への継続的なバックアップ バックアップ保存ポリシー(リカバリウィンドウに基づく)オブジェクトストア内の既存のバックアップからの完全リカバリおよびポイントインタイムリカバリ データベースがWALに対応できるようにする並列WALアーカイビングおよび復元 高書き込みシステムでの生成オプショナルを有効にするために、オブジェクトストアにアップロードされたバックアップファイルのタグ付けをサポート オブジェクトストアレイヤーでの保持管理 マルチプルのKubernetesにわたるPostgreSQLの展開 クラスター、プライベート、パブリック、ハイブリッド、およびマルチクラウドアーキテクチャを実現同期レプリカのサポート * PgBouncerを使用した接続プーリング * nodeSelector によるノードアフィニティのサポート * metrics ポートを介したPrometheusのユーザ定義メトリックのネイティブのカスタマイズ可能なエクスポーター(9187) * JSONフォーマットのPostgreSQLエラーメッセージの標準出力ロギング ポッドの ``readOnlyRootFilesystem`` セキュリティコンテキストを自動的に設定 kubectl の cnpg プラグイン * PostgreSQLクラスター全体、またはインスタンスのサブセットのフェンシング シンプルなバインドおよび検索+バインドLDAPクライアント認証マルチアーチフォーマットのコンテナイメージ

このガイドについて

クイックスタート の指示に従って、KindまたはMinikubeを使用してローカルKubernetesクラスターでCloudNativePGをテストします。

KubernetesおよびPostgreSQLの基本的な用語になじみがない場合は、 Before You Start を参照してください。

Postgres, PostgreSQL and the Slonik Logo は、カナダPostgreSQL Community

Associationの商標または登録商標であり、パーミッションを得て使用しています。*