はじめに
CloudNativePG は、オープンソース operator
プライベート、パブリック、ハイブリッド、またはマルチクラウド環境で実行されているサポートされている Kubernetes クラスターで PostgreSQL ワークロードを管理するように設計されています。 CloudNativePGは、宣言的構成や不変のインフラストラクチャなどのDevOpsの原則と概念を遵守しています。
Cluster
と呼ばれる新しいKubernetesリソースを定義します。高可用性と読み取り専用クエリのオフロードのために、選択したKubernetes名前空間に共存する単一のプライマリとオプションの数のレプリカで構成されるPostgreSQLクラスターを表します。
同じKubernetesクラスターにあるアプリケーションは、オペレーターによってのみ管理されるサービスを使用してPostgreSQLデータベースにアクセスでき、フェールオーバーまたはスイッチオーバーに続くプライマリロールの変更を心配する必要はありません。 Kubernetesクラスターの外部にあるアプリケーションは、TCP経由でPostgresを公開するようにServiceまたはIngressオブジェクトを構成する必要があります。 Webアプリケーションは、PgBouncerに基づいたネイティブ接続プーラーを利用できます。
CloudNativePGは、もともと EDB によってビルドされ、その後、Apache License 2.0の下でオープンソースをリリースし、2022年4月にCNCFサンドボックスに提出されました。
注釈
Operator Capability Levels model に基づいて、ユーザーはCloudNativePGオペレーターからの**「レベルV - 自動パイロット」**機能セットを期待できます。
サポートされている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つのプライマリサーバー
アプリケーションをクラスターの唯一のプライマリサーバーに接続するための 読み取り-書き込み サービスの定義
ワークロードを読み取るためのインスタンスにアプリケーションを接続するための 読み取り専用 サービスの定義
クラスターを介した特定の人気のPostgres拡張機能を含むPostgreSQL構成の宣言管理
specpgaudit、auto_explain、pg_stat_statements、およびpg_failover_slotsPostgresのロール、ユーザー、グループの宣言的管理
PVCテンプレートを使用したローカル永続ボリュームのサポート
ポッドの永続ボリュームストレージの再利用
WALファイルの別冊
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クラスターの休止状態
同期レプリカのサポート
クラスターレベルでのHA物理レプリケーションスロットのサポート
スタンバイからのバックアップ
バックアップ保持ポリシーリカバリウィンドウに基づいて、オブジェクトストアのみ
並列WALアーカイブと復元により、データベースが大量の書き込みシステムでのWAL生成に追いつくことができます
オブジェクトストアにアップロードされたバックアップファイルのタグ付けをサポートして、オブジェクトストアレイヤーでオプションの保持管理を有効にします
複数のKuberneteクラスターにわたるPostgreSQLの展開、プライベート、パブリック、ハイブリッド、マルチクラウドアーキテクチャを有効にします
PgBouncerを使用した接続プーリング
nodeSelectorを介したノードアフィニティのサポートmetricsポート9187を介したプロメテウスのユーザー定義メトリックのネイティブなカスタマイズ可能なエクスポーターJSON形式のPostgreSQLエラーメッセージの標準出力ログ
ポッドの
readOnlyRootFilesystemセキュリティコンテキストを自動的に設定しますkubectl用のcnpgプラグイン単純なバインドと検索+バインドのLDAPクライアント認証
マルチアーチフォーマットのコンテナイメージ
OLMのインストール
注釈
CloudNativePGは、データの永続性の管理に`StatefulSet` sを使用しません。代わりに、永続ボリューム要求PVCを直接管理します。ご興味がある場合は、 カスタムポッドコントローラ を読んで詳細をご覧ください。
このガイドについて
クイックスタート の指示に従って、KindまたはMinikubeを使用してローカルKubernetesクラスターでCloudNativePGをテストします。
- KubernetesとPostgreSQLの基本的な用語に慣れていない場合は、
始める前に を参照してください。
は、カナダPostgreSQLコミュニティ協会の商標または登録商標であり、その許可を得て使用しています。*