@@ -97,7 +97,7 @@ Deploy components in this order. Each step depends on the previous one.
9797| ------| -----------| -------|
9898| 1 | Cloud storage bucket | S3 / GCS / Azure Blob for PostgreSQL backups |
9999| 2 | IAM / Workload Identity | Service account binding so pods can write to the bucket |
100- | 3 | Zalando Postgres Operator | Helm chart ` postgres-operator ` v1.14.0 + |
100+ | 3 | Zalando Postgres Operator | Helm chart ` postgres-operator ` v1.15.1 + |
101101| 4 | Create Temporal namespace | Required before deploying the PostgreSQL cluster or Temporal |
102102| 5 | PostgreSQL cluster CR | Creates ` temporal-database ` with two databases |
103103| 6 | Temporal Helm chart | Points at the PostgreSQL cluster |
@@ -182,7 +182,7 @@ helm repo update
182182``` bash
183183helm upgrade --install postgres-operator postgres-operator-charts/postgres-operator \
184184 --namespace postgres-operator --create-namespace \
185- --version 1.14.0 \
185+ --version 1.15.1 \
186186 --wait --timeout 3m
187187```
188188
@@ -321,6 +321,46 @@ The operator creates a Kubernetes Secret for the database user:
321321database usage scales with the number of open (in-flight) workflows and
322322retained history, not the total number of completed workflows.
323323
324+ # ## Verify Backup
325+
326+ Before proceeding, confirm that the backup CronJob can run successfully and
327+ that the pod has permission to write to the backup bucket. Trigger a manual
328+ backup job from the CronJob the operator created :
329+
330+ ` ` ` bash
331+ kubectl create job --from=cronjob/logical-backup-temporal-database \
332+ logical-backup-temporal-database-manual \
333+ -n temporal
334+ ` ` `
335+
336+ Wait for the job pod to complete :
337+
338+ ` ` ` bash
339+ kubectl wait --for=condition=complete \
340+ job/logical-backup-temporal-database-manual \
341+ -n temporal --timeout=5m
342+ ` ` `
343+
344+ If the job does not complete within the timeout, check the pod logs to
345+ diagnose the failure :
346+
347+ ` ` ` bash
348+ kubectl logs -n temporal \
349+ -l job-name=logical-backup-temporal-database-manual --tail=50
350+ ` ` `
351+
352+ Common causes of failure are missing or misconfigured IAM permissions (the
353+ ` postgres-pod` service account cannot write to the bucket) and an incorrect
354+ bucket name or region in the `OperatorConfiguration`. Resolve any errors
355+ before continuing -- if backups are broken at this stage they will remain
356+ broken after Temporal is deployed.
357+
358+ Once the job shows `Complete`, clean it up :
359+
360+ ` ` ` bash
361+ kubectl delete job logical-backup-temporal-database-manual -n temporal
362+ ` ` `
363+
324364---
325365
326366# # Step 6: Install Temporal
0 commit comments