CloudNativePG

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

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

同じKubernetesクラスター内にあるアプリケーションは、フェールオーバーまたはスイッチオーバー後のプライマリロールの変更を心配することなく、オペレーターのみが管理するサービスを使用してPostgreSQLデータベースにアクセスできます。 Kubernetesクラスターの外部にあるアプリケーションは、TCPを介してPostgresを公開するようにServiceまたはIngressオブジェクトを構成する必要があります。 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 1.22以降が必要です。詳細については、 サポートされているリリース ページを参照してください。

コンテナイメージ

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

CloudNativePGオペレーターコンテナイメージは distroless であり、

cloudnative-pg で利用できます。

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

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

警告

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

主な機能

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

  • 自己修復機能: * 最も調整されたレプリカをプロモートすることによるプライマリインスタンスのフェイルオーバー

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 並列WALアーカイブと復元により、データベースが書き込み量の多いシステムでWAL生成についていくことができます

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

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

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

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

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

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

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

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

  • kubectl 用のcnpg プラグイン

  • PostgreSQLクラスター全体、またはインスタンスのサブセットのフェンシング

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

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

このガイドについて

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

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

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

Postgres, PostgreSQL and the Slonik Logo は、カナダPostgreSQLコミュニティ協会の商標または登録商標であり、彼らの許可を得て使用しています。