Introduction
============
.. raw:: html
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:`Supported releases ` ページを参照してください。
コンテナイメージ
----------------
`CloudNativePG community `_ は、オペレーターとPostgreSQLオペランドの両方のコンテナイメージを維持します。
オペレーター
^^^^^^^^^^^^
CloudNativePGオペレーターコンテナイメージは、
`cloudnative-pg `_ で入手できます。
3つの異なるフレーバーで
- Debian 12ディストリビューション
- Red Hat UBI 9 microサフィックス ``-ubi9``
Red Hat UBIイメージは、主にOLM使用を目的としています。
すべてのコンテナイメージは署名され、アーキテクチャごとに個別に提供されるSBOMと来歴証明書が含まれています。
オペランド
^^^^^^^^^^
CloudNativePGプロジェクトは、 ``linux/amd64`` および\ ``linux/arm64``
アーキテクチャの両方に、公式の `Debian `slim` base image `_ の上に構築されたPostgreSQLオペランドコンテナイメージを提供および保守します。
画像はすべて `Debian supported releases `_ で公開されています
`stable `_ 、 `oldstable `_ および `PostgreSQL versions supported by PGDG `_ の場合。これらは
`postgres-containers `_ を介して配布されます。
3つの画像フレーバーが使用でき、それぞれが以前のものを拡張します。
- `minimal `_
- `standard `_
- `system `_ *非推奨*
.. Note::
`system` イメージは非推奨であり、インコアのBarman Cloudサポートが段階的に廃止されると削除されます。今のところは使用可能なままですが、 Barman Cloudプラグインまたは別のサポートされているバックアップソリューションを使用して`minimal` または`standard` イメージへの将来の移行を計画することができます。
デフォルトでは、このバージョンのCloudNativePGは\ ``ghcr.io/cloudnative-pg/postgresql:18.1-system-trixie``
を展開します。
すべての画像は署名され、SBOMおよび出所証明書とともに出荷されます。毎週の自動ビルドにより、重大な脆弱性CVEが迅速に修正されます。
詳細とサポートについては、 `postgres-containers `_ を参照してください。
主な機能
--------
- 高可用性のためのKubernetes
APIサーバーとの直接統合、外部ツールの必要性を排除します。
- 下記を含む自己修復機能
- 自動フェイルオーバー、最新のデータでレプリカを昇格させ、クォーラムベースのフェイルオーバーと同期レプリケーションを使用してデータの耐久性と安全性を向上させるオプション。
- 障害が発生したレプリカの自動再作成。
- 選択したレプリカをプロモーションすることによるプライマリインスタンスの計画的なスイッチオーバー。
- 主要なPostgreSQL構成の宣言的管理。以下を含む。
- PostgreSQL設定.
- ロール、ユーザー、およびグループ。
- データベース、拡張機能、スキーマ、外部データラッパーFDW、および外部サーバー.
- テーブルスペース一時表領域を含む。
- 柔軟なインスタンス定義、任意の数のインスタンス最小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:`Custom Pod Controller ` を参照してください。
このガイドについて
------------------
:ref:`Quickstart ` の指示に従って、KindまたはMinikubeを使用してローカルKubernetesクラスターでCloudNativePGをテストします。
KubernetesとPostgreSQLの基本的な用語に慣れていない場合は、
:ref:`Before you start ` を参照してください。
CloudNativePGドキュメントは、クリエイティブコモンズ表示4.0国際ライセンスに基づいてライセンスされています。
--------------
- `Postgres, PostgreSQL, and the Slonik Logo `_
は、カナダPostgreSQLコミュニティ協会の商標または登録商標であり、その許可を得て使用しています。\*
--------------
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