Connecting from an application¶
アプリケーションは、同じKubernetesクラスターでCloudNativePGによって作成されたサービスと連携することになっています。
[cluster name]-rw[cluster name]-ro[cluster name]-r
これらのサービスはKubernetesクラスターによって完全に管理され、 Exposing Postgres Services で説明されているように仮想IPのフォームを実装します。
ヒント
アプリケーションでこれらのサービスを使用し、特定のPostgreSQLインスタンスへの直接接続を避けることを強くお勧めします。後者はクラスターの存続期間中に変更される可能性があります。
これらのサービスは、次の方法でアプリケーションで使用できます。
DNS解決 *環境変数
PostgreSQLに接続するための資格情報には、演算子が生成したシークレットを使用できます。
警告
演算子は、 [cluster name]-any 名前付けの別のサービスを作成します。このサービスは、 PostgreSQLインスタンスの検出を管理するために内部的に使用されます。アプリケーションが直接使用することは想定されていません。
DNS解決¶
Kubernetes
DNSサービスを使用して、特定のサーバーを指すことができます。KubernetesDNSサービスは、演算子が必要です。アプリケーションがPostgreSQLクラスターと同じネームスペースにデプロイされている場合は、サービスの名前を使用してこれを行うことができます。
PostgreSQLクラスターが別のネームスペースにある場合は、完全修飾子
service-name.namespace-name を使用できます。
DNSは、推奨される推奨される発見メソッドです。
環境変数¶
PostgreSQLクラスターを含む同じネームスペースにアプリケーションをデプロイする場合、環境変数を使用してデータベースに接続することもできます。
例、 PostgreSQLクラスタの名前が pg-database
であるとします。アプリケーションで次の環境変数を使用できます。
PG_DATABASE_R_SERVICE_HOST:サービスのIPアドレス 読み取り専用ワークロード用のすべてのPostgreSQLインスタンスを指すPG_DATABASE_RO_SERVICE_HOST:のIPアドレス クラスタのすべてのホットスタンバイレプリカを指すサービスPG_DATABASE_RW_SERVICE_HOST:のIPアドレス クラスタの* プライマリ*インスタンスを指すサービス
秘密¶
PostgreSQL演算子は、デプロイするすべてのPostgreSQLクラスターに対して2つの
basic-auth タイプシークレットを生成します。
[cluster name]-superuser[cluster name]-app
シークレットには、データベースの postgres ユーザと* owner
*のユーザー名、パスワード、および作業中の .pgpass file がそれぞれ含まれています。
-app クレデンシャルは、
PostgreSQLクラスターに接続するアプリケーションが使用する必要があるクレデンシャルです。
-superuser のものは、管理目的でのみ使用されることになっています。