Use cases
=========
.. raw:: html
CloudNativePGは、完全なクラウドネイティブエクスペリエンスを実現するために、同じKubernetesクラスター内にあるアプリケーションと連携するように設計されています。
ただし、データベースはKubernetesクラスター内でホストできますが、アプリケーションは同時にコンテナ化できず、VMなどの
*従来の環境* で実行する必要がある場合があります。
ケース1Kubernetes内のアプリケーション
-------------------------------------
通常、アプリケーションとデータベースは、Kubernetesクラスター内の同じ名前空間で実行されます。
.. figure:: /images/apps-in-k8s.png
:width: 30%
:alt: Application and Database inside Kubernetes
Application and Database inside Kubernetes
アプリケーションは通常ステートレスで、標準の\ ``Deployment``
として管理され、複数のレプリカが異なるKubernetesノードに分散され、
``ClusterIP`` サービスを介して内部公開されます。
サービスは、 ``Ingress``
およびプロバイダーのロードバランサー機能を介して、HTTPSを介してエンドユーザーに外部公開されます。
アプリケーションは、バックエンドのPostgreSQLデータベースを使用して、信頼性の高い永続的な方法で状態を追跡します。アプリケーションは、TLS接続を介して、現在のプライマリインスタンスをポイントするCloudNativePGによって定義された\ ``Cluster``
リソースによって公開される読み取り/書き込みサービスを参照します。
``Cluster``
リソースは、単一のプライマリと複数のスタンバイアーキテクチャのロジックを埋め込み、Postgresでの高可用性クラスターの管理の複雑さを隠蔽します。
.. figure:: /images/architecture-in-k8s.png
:width: 40%
:alt: Close-up view of application and database inside Kubernetes
Close-up view of application and database inside Kubernetes
ケース2Kubernetes外部のアプリケーション
---------------------------------------
もう1つの考えられるユースケースは、Kubernetes内でPostgreSQLデータベースを管理し、アプリケーションをその外部たとえば仮想化環境に持たせることです。この場合、PostgreSQLは、Kubernetesで定義されたIngressリソース通常は :ref:`Service management ` ページで説明している\ ``LoadBalancer``
サービスタイプに対応するIPアドレスまたはホスト名とTCPポートで表されます。
アプリケーションは、PostgreSQLへのTLS接続の恩恵を引き続き受けられます。
.. figure:: /images/apps-outside-k8s.png
:width: 50%
:alt: Application outside Kubernetes
Application outside Kubernetes