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_statementsPVCテンプレートを使用したローカル永続ボリュームのサポート
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コミュニティ協会の商標または登録商標であり、彼らの許可を得て使用しています。
- 始める前に
- ユースケース
- アーキテクチャ
- インストールとアップグレード
- クイックスタート
- ブートストラップ
- Postgresデータベースのインポート
- セキュリティ
- Postgresインスタンスマネージャー
- スケジューリング
- リソース管理
- 障害モード
- ローリングアップデート
- レプリケーション
- バックアップとリカバリー
- PostgreSQL設定
- オペレーター設定
- ストレージ
- ラベルとアノテーション
- モニタリング
- ロギング
- 証明書
- クライアントTLS / SSL接続
- アプリケーションから接続する
- 接続プーリング
- レプリカクラスター
- Kubernetesのアップグレード
- Postgresサービスの公開
- CloudNativePGプラグイン
- 自動フェイルオーバー
- トラブルシューティング
- フェンシング
- エンドツーエンドのテスト
- コンテナイメージの要件
- オペレーターの能力レベル
- レベル1 - 基本インストール
- 宣言型構成によるオペレーターの展開
- 宣言構成によるPostgreSQLクラスターの展開
- CRDを介したオペランド画像のオーバーライド
- ラベルとアノテーション
- 自己完結型のインスタンスマネージャー
- ストレージ構成
- レプリカ構成
- データベース構成
- ポッドセキュリティポリシー
- アフィニティ
- コマンドラインインターフェース
- クラスターの現在のステータス
- オペレーターの認証局
- クラスターの認証局
- TLS接続
- ストリーミングレプリケーションの証明書認証
- 継続的な構成管理
- 既存のPostgreSQLデータベースのインポート
- PostGISクラスター
- PostgreSQLの基本的なLDAP認証
- 複数のインストール方法
- 構成よりも規約
- レベル2 - シームレスなアップグレード
- レベル3 - フルライフサイクル
- レベル4 - 深い洞察
- レベル5 - オートパイロット
- レベル1 - 基本インストール
- 例
- 商用サポート
- よくある質問(FAQ)
- APIリファレンス
- AffinityConfiguration
- AzureCredentials
- バックアップ
- バックアップ構成
- バックアップリスト
- バックアップソース
- BackupSpec
- バックアップステータス
- BarmanCredentials
- BarmanObjectStoreConfiguration
- Bootstrap構成
- BootstrapInitDB
- BootstrapPgBaseBackup
- BootstrapRecovery
- 証明書構成
- CertificatesStatus
- クラスター
- ClusterList
- ClusterSpec
- ClusterStatus
- ConfigMapKeySelector
- ConfigMapResourceVersion
- DataBackupConfiguration
- EmbeddedObjectメタデータ
- 外部クラスター
- Google資格情報
- インポート
- ImportSource
- インスタンスID
- InstanceReportedState
- LDAPBindAsAuth
- LDAPBindSearchAuth
- LDAPConfig
- LocalObjectReference
- MonitoringConfiguration
- NodeMaintenanceWindow
- PgBouncerIntegrationStatus
- PgBouncerの秘密
- PgBouncerSpec
- ポッドメタ
- PodTemplateSpec
- プーラー
- プーラー統合
- PoolerList
- PoolerSecrets
- PoolerSpec
- PoolerStatus
- PostInitApplicationSQLRefs
- PostgresConfiguration
- リカバリーターゲット
- ReplicaClusterConfiguration
- RollingUpdateStatus
- S3資格情報
- スケジュールされたバックアップ
- ScheduledBackupList
- ScheduledBackupSpec
- ScheduledBackupStatus
- SecretKeyセレクター
- シークレットバージョン
- SecretsResourceバージョン
- StorageConfiguration
- SyncReplicaElectionConstraints
- トポロジー
- WalBackup構成
- サポートされているリリース
- リリースノート