Skip to content

Zalando Postgress Operator

We are experimenting with the Zalando PostgeSQL Operator to create postgresql clusters and manage backups to S3. Our main interest here is that they support major version backups. Our main concern is the mutual TLS support.

In the PostgeSQL Operator, backups for S3 are done to local s3 endpoints consistently and to a configurable remote endpoint. You can see more in our Zalando Postgres Operator Argo CD Application.

Example yaml config

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
apps:
  postgres_operator:
    description: |
      ⚠️ [magenta][i]demo[/i] status[/magenta]

      postgres-operator is a Kubernetes operator for postgresql by Zalando.

      smol-k8s-lab supports initialization by setting up your ingress hostnames, and then also creating a local s3 endpoint exclusively for backups with and additional configurable endpoint for backups to an external s3
    enabled: true
    init:
      enabled: true
    argo:
      # secrets keys to make available to Argo CD ApplicationSets
      secret_keys:
        # FQDN to use for postgres operator web interface
        hostname: "postgres-ui.boopthesnoot.cute"
        s3_endpoint: "postgres-s3.boopthesnoot.cute"
        s3_bucket: zalando-postgres-operator
        s3_region: eu-west-1
        backup_schedule: 30 18 * * *
        backup_retention_time: 8 weeks
      # git repo to install the Argo CD app from
      repo: https://github.com/small-hack/argocd-apps
      # path in the argo repo to point to. Trailing slash very important! This
      # is an app of apps. Change to "monitoring/kube-prometheus-stack/" to
      # only install kube-prometheus-stack (foregoing loki and push gateway)
      path: postgres/operators/zalando/
      # either the branch or tag to point at in the argo repo above
      revision: main
      # kubernetes cluster to install the k8s app into, defaults to Argo CD default
      cluster: https://kubernetes.default.svc
      # namespace to install the k8s app in
      namespace: postgres-operator
      # recurse directories in the provided git repo
      directory_recursion: false
      # source repos for Argo CD App Project (in addition to argo.repo)
      project:
        name: postgres-operator
        source_repos:
        - https://opensource.zalando.com/postgres-operator/charts/postgres-operator
        - https://opensource.zalando.com/postgres-operator/charts/postgres-operator-ui
        - https://seaweedfs.github.io/seaweedfs/helm
        destination:
          # automatically includes the app's namespace and argocd's namespace
          namespaces:
          - postgres-operator