アプリから接続する

アプリケーションは、同じ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 のものは、管理目的でのみ使用されることになっています。