Use cases¶
CloudNativePGは、完全なクラウドネイティブ体験のために、同じKubernetesクラスターに存在するアプリケーションで動作するように設計されています。
ただし、データベースはKubernetesクラスター内でホストできますが、アプリケーションを同時にコンテナー化できず、VMなどの従来の環境で実行する必要がある場合があります。
ケース1:Kubernetes内のアプリケーション¶
典型的なシチュエーションでは、アプリケーションとデータベースは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¶
ケース2:Kubernetes外のアプリケーション¶
もう1つの可能なユースケースは、Kubernetes内でPostgreSQLデータベースを管理し、外部にアプリケーションを配置することです(例、仮想化環境)。この場合、 PostgreSQLはKubernetesで定義されたIngressresourceに対応するIPアドレス(またはホスト名前)とTCPポートで表されます。
アプリケーションは、 PostgreSQLへのTLS接続の恩恵を受けることができます。
Application outside Kubernetes¶