CloudNativePG

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

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

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

CloudNativePG はもともと EDB によって構築され、その後 Apache License 2.0 の下でオープン ソースをリリースし、2022 年 4 月に CNCF Sandbox に提出されました。ソース コード リポジトリは Github にあります。

注釈

Operator Capability Levels model に基づいて、ユーザーは CloudNativePG Operator から "Level V - Auto Pilot" の一連の機能を期待できます。

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

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

詳細は サポートされているリリース ページを参照してください。

コンテナ イメージ

CloudNativePG community は、オペレーターとオペランド、つまり PostgreSQL

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

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

cloudnative-pg で利用できます。

PostgreSQL オペランド コンテナー イメージは、複数のアーキテクチャ上のすべての PGDG supported versions of PostgreSQL で、

postgres-containers から直接利用できます。

さらに、コミュニティは PostGIS extension のイメージを提供します。

警告

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

主な特徴

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

  • セルフヒーリング機能: * 最も整列されたレプリカを昇格させることによるプライマリ インスタンスのフェイルオーバー * レプリカの自動再作成

  • 選択したレプリカを昇格させることによる、プライマリ インスタンスの計画的な切り替え

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

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

  • アプリケーションをクラスターの唯一のプライマリ サーバーに接続するための read-write サービスの定義

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

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

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

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

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

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

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

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

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

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

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

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

  • オブジェクト ストア内の既存のバックアップからのフル リカバリおよびポイント イン タイム リカバリ

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

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

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

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

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

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

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

  • nodeSelector によるノード アフィニティのサポート

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

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

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

  • kubectl 用の cnpg プラグイン

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

  • シンプルなバインドおよび検索+バインド LDAP クライアント認証

  • マルチアーチ形式のコンテナ イメージ

  • Postgres クラスターのハイバネーション

このガイドについて

クイックスタート の手順に従って、Kind または Minikube

を使用して、ローカルの Kubernetes クラスターで CloudNativePG をテストします。

Kubernetes と PostgreSQL の基本的な用語に慣れていない場合は、

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

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