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