ユースケース¶
CloudNativePGは、完全なクラウドネイティブエクスペリエンスのために、同じKubernetesクラスターにあるアプリケーションと連携するように設計されています。
ただし、データベースはKubernetesクラスター内でホストできますが、アプリケーションを同時にコンテナ化できず、VMなどの 従来の環境 で実行する必要がある場合があります。
ケース1:Kubernetes内のアプリケーション¶
一般的な状況では、アプリケーションとデータベースは、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¶
ケース2:Kubernetes外部のアプリケーション¶
もう1つの考えられるユースケースは、Kubernetes内でPostgreSQLデータベースを管理し、アプリケーションを外部(仮想化環境など)で管理することです。この場合、 PostgreSQLは、Kubernetesで定義されたIngressリソースに対応するIPアドレス(またはホスト名)とTCPポートで表されます。
アプリケーションは、PostgreSQLへのTLS接続のメリットを引き続き享受できます。
Application outside Kubernetes¶