CloudNativePG

CloudNativePG はオープンソースの オペレーター管理モード です

プライベート、パブリック、ハイブリッド、またはマルチクラウド環境で実行されているサポートされている Kubernetesアーキテクチャ クラスターで PostgreSQLアーキテクチャ ワークロードを管理するように設計されています。 CloudNativePGは、宣言的な構成や不変のインフラストラクチャなど、DevOpsの原則と概念に準拠しています。

これは、高可用性と読み取り専用クエリのオフロードのために、単一のプライマリとオプションの数のレプリカで構成されるPostgreSQLクラスターを表す Cluster と呼ばれる新しいKubernetesリソースを定義します。

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

CloudNativePGはもともと スケジュールされたバックアップ によってビルドされ、次にApache License 2.0の下でオープンソースをリリースし、2022年4月にCNCF Sandboxに提出しました。 source code repository is in Github 。

注釈

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

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

CloudNativePGの各マイナーリリースは、さまざまなKubernetesバージョンで動作するように設計されています。通常、マイナーバージョンが最初にリリースされた時点でCNCFによってサポートされていたバージョンです。

詳細は サポートされているリリース のページをご覧ください。

コンテナイメージ

CloudNativePG community は、演算子とオペランドの両方、つまりPostgreSQLのコンテナイメージを維持します。

CloudNativePGオペレーターのコンテナイメージは distroless です

cloudnative-pg で利用できます。

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

さらに、コミュニティは PostGIS extension の画像を提供します。

警告

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

主な機能

  • 外部ツールを必要とせずに、高可用性のためのKubernetes APIサーバーと直接統合

  • 自己回復機能、以下:

    • 最も整列されたレプリカをプロモートすることによるプライマリインスタンスのフェイルオーバー * レプリカの自動再作成

    • 選択したレプリカを昇格させることによるプライマリインスタンスの計画的なスイッチオーバー

  • スケールアップ/ダウン機能

  • 任意の数のインスタンスの定義(最小1〜1つのプライマリサーバー)

  • アプリケーションをクラスターの唯一のプライマリサーバーに接続するための* 読み取り-書き込み サービスの定義

  • ワークロードを読み取るためにアプリケーションをインスタンスに接続するための* 読み取り専用 サービスの定義

  • クラスターspec を介した特定の一般的なPostgres拡張機能を含む、PostgreSQL構成の宣言的管理:pgaudit 、auto_explain 、pg_stat_statements 、およびpg_failover_slots

  • Postgresのロール、ユーザー、グループの宣言的管理

  • PVCテンプレートを使用したローカル永続ボリュームのサポート

  • Podでの永続ボリュームストレージの再利用

  • WALファイル別ボリューム

  • PostgreSQLマイナーバージョンのローリングアップデート

  • オペレーターのアップグレードのためのインプレースまたはローリングアップデート

  • TLS接続とクライアント証明書認証

  • カスタムTLS証明書のサポート(cert-managerとの統合を含む)

  • オブジェクトストアへの継続的なバックアップ(AWS S3およびS3互換、Azure Blob Storage、およびGoogle Cloud Storage)

  • オブジェクトストア内の既存のバックアップからの完全復旧とポイントインタイム復旧

  • PostgreSQLのメジャーアップグレードを含む、既存のPostgreSQLデータベースのオフラインインポート

  • PostgreSQLクラスター全体、または宣言的な方法でのインスタンスのサブセットのフェンシング

  • 宣言的な方法でのPostgreSQLクラスターの休止

  • 同期レプリカのサポート

  • クラスターレベルでのHA物理レプリケーションスロットのサポート

  • スタンバイからのバックアップ

  • バックアップ保持ポリシー(リカバリウィンドウに基づく)

  • パラレルWALアーカイブと復元により、データベースが高書き込みシステムでのWAL生成に追いつくことができます

  • オブジェクトストアにアップロードされたバックアップファイルのタグ付けをサポートして、オブジェクトストアレイヤーでのオプションの保持管理を有効にするためのレプリカクラスター

  • プライベート、パブリック、ハイブリッド、マルチクラウドのアーキテクチャを有効にする、複数のKubernetesクラスターにわたるPostgreSQLの展開

  • PgBouncerによる接続プーリング

  • nodeSelector を介したノードアフィニティのサポート

  • metrics ポートを介したPrometheusのユーザー定義メトリックのネイティブでカスタマイズ可能なエクスポーター(9187)

  • JSON形式のPostgreSQLエラーメッセージの標準出力ロギング

  • PodのreadOnlyRootFilesystem セキュリティコンテキストを自動的に設定

  • kubectl 用のcnpg プラグイン

  • シンプルバインドと検索+バインドLDAPクライアント認証

  • マルチアーチフォーマットのコンテナイメージ

注釈

CloudNativePGは、データの永続性を管理するために`StatefulSet` sを使用しません。むしろ、永続的なボリュームクレーム(PVC)を直接管理します。興味がある場合は、 カスタムポッドコントローラー を読んで詳細を確認してください。

このガイドについて

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

KubernetesとPostgreSQLの基本的な用語に精通していない場合は、

始める前に を参照してください。

は、カナダPostgreSQL Community Associationの商標または登録商標であり、彼らの許可を得て使用されています。