Database¶
RAIL provide Postgres clusters that you can set up to provide database services for your application. These are provided by the CloudNativePG operator.
Postgres clusters are by default created with a database called app
and a
corresponding user called app
as well, but in order to connect to it we also
need to provide a password for the user. The password is set up with a
secret like this one:
apiVersion: v1
kind: Secret
metadata:
name: db-app-user
type: kubernetes.io/basic-auth
stringData:
username: app
password: pass1
and then you can set up the cluster with a reference to this secret with:
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: db
spec:
instances: 2
monitoring:
enablePodMonitor: true
bootstrap:
initdb:
database: app
owner: app
secret:
name: db-app-user
storage:
size: 500Mi
This sets up a service with a name derived from the cluster name, suffixed by
-rw
(in this case db-rw
), that you can connect to. In another Pod in the
same namespace where the psql
command is available you can connect to the
database like this:
$ psql --host=db-rw --username=app
Password for user app:
psql (16.9 (Ubuntu 16.9-0ubuntu0.24.04.1), server 17.0 (Debian 17.0-1.pgdg110+1))
WARNING: psql major version 16, server major version 17.
Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
app=>
Backup¶
To be answered…