ユースケース

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

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

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

一般的な状況では、アプリケーションとデータベースは、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

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

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

アプリケーションは、PostgreSQLへのTLS接続のメリットを引き続き享受できます。

Application outside Kubernetes

Application outside Kubernetes