Charmed PostgreSQL K8s How-To | Integrate with a client application

Integrate with a client application

This is an internal article. Do not use it in production!

Contact the Canonical Data Platform team if you are interested in this topic.

This guide will show you how to integrate a client application with a cross-regional async setup using an example PostgreSQL K8s deployment with two servers: one in Rome and one in Lisbon.

Prerequisites

Summary


Configure database endpoints

To make your database available to a client application, you must first offer and consume database endpoints.

Offer database endpoints

Offer the database endpoint on each of the postgresql applications.

juju switch rome
juju offer db1:database db1database

juju switch lisbon
juju offer db2:database db2database

Consume endpoints on client app

It is good practice to use a separate model for the client application rather than using one of the database host models.

juju add-model app
juju switch app
juju consume rome.db1database
juju consume lisbon.db2database

Internal client

If the client application is another charm, deploy them and connect them with juju integrate.

juju switch app

juju deploy postgresql-test-app
juju deploy pgbouncer-k8s --trust --channel 1/stable

juju relate postgresql-test-app:first-database pgbouncer-k8s
juju relate pgbouncer-k8s db1database

External client

If the client application is external, they must be integrated via the data-integrator charm.

juju switch app

juju deploy data-integrator --config database-name=mydatabase
juju deploy pgbouncer-k8s pgbouncer-external --trust --channel 1/stable

juju relate data-integrator pgbouncer-external
juju relate pgbouncer-external db1database

juju run data-integrator/leader get-credentials