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 の商標または登録商標であり、その許可を得て使用されています。
- 始める前に
- ユースケース
- 建築
- インストールとアップグレード
- クイックスタート
- ブートストラップ
- Postgres データベースのインポート
- 安全
- Postgre インスタンス マネージャー
- スケジューリング
- 資源管理
- 失敗モード
- ローリング更新
- レプリケーション
- バックアップとリカバリ
- PostgreSQL の設定
- オペレーター構成
- インスタンス Pod 構成
- 保管所
- ラベルと注釈
- モニタリング
- ロギング
- 証明書
- クライアント TLS/SSL 接続
- アプリケーションからの接続
- 接続プーリング
- レプリカ クラスタ
- Kubernetes のアップグレード
- Postgres サービスの公開
- CloudNativePG プラグイン
- 自動フェイルオーバー
- トラブルシューティング
- フェンシング
- PostGIS
- エンドツーエンドのテスト
- コンテナ イメージの要件
- オペレーターの能力レベル
- レベル 1 - 基本インストール
- 宣言型構成によるオペレーターのデプロイ
- 宣言型構成による PostgreSQL クラスターの展開
- CRD によるオペランド イメージのオーバーライド
- ラベルと注釈
- 自己完結型のインスタンス マネージャー
- ストレージ構成
- レプリカ構成
- データベース構成
- ポッド セキュリティ ポリシー
- 親和性
- コマンドラインインターフェース
- クラスタの現在のステータス
- 事業者の認証局
- クラスターの認証局
- TLS 接続
- ストリーミングレプリケーションの証明書認証
- 継続的な構成管理
- 既存の PostgreSQL データベースのインポート
- PostGIS クラスタ
- PostgreSQL の基本的な LDAP 認証
- 複数のインストール方法
- 設定より規約
- レベル 2 - シームレスなアップグレード
- レベル 3 - フル ライフサイクル
- レベル 4 - 深い洞察
- レベル 5 - 自動操縦
- レベル 1 - 基本インストール
- カスタム Pod コントローラー
- 例
- ベンチマーク
- 商用サポート
- よくある質問 (FAQ)
- API リファレンス
- アフィニティ構成
- AzureCredentials
- バックアップ
- バックアップ構成
- バックアップリスト
- バックアップソース
- バックアップ仕様
- バックアップステータス
- BarmanCredentials
- BarmanObjectStoreConfiguration
- ブートストラップ構成
- BootstrapInitDB
- BootstrapPgBaseBackup
- BootstrapRecovery
- 証明書の構成
- 証明書ステータス
- 集まる
- ClusterList
- ClusterSpec
- ClusterStatus
- ConfigMapKeySelector
- ConfigMapResourceVersion
- データバックアップ構成
- EmbeddedObjectMetadata
- 外部クラスター
- Google資格情報
- 輸入
- インポート元
- インスタンスID
- InstanceReportedState
- LDAPBindAsAuth
- LDAPBindSearchAuth
- LDAPConfig
- LocalObjectReference
- メタデータ
- 監視構成
- NodeMaintenanceWindow
- PgBouncerIntegrationStatus
- PgBouncerSecrets
- PgBouncerSpec
- PodTemplateSpec
- プーラー
- プーラー統合
- プーラーリスト
- PoolerSecrets
- プーラースペック
- プーラーのステータス
- PostInitApplicationSQLRefs
- Postgres構成
- 回復対象
- ReplicaClusterConfiguration
- ReplicationSlotsConfiguration
- ReplicationSlotsHAConfiguration
- ローリングアップデートステータス
- S3Credentials
- スケジュールされたバックアップ
- スケジュールされたバックアップ リスト
- スケジュールされたバックアップ仕様
- スケジュールされたバックアップの状態
- シークレットキーセレクター
- シークレットバージョン
- SecretsResourceVersion
- ServiceAccountTemplate
- ストレージ構成
- SyncReplicaElectionConstraints
- トポロジー
- WalBackupConfiguration
- サポートされているリリース
- リリースノート
- CloudNativePG 1.19 のリリース ノート
- CloudNativePG 1.18 のリリース ノート
- CloudNativePG 1.17 のリリース ノート
- CloudNativePG 1.16 のリリース ノート
- CloudNativePG 1.15 のリリース ノート
- 1.14.0 以前のリリース ノート