CloudNativePG
=============
CloudNativePG CNPGは、オープンソースの `operator `_
サポートされている `Kubernetes `_ クラスターで `PostgreSQL `_ ワークロードを管理するように設計されています。
:ref:`レプリカクラスターから分散トポロジへ <レプリカクラスターから分散トポロジへ>` 機能を介して、プライベート、パブリック、ハイブリッド、およびマルチクラウド環境でのシームレスな展開を介してクラウドの中立性を促進します。
DevOps原則を中心に構築されたCloudNativePGは、宣言的構成と不変のインフラストラクチャを採用し、データベース管理の信頼性と自動化を保証します。
CloudNativePGは、その中核で、\ ``Cluster``
と呼ばれるカスタムKubernetesリソースを導入します。これは、次のPostgreSQLクラスターを表します。
- 書き込み操作のための単一のプライマリインスタンス。
- 高可用性と読み取りスケーリングのためのオプションのレプリカ。
これらのインスタンスはKubernetes名前空間内にあるため、アプリケーションはオペレーター管理サービスを使用してシームレスに接続できます。フェイルオーバーとスイッチオーバーは透過的に発生するため、手動介入の必要はありません。
Kubernetesクラスター内のアプリケーションの場合、CNPGはマイクロサービスデータベースアプローチを提供し、最適化されたアクセスのために同じ名前空間内のPostgreSQLクラスターとアプリケーションのコロケーションを可能にします。クラスター外部のアプリケーションの場合、
CNPGは、サービステンプレートと\ ``LoadBalancer``
サービスを介して柔軟な接続を提供し、直接TCP公開します。さらに、Webアプリケーションは、PgBouncerに基づいたネイティブ接続プーラーを利用できます。
CloudNativePGは、もともと `EDB `_ によってビルドされ、Apache
License 2.0の下でオープンソースをリリースしました。 `source code repository is in GitHub `_ 。
.. Note::
:ref:`Operator Capability Levels model <オペレーター能力レベル>` に基づいて、ユーザーはCloudNativePGオペレーターからの機能の「レベルV - 自動パイロット」サブセットを期待できます。
サポートされているKubernetesディストリビューション
--------------------------------------------------
CloudNativePGの各マイナーリリースは、さまざまなKubernetesバージョン、通常、マイナーバージョンが最初にリリースされたときにCNCFによってサポートされているバージョンで動作するように設計されています。
詳細は :ref:`サポートされているリリース <サポートされているリリース>` ページを参照してください。
コンテナイメージ
----------------
`CloudNativePG community `_ は、オペレーターとPostgreSQLオペランドの両方のコンテナイメージを維持します。
オペレーター
^^^^^^^^^^^^
CloudNativePGオペレーターコンテナイメージは、
`cloudnative-pg `_ で入手できます。
3つの異なるフレーバーで
- Debian 12ディストリビューション
- Red Hat UBI 9 microサフィックス ``-ubi9``
Red Hat UBIイメージは、主にOLM使用を目的としています。
すべてのコンテナイメージは署名され、アーキテクチャごとに個別に提供されるSBOMと来歴証明書が含まれています。
オペランド
^^^^^^^^^^
PostgreSQLオペランドコンテナイメージは、複数のアーキテクチャにわたって、すべての `PGDG supported versions of PostgreSQL `_ で
`postgres-containers `_ から直接利用できます。
`minimal `_
と `standard `_
コンテナイメージは署名され、アーキテクチャごとに個別に提供されるSBOMと来歴証明書が含まれます。
毎週のジョブにより、スタック全体の重大な脆弱性CVEが迅速に対処されます。
さらに、コミュニティは :ref:`PostGIS extension ` のイメージを提供しています。
主な機能
--------
- 高可用性のためのKubernetes
APIサーバーとの直接統合、外部ツールの必要性を排除します。
-
- 最も調整されたレプリカをプロモーションすることによる自動フェイルオーバー。
- 障害が発生したレプリカの自動再作成。
- 選択したレプリカをプロモーションすることによるプライマリインスタンスの計画的なスイッチオーバー。
- 主要なPostgreSQL構成の宣言的管理。以下を含む。
- PostgreSQL設定.
- ロール、ユーザー、およびグループ.
- データベース、拡張機能、およびスキーマ.
- テーブルスペース一時テーブルスペースを含む。
- 柔軟なインスタンス定義、任意の数のインスタンス最小1プライマリサーバーをサポート。
- クラスターサイズを動的に調整するスケールアップ/ダウン機能。
- 読み取り書き込みおよび読み取り専用サービス、アプリケーションが正しく接続できるように保証します。
- *読み取り書き込みサービス*
プライマリサーバーへの接続をルーティングします。
- *読み取り専用サービス*
読み取りワークロードのレプリカ間で接続を分散します。
- クォーラムベースおよび優先度ベースのPostgreSQL同期レプリケーションのサポート。
- 複数のKubernetesクラスタープライベート、パブリック、ハイブリッド、マルチクラウドにわたってPostgreSQL分散トポロジを有効にするレプリカクラスター。
- 履歴データへのポイントインタイムアクセスのための遅延レプリカクラスター。
- 永続ボリューム管理など
- PVCテンプレートを使用したローカル永続ボリュームのサポート
- Podsでの永続ボリュームストレージの再利用
- WALファイルとテーブルスペースの個別のボリューム。
- CNPG-Iプラグインを介したバックアップとリカバリー
- 継続的な物理的バックアップとリカバリーのためのプラガブルアーキテクチャ.
- ホットおよびコールドベースバックアップ.
- WAL archive.
- フルおよびポイントインタイムリカバリーPITR.
- スケジュールされたオンデマンドbackups.
- スタンバイからバックアップして、プライマリ負荷を削減します。
- コミュニティサポートされたBarman Cloudプラグイン
- 完全な/
PITRリカバリをサポートするオブジェクトストアへのWALアーカイブ
- 構成可能なリカバリに基づいたリテンションポリシー windows.
- CNPG-Iプラグインとしてサポートされている推奨アプローチ。
- ネイティブバックアップ方法
- ボリュームスナップショットを介した継続的バックアップとフル/PITRリカバリー
ストレージクラスでサポートされている場合
- ``.spec.backup.barmanObjectStore`` *v1.26以降非推奨*
を介したオブジェクトストアバックアップのためのBarman
Cloudとのネイティブ統合。
- PostgreSQLのオフラインインプレースメジャーアップグレード
- メジャーアップグレードを含むPostgreSQLデータベースのオフラインおよびオンラインインポート
- *オフラインインポート* 既存のデータベースからの直接復元
- *オンラインインポート* ``Subscription``
リソースを介したPostgreSQLネイティブ論理レプリケーション。
- 高可用性物理レプリケーションスロット。ユーザー定義のレプリケーションスロットと論理デコードフェイルオーバーの同期を含みます。
- パラレルWALのアーカイブとリストア、高書き込み環境での高パフォーマンスのデータ同期を保証します。
- TLSサポート以下を含むTLSサポート
- 安全な接続とクライアント証明書認証。
- カスタムTLS証明書 ``cert-manager`` と統合。
- プライマリからの目的の遅延に基づいたレプリカプローブを含むスタートアッププローブと準備状況プローブ。
-
- PostgreSQLマイナーバージョン.
- の宣言的ローリング更新インプレースまたはローリング更新。
- JSON形式のPostgreSQLエラーメッセージの標準出力ログにより、ログ集計ツールとの統合が簡単になります。
- カスタムモニタリングのためのPrometheus互換のメトリックエクスポーター\ ``metrics``
ポート9187。
- クラスター操作を簡素化するための\ ``kubectl`` 用の\ ``cnpg``
プラグイン
- 非アクティブな状態でのリソース効率のためのクラスターハイバーネーション。
- 必要に応じてインスタンスを分離するためのPostgreSQLクラスター完全なクラスターまたはサブセットをフェンシングします。
- PgBouncerを使用した接続プーリングによるデータベース効率の向上。
- 合理化された展開のためのOLM Operator Lifecycle
Managerインストールのサポート。
- ソフトウェア部品表SBOMとセキュリティコンプライアンスのための出所証明書を含むマルチアーチコンテナイメージ。
.. NOTE::
CloudNativePGは、データの永続性の管理に`StatefulSet` sを使用しません。代わりに、Persistent Volume ClaimsPVCを直接管理します。詳細は、 :ref:`カスタムポッドコントローラ <カスタムポッドコントローラ>` を参照してください。
このガイドについて
------------------
:ref:`クイックスタート <クイックスタート>` の指示に従って、KindまたはMinikubeを使用してローカルKubernetesクラスターでCloudNativePGをテストします。
KubernetesとPostgreSQLの基本的な用語に慣れていない場合は、
:ref:`始める前に <始める前に>` を参照してください。
CloudNativePGドキュメントは、クリエイティブコモンズ表示4.0国際ライセンスに基づいてライセンスされています。
CloudNativePGは `Cloud Native Computing Foundation Sandbox project `_ です。
|image1|
.. |image1| image:: https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png?raw=true