はじめに
========
**CloudNativePG** は、オープンソース `operator `_
プライベート、パブリック、ハイブリッド、またはマルチクラウド環境で実行されているサポートされている `Kubernetes `_ クラスターで `PostgreSQL `_ ワークロードを管理するように設計されています。
CloudNativePGは、宣言的構成や不変のインフラストラクチャなどのDevOpsの原則と概念を遵守しています。
``Cluster``
と呼ばれる新しいKubernetesリソースを定義します。高可用性と読み取り専用クエリのオフロードのために、選択したKubernetes名前空間に共存する単一のプライマリとオプションの数のレプリカで構成されるPostgreSQLクラスターを表します。
同じKubernetesクラスターにあるアプリケーションは、オペレーターによってのみ管理されるサービスを使用してPostgreSQLデータベースにアクセスでき、フェールオーバーまたはスイッチオーバーに続くプライマリロールの変更を心配する必要はありません。
Kubernetesクラスターの外部にあるアプリケーションは、TCP経由でPostgresを公開するようにServiceまたはIngressオブジェクトを構成する必要があります。
Webアプリケーションは、PgBouncerに基づいたネイティブ接続プーラーを利用できます。
CloudNativePGは、もともと `EDB `_
によってビルドされ、その後、Apache License
2.0の下でオープンソースをリリースし、2022年4月にCNCFサンドボックスに提出されました。
`source code repository is in Github `_ 。
.. Note::
:ref:`Operator Capability Levels model <オペレーター能力レベル>` に基づいて、ユーザーはCloudNativePGオペレーターからの**「レベルV - 自動パイロット」**機能セットを期待できます。
サポートされているKubernetesディストリビューション
--------------------------------------------------
CloudNativePGの各マイナーリリースは、さまざまなKubernetesバージョン、通常、マイナーバージョンが最初にリリースされたときにCNCFによってサポートされているバージョンで動作するように設計されています。
詳細は :ref:`サポートされているリリース <サポートされているリリース>` ページを参照してください。
コンテナイメージ
----------------
`CloudNativePG community `_ は、演算子とオペランドの両方、つまりPostgreSQLのコンテナイメージを維持します。
CloudNativePGオペレーターコンテナイメージは `distroless `_ です
`cloudnative-pg `_ で利用できます。
PostgreSQLオペランドコンテナイメージは、複数のアーキテクチャでのすべての `PGDG supported versions of PostgreSQL `_ で
`postgres-containers `_ から直接利用できます。
さらに、コミュニティは :ref:`PostGIS extension ` のイメージを提供しています。
.. Warning::
CloudNativePGでは、Kubernetesクラスター内のすべてのノードが同じCPUアーキテクチャである必要があります。したがって、ハイブリッドCPUアーキテクチャのKubernetesクラスターはサポートされていません。
主な機能
--------
- 外部ツールを必要とせずに、高可用性を実現するKubernetes
APIサーバーとの直接統合
- 以下を介した自己修復機能
*最も調整されたレプリカをプロモーションすることによるプライマリインスタンスのフェイルオーバー*
レプリカの自動再作成
- 選択したレプリカの昇格によるプライマリインスタンスの計画的なスイッチオーバー
- スケールアップ/ダウン機能
- 任意の数のインスタンスの定義最小1 - 1つのプライマリサーバー
- アプリケーションをクラスターの唯一のプライマリサーバーに接続するための
*読み取り-書き込み* サービスの定義
- ワークロードを読み取るためのインスタンスにアプリケーションを接続するための
*読み取り専用* サービスの定義
- クラスターを介した特定の人気のPostgres拡張機能を含むPostgreSQL構成の宣言管理
``spec`` ``pgaudit`` 、\ ``auto_explain`` 、\ ``pg_stat_statements``
、および\ ``pg_failover_slots``
- Postgresのロール、ユーザー、グループの宣言的管理
- PVCテンプレートを使用したローカル永続ボリュームのサポート
- ポッドの永続ボリュームストレージの再利用
- WALファイルの別冊
- PostgreSQLマイナーバージョンのローリングアップデート
- オペレーターアップグレードのインプレースまたはローリング更新
- TLS接続とクライアント証明書認証
- カスタムTLS証明書のサポートcert-managerとの統合を含む
- オブジェクトストアへの継続的なWALアーカイブAWS S3およびS3互換、Azure
Blob Storage、およびGoogle Cloud Storage
- ボリュームスナップショットのバックアップ基になるストレージクラスでサポートされている場合
- オブジェクトストアのバックアップAWS S3およびS3互換、Azure Blob
Storage、およびGoogle Cloud Storage
- ボリュームスナップショットまたはオブジェクトストアの既存のバックアップからのフルリカバリーおよびポイントインタイムリカバリー
- PostgreSQLのメジャーアップグレードを含む、既存のPostgreSQLデータベースのオフラインインポート
- 宣言的な方法でのPostgreSQLクラスター全体、またはインスタンスのサブセットのフェンシング
- 宣言的な方法でのPostgreSQLクラスターの休止状態
- 同期レプリカのサポート
- クラスターレベルでのHA物理レプリケーションスロットのサポート
- スタンバイからのバックアップ
- バックアップ保持ポリシーリカバリウィンドウに基づいて、オブジェクトストアのみ
- 並列WALアーカイブと復元により、データベースが大量の書き込みシステムでのWAL生成に追いつくことができます
- オブジェクトストアにアップロードされたバックアップファイルのタグ付けをサポートして、オブジェクトストアレイヤーでオプションの保持管理を有効にします
- 複数のKuberneteクラスターにわたるPostgreSQLの展開、プライベート、パブリック、ハイブリッド、マルチクラウドアーキテクチャを有効にします
- PgBouncerを使用した接続プーリング
- ``nodeSelector`` を介したノードアフィニティのサポート
- ``metrics``
ポート9187を介したプロメテウスのユーザー定義メトリックのネイティブなカスタマイズ可能なエクスポーター
- JSON形式のPostgreSQLエラーメッセージの標準出力ログ
- ポッドの\ ``readOnlyRootFilesystem``
セキュリティコンテキストを自動的に設定します
- ``kubectl`` 用の\ ``cnpg`` プラグイン
- 単純なバインドと検索+バインドのLDAPクライアント認証
- マルチアーチフォーマットのコンテナイメージ
- OLMのインストール
.. Note::
CloudNativePGは、データの永続性の管理に`StatefulSet` sを使用しません。代わりに、永続ボリューム要求PVCを直接管理します。ご興味がある場合は、 :ref:`カスタムポッドコントローラ <カスタムポッドコントローラ>` を読んで詳細をご覧ください。
このガイドについて
------------------
:ref:`クイックスタート <クイックスタート>` の指示に従って、KindまたはMinikubeを使用してローカルKubernetesクラスターでCloudNativePGをテストします。
KubernetesとPostgreSQLの基本的な用語に慣れていない場合は、
:ref:`始める前に <始める前に>` を参照してください。
- `Postgres, PostgreSQL and the Slonik Logo `_
は、カナダPostgreSQLコミュニティ協会の商標または登録商標であり、その許可を得て使用しています。\*