アプリから接続する¶
アプリケーションは、同じKubernetesクラスター内のCloudNativePGによって作成されたサービスで動作することになっています。
[cluster name]-rw[cluster name]-ro[cluster name]-r
- これらのサービスはKubernetesクラスターによって完全に管理され、
ServiceAccountTemplate で説明されている形式の仮想IPを実装します。
ヒント
アプリケーションでこれらのサービスを使用し、特定のPostgreSQLインスタンスへの直接接続を避けることを強くお勧めします。後者はクラスターの有効期間中に変更される可能性があります。
次の方法で、アプリケーションでこれらのサービスを使用できます。
DNS解決
*環境変数
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
シークレットには、ユーザー名、パスワード、および作業用の .pgpass file が含まれています
それぞれpostgres ユーザーとデータベースの 所有者 。
-app
資格情報は、PostgreSQLクラスターに接続するアプリケーションで使用する必要がある資格情報です。
-superuser のものは、管理目的でのみ使用されることになっています。