Use cases

CloudNativePGは、完全なクラウドネイティブ体験のために、同じKubernetesクラスターに存在するアプリケーションで動作するように設計されています。

ただし、データベースはKubernetesクラスター内でホストできますが、アプリケーションを同時にコンテナー化できず、VMなどの従来の環境で実行する必要がある場合があります。

ケース1:Kubernetes内のアプリケーション

典型的なシチュエーションでは、アプリケーションとデータベースはKubernetesクラスター内の同じ名前空間で実行されます。

Application and Database inside Kubernetes

Application and Database inside Kubernetes

通常、ステートレスなアプリケーションは、マルチプルのレプリカが異なるKubernetesノードに分散され、 ClusterIP サービスを介して内部的に公開されている標準の Deployment として管理されます。

サービスは、 Ingress およびプロバイダーのロード機能を介して、HTTPS経由でエンドユーザに外部に公開されます。

アプリケーションは、バックエンドPostgreSQLデータベースを使用して、信頼できる永続的な方法で状態を追跡します。アプリケーションは、TLS接続を介して現在のプライマリインスタンスを指すCloudNativePGによって定義された Cluster リソースによって公開される読み取り/書き込みサービスを参照します。 Cluster リソースには、単一のプライマリアーキテクチャとマルチプルのスタンバイアーキテクチャのロジックが組み込まれているため、Postgresで高可用性クラスターを管理する複雑さが隠されています。

Close-up view of application and database inside Kubernetes

Close-up view of application and database inside Kubernetes

ケース2:Kubernetes外のアプリケーション

もう1つの可能なユースケースは、Kubernetes内でPostgreSQLデータベースを管理し、外部にアプリケーションを配置することです(例、仮想化環境)。この場合、 PostgreSQLはKubernetesで定義されたIngressresourceに対応するIPアドレス(またはホスト名前)とTCPポートで表されます。

アプリケーションは、 PostgreSQLへのTLS接続の恩恵を受けることができます。

Application outside Kubernetes

Application outside Kubernetes