Use cases

CloudNativePGは、完全なクラウドネイティブエクスペリエンスを実現するために、同じKubernetesクラスター内にあるアプリケーションと連携するように設計されています。

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

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

通常、アプリケーションとデータベースは、Kubernetesクラスター内の同じ名前空間で実行されます。

Application and Database inside Kubernetes

Application and Database inside Kubernetes

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

サービスは、 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

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

もう1つの考えられるユースケースは、Kubernetes内でPostgreSQLデータベースを管理し、アプリケーションをその外部たとえば仮想化環境に持たせることです。この場合、PostgreSQLは、Kubernetesで定義されたIngressリソース通常は Service management ページで説明しているLoadBalancer サービスタイプに対応するIPアドレスまたはホスト名とTCPポートで表されます。

アプリケーションは、PostgreSQLへのTLS接続の恩恵を引き続き受けられます。

Application outside Kubernetes

Application outside Kubernetes