アプリケーションからの接続¶
アプリケーションは、同じ Kubernetes クラスター内の CloudNativePG によって作成されたサービスと連携することになっています。
*[cluster name]-rw
*[cluster name]-ro
*[cluster name]-r
これらのサービスは Kubernetes クラスターによって完全に管理され、 :ref:``microservice` タイプ<microservice タイプ>` で説明されているように仮想 IP の形式を実装します。
ヒント
アプリケーションでこれらのサービスを使用し、特定の PostgreSQL インスタンスに直接接続しないことを強くお勧めします。後者はクラスターの有効期間中に変更される可能性があるためです。
これらのサービスは、次の方法でアプリケーションで使用できます。
DNS解決
環境変数
PostgreSQL に接続するための資格情報については、オペレーターによって生成されたシークレットを使用できます。
警告
オペレーターは、[cluster name]-any という名前の別のサービスを作成します。このサービスは、PostgreSQL インスタンスの検出を管理するために内部で使用されます。アプリケーションによって直接使用されることは想定されていません。
DNS 解決¶
Kubernetes DNS
サービスを使用して、特定のサーバーを指すことができます。オペレーターは
Kubernetes DNS サービスを必要とします。アプリケーションが PostgreSQL
クラスターと同じ名前空間にデプロイされている場合は、サービスの名前を使用してこれを行うことができます。
PostgreSQL クラスターが別の名前空間にある場合は、完全修飾子
service-name.namespace-name を使用できます。
DNS は、優先および推奨される検出方法です。
環境変数¶
アプリケーションを PostgreSQL クラスターを含む同じ名前空間にデプロイする場合、環境変数を使用してデータベースに接続することもできます。
たとえば、PostgreSQL クラスターの名前が pg-database
であるとすると、アプリケーションで次の環境変数を使用できます。
PG_DATABASE_R_SERVICE_HOST: 読み取り専用ワークロードのすべての PostgreSQL インスタンスを指すサービスの IP アドレスPG_DATABASE_RO_SERVICE_HOST: クラスターのすべてのホットスタンバイ レプリカを指すサービスの IP アドレスPG_DATABASE_RW_SERVICE_HOST: クラスターの primary インスタンスを指すサービスの IP アドレス
秘密¶
PostgreSQL オペレーターは、デプロイするすべての PostgreSQL
クラスターに対して 2 つの basic-auth
タイプのシークレットを生成します。
*[cluster name]-superuser
*[cluster name]-app
シークレットには、ユーザー名、パスワード、および作業中の .pgpass file が含まれています
それぞれ postgres ユーザーとデータベースの 所有者 です。
-app 資格情報は、PostgreSQL
クラスターに接続するアプリケーションが使用する資格情報です。
-superuser のものは、管理目的でのみ使用されることになっています。