Create a PostgreSQL service
Apply the following object on your namespace, as specified by its YAML description.
Example to create a PostgreSQL instance
apiVersion: exoscale.appcat.vshn.io/v1
kind: ExoscalePostgreSQL
metadata:
name: my-postgres-example (1)
namespace: my-namespace (2)
spec:
parameters:
backup:
timeOfDay: "12:00:00" (3)
service:
zone: ch-dk-2 (4)
majorVersion: "14" (5)
pgSettings:
timezone: Europe/Zurich (6)
size:
plan: hobbyist-2 (7)
writeConnectionSecretToRef:
name: postgres-creds (8)
1 | Instance name |
2 | The namespace where the object will be created |
3 | Specify backup time of day |
4 | The Exoscale zone to use, see list of regions |
5 | PostgreSQL version |
6 | Specify custom PostgreSQL settings [optional] |
7 | See reference for a list of plans |
8 | Secret where the connection details are provisioned. This secret shouldn’t exist before creation. |
To get more information about all available configuration options, please refer to the API Reference |
Inspect your new PostgreSQL service
$ oc get exoscalepostgresql
NAMESPACE NAME PLAN ZONE READY CONNECTION-SECRET AGE
my-namespace my-postgres-example hobbyist-2 ch-dk-2 True postgres-creds 5m
When you see True
in the READY column, it means the instance is provisioned and ready to use.
Find the connection details
The connection details are stored in a secret. You can retrieve them with the following command:
$ oc get secrets postgres-creds -o yaml
Kubernetes secrets are base64 encoded. See Working with kubernetes secrets. |
The output of the command above is a secret specification with the following structure:
apiVersion: v1
kind: Secret
metadata:
name: postgres-creds
stringData:
POSTGRESQL_DB: postgres (1)
POSTGRESQL_HOST: my-postgres-example.my-cloud.com (2)
POSTGRESQL_PASSWORD: my-secret (3)
POSTGRESQL_PORT: 21699 (4)
POSTGRESQL_URL: postgres://postgres:my-secret@my-postgres-example.my-cloud.com:21699/postgresql?sslmode=require (5)
POSTGRESQL_USER: postgres (6)
ca.crt: base64encoded(data) (7)
tls.crt: base64encoded(data) (8)
tls.key: base64encoded(data) (9)
1 | Database name |
2 | Host to connect to |
3 | Password |
4 | Port |
5 | URL containing all necessary information to connect to the instance |
6 | Username |
7 | ca.crt to use when using sslmode=verify-full |
8 | tls.crt to use when connecting to instance |
9 | tls.key to use when connecting to instance |
Not all fields apply to all providers |