アプリケーションから接続する¶
アプリケーションは、同じ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: クラスターのプライマリインスタンスを指すサービスのIPアドレス
秘密¶
PostgreSQL オペレーターは、デプロイするすべての PostgreSQL
クラスターに対して 2 つの basic-auth
タイプのシークレットを生成します。
[cluster name]-superuser[cluster name]-app
シークレットには、それぞれpostgres
ユーザーとデータベースの所有者のユーザー名、パスワード、および作業中の .pgpass file が含まれています。
-app
資格情報は、PostgreSQLクラスターに接続するアプリケーションで使用する必要があります。
-superuser は管理目的でのみ使用されることになっています。