ユースケース

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 データベースを管理し、アプリケーションを Kubernetes の外部 (仮想化環境など) に置くことです。この場合、PostgreSQL は、Kubernetes で定義された Ingress リソースに対応する IP アドレス (またはホスト名) と TCP ポートで表されます。

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

Application outside Kubernetes

Application outside Kubernetes