This chapter describes the use of pgBackRest in combination with Azure Blob Storage. It is not absolutely necessary to operate a Kubernetes on the Azure Cloud Platform. However, as with any cloud storage, the efficiency and therefore the duration of a backup depends on the connection.
Precondition: a blob-storage-volume and a priviledged role is needed for this chapter.
As soon as all requirements are met:
- An Azure-Blob-Storage-Volume
- A JSON token for the service role with the required authorisations for the Volume
the cluster can be modified. Firstly, a secret containing the JSON token is created and the cluster manifest is adapted accordingly.
The first step is to create the required secret. This is most easily done using a kubectl
command.
kubectl create secret generic cluster-1-gcs-credentials --from-file=gcs.json=fluent.json
In the next step, both the secret name and the file name of the JSON token are stored in the secret in the cluster manifest. In addition, global settings, such as the retention time of the backups in the global object, are defined, the image for pgBackRest
is specified and the necessary information for the repository is added. This includes both the desired storage path in the bucket and the times for automatic backups based on the cron syntax.
apiVersion: cpo.opensource.cybertec.at/v1
kind: postgresql
metadata:
name: cluster-1
spec:
backup:
pgbackrest:
configuration:
secret: cluster-1-gcs-credentials
global:
repo1-path: /cluster-1/repo1/
repo1-retention-full: '7'
repo1-retention-full-type: count
image: docker.io/cybertecpostgresql/cybertec-pg-container:pgbackrest-16.4-1'
repos:
- name: repo1
resource: postgresql-backup-bucket
key: gcs.json
keyType: service
schedule:
full: 30 2 * * *
storage: gcs