CloudNativePG¶
CloudNativePG はオープンソースの オペレーター管理モード です
プライベート、パブリック、ハイブリッド、またはマルチクラウド環境で実行されているサポートされている Kubernetesアーキテクチャ クラスターで PostgreSQLアーキテクチャ ワークロードを管理するように設計されています。 CloudNativePGは、宣言的な構成や不変のインフラストラクチャなど、DevOpsの原則と概念に準拠しています。
これは、高可用性と読み取り専用クエリのオフロードのために、単一のプライマリとオプションの数のレプリカで構成されるPostgreSQLクラスターを表す
Cluster と呼ばれる新しいKubernetesリソースを定義します。
同じKubernetesクラスター内にあるアプリケーションは、フェールオーバーまたはスイッチオーバー後のプライマリロールの変更を心配することなく、オペレーターのみが管理するサービスを使用してPostgreSQLデータベースにアクセスできます。 Kubernetesクラスターの外部にあるアプリケーションは、ServiceまたはIngressオブジェクトを構成して、TCP経由でPostgresを公開する必要があります。 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バージョンで動作するように設計されています。通常、マイナーバージョンが最初にリリースされた時点でCNCFによってサポートされていたバージョンです。
詳細は サポートされているリリース のページをご覧ください。
コンテナイメージ¶
CloudNativePG community は、演算子とオペランドの両方、つまりPostgreSQLのコンテナイメージを維持します。
CloudNativePGオペレーターのコンテナイメージは distroless です
cloudnative-pg で利用できます。
PostgreSQLオペランドコンテナイメージは、 postgres-containers から直接、マルチプルのアーキテクチャ上のすべての PGDG supported versions of PostgreSQL で利用できます。
さらに、コミュニティは PostGIS extension の画像を提供します。
警告
CloudNativePGでは、Kubernetesクラスター内のすべてのノードが同じCPUアーキテクチャを持つ必要があるため、ハイブリッドCPUアーキテクチャのKubernetesクラスターはサポートされていません。
主な機能¶
外部ツールを必要とせずに、高可用性のためのKubernetes APIサーバーと直接統合
自己回復機能、以下:
最も整列されたレプリカをプロモートすることによるプライマリインスタンスのフェイルオーバー * レプリカの自動再作成
選択したレプリカを昇格させることによるプライマリインスタンスの計画的なスイッチオーバー
スケールアップ/ダウン機能
任意の数のインスタンスの定義(最小1〜1つのプライマリサーバー)
アプリケーションをクラスターの唯一のプライマリサーバーに接続するための* 読み取り-書き込み サービスの定義
ワークロードを読み取るためにアプリケーションをインスタンスに接続するための* 読み取り専用 サービスの定義
クラスター
specを介した特定の一般的なPostgres拡張機能を含む、PostgreSQL構成の宣言的管理:pgaudit、auto_explain、pg_stat_statements、およびpg_failover_slotsPostgresのロール、ユーザー、グループの宣言的管理
PVCテンプレートを使用したローカル永続ボリュームのサポート
Podでの永続ボリュームストレージの再利用
WALファイル別ボリューム
PostgreSQLマイナーバージョンのローリングアップデート
オペレーターのアップグレードのためのインプレースまたはローリングアップデート
TLS接続とクライアント証明書認証
カスタムTLS証明書のサポート(cert-managerとの統合を含む)
オブジェクトストアへの継続的なバックアップ(AWS S3およびS3互換、Azure Blob Storage、およびGoogle Cloud Storage)
オブジェクトストア内の既存のバックアップからの完全復旧とポイントインタイム復旧
PostgreSQLのメジャーアップグレードを含む、既存のPostgreSQLデータベースのオフラインインポート
PostgreSQLクラスター全体、または宣言的な方法でのインスタンスのサブセットのフェンシング
宣言的な方法でのPostgreSQLクラスターの休止
同期レプリカのサポート
クラスターレベルでのHA物理レプリケーションスロットのサポート
スタンバイからのバックアップ
バックアップ保持ポリシー(リカバリウィンドウに基づく)
パラレルWALアーカイブと復元により、データベースが高書き込みシステムでのWAL生成に追いつくことができます
オブジェクトストアにアップロードされたバックアップファイルのタグ付けをサポートして、オブジェクトストアレイヤーでのオプションの保持管理を有効にするためのレプリカクラスター
プライベート、パブリック、ハイブリッド、マルチクラウドのアーキテクチャを有効にする、複数のKubernetesクラスターにわたるPostgreSQLの展開
PgBouncerによる接続プーリング
nodeSelectorを介したノードアフィニティのサポートmetricsポートを介したPrometheusのユーザー定義メトリックのネイティブでカスタマイズ可能なエクスポーター(9187)JSON形式のPostgreSQLエラーメッセージの標準出力ロギング
Podの
readOnlyRootFilesystemセキュリティコンテキストを自動的に設定kubectl用のcnpgプラグインシンプルバインドと検索+バインドLDAPクライアント認証
マルチアーチフォーマットのコンテナイメージ
注釈
CloudNativePGは、データの永続性を管理するために`StatefulSet` sを使用しません。むしろ、永続的なボリュームクレーム(PVC)を直接管理します。興味がある場合は、 カスタムポッドコントローラー を読んで詳細を確認してください。
このガイドについて¶
クイックスタート の指示に従って、KindまたはMinikubeを使用してローカルのKubernetesクラスターでCloudNativePGをテストします。
- KubernetesとPostgreSQLの基本的な用語に精通していない場合は、
始める前に を参照してください。
は、カナダPostgreSQL Community Associationの商標または登録商標であり、彼らの許可を得て使用されています。
- 始める前に
- ユースケース
- アーキテクチャ
- インストールとアップグレード
- クイックスタート
- ブートストラップ
- Postgresデータベースのインポート
- セキュリティ
- Postgresインスタンスマネージャー
- スケジューリング
- リソース管理
- 故障モード
- ローリングアップデート
- レプリケーション
- バックアップとリカバリ
- PostgreSQL設定
- データベースロール管理
- オペレーター設定
- インスタンスポッド構成
- ストレージ
- ラベルとアノテーション
- モニタリング
- ロギング
- 証明書
- クライアントTLS / SSL接続
- アプリから接続する
- コネクションプーリング
- レプリカクラスター
- Kubernetesアップグレード
- Postgresサービスの公開
- CloudNativePGプラグイン
- 自動フェイルオーバー
- トラブルシューティング
- フェンシング
- 宣言ハイバーネーション
- PostGIS
- エンドツーエンドのテスト
- コンテナイメージの要件
- オペレーターの能力レベル
- レベル1:基本インストール
- 宣言型構成によるオペレーターの展開
- 宣言構成によるPostgreSQLクラスターの展開
- CRDを介したオペランド画像のオーバーライド
- ラベルと注釈
- 自己完結型のインスタンスマネージャー
- ストレージ構成
- レプリカ構成
- データベース構成
- Postgresのロール、ユーザー、およびグループの構成
- ポッドセキュリティポリシー
- アフィニティ
- トポロジースプレッドの制約
- コマンドラインインターフェース
- クラスターの現在のステータス
- オペレーターの認証局
- クラスターの認証局
- TLS接続
- ストリーミングレプリケーションの証明書認証
- 継続的な構成管理
- 既存のPostgreSQLデータベースのインポート
- PostGISクラスター
- PostgreSQLの基本LDAP認証
- 複数のインストール方法
- 構成よりも規約
- レベル2:シームレスなアップグレード
- レベル3:フルライフサイクル
- PostgreSQLホットバックアップ
- スタンバイからのバックアップ
- バックアップからの完全復元
- バックアップからのポイントインタイムリカバリ(PITR)
- 同期レプリケーションによるゼロデータ損失クラスター
- レプリカクラスター
- LivenessとReadinessプローブ
- ローリングデプロイメント
- レプリカのスケールアップとスケールダウン
- KubernetesノードのメンテナンスウィンドウとPodDisruptionBudget
- フェンシング
- ハイバネーション(宣言的)
- ハイバネーション(必須)
- Podでの永続ボリュームストレージの再利用
- CPUとメモリのリクエストと制限
- PgBouncerを使用した接続プーリング
- レベル4:深い洞察
- レベル5:オートパイロット
- レベル1:基本インストール
- カスタムポッドコントローラー
- 例
- ネットワーキング
- ベンチマーク
- 商用サポート
- よくある質問(FAQ)
- APIリファレンス
- AffinityConfiguration
- AzureCredentials
- バックアップ
- BackupConfiguration
- バックアップリスト
- バックアップソース
- BackupSpec
- BackupStatus
- BarmanCredentials
- BarmanObjectStoreConfiguration
- BootstrapConfiguration
- BootstrapInitDB
- BootstrapPgBaseBackup
- BootstrapRecovery
- CertificatesConfiguration
- CertificatesStatus
- クラスター
- ClusterList
- ClusterSpec
- ClusterStatus
- ConfigMapKeySelector
- ConfigMapResourceVersion
- DataBackupConfiguration
- データソース
- EmbeddedObjectMetadata
- ExternalCluster
- Google資格情報
- インポート
- ImportSource
- インスタンスID
- InstanceReportedState
- LDAPBindAsAuth
- LDAPBindSearchAuth
- LDAPConfig
- LocalObjectReference
- ManagedConfiguration
- 管理対象ロール
- メタデータ
- MonitoringConfiguration
- NodeMaintenanceWindow
- PasswordState
- PgBouncerIntegrationStatus
- PgBouncerSecrets
- PgBouncerSpec
- PodTemplateSpec
- プーラー
- PoolerIntegrations
- PoolerList
- PoolerMonitoringConfiguration
- PoolerSecrets
- PoolerSpec
- PoolerStatus
- PostInitApplicationSQLRefs
- PostgresConfiguration
- RecoveryTarget
- ReplicaClusterConfiguration
- ReplicationSlotsConfiguration
- ReplicationSlotsHAConfiguration
- RoleConfiguration
- RollingUpdateStatus
- S3資格情報
- スケジュールされたバックアップ
- ScheduledBackupList
- ScheduledBackupSpec
- ScheduledBackupStatus
- SecretKeySelector
- SecretVersion
- SecretsResourceVersion
- ServiceAccountTemplate
- StorageConfiguration
- SyncReplicaElectionConstraints
- トポロジー
- WalBackupConfiguration
- サポートされているリリース
- リリースノート