Skip to content

Releases: zalando/postgres-operator

Hopeful Amoeba

23 Dec 11:27
6035fdd
Compare
Choose a tag to compare

The year is coming to a close and we are happy to announce another new release of the Postgres Operator. Thanks to everyone who contributed with PRs, feedback, raising issues or providing ideas. Have a smooth transition into 2025.

New features

  • support for Postgres 17 (#2773)
  • ability to set QPS and burst limits for api client to make operator handle bigger fleets better (#2667)
  • sidecars can be running with a set of Commands (#2449, #2825)
  • support for new EBS CSI Driver (#2677)
  • provide more scaling means for streams and support ignore recovery type (zalando-internal) (#2817)

Enhancements

  • added retry logic for switchover candidate search in asynchronous mode (#2760)
  • preparedDatabases feature supports database and schema names with special characters (#2745, #2782)
  • operator sets annotation if last major version upgrade failed, next attempt skipped when annotation is present (#2727, #2755)
  • added more pre-checks before executing major version upgrade script (#2772)
  • remember specs of PVCs on sync to make cluster deletion not miss out on them in edge cases (#2785)
  • added compatibility with Patroni 4, but operator still uses old master label behavior for now (#2818)
  • cleaned up code problems reported by go linter (mostly redundant type from arrays) (#2739)
  • improved docs about automated major version upgrades (#2807)
  • use a more recent postgres-exporter example in servicemonitor manifest (#2777)
  • update Go to 1.23.4 and also updated dependencies (#2824, #2740, #2816, #2819)
  • [Helm] make replica count for UI deployment configurable (#2708)

Bugfixes

  • update CRD schema pattern for resources to allow empty strings (#2735)
  • do not use extra labels to list stream resources because they can change and lead to duplicates (#2803)
  • Spilo image contains fix for breaking change for pushing backups with wal-g (#2786)
  • [Helm] fix indentation of extraEnvs in operator deployment (#2783, #2814)
  • [Helm] cluste role was lacking patch privilege on PVCs (#2762)

Breaking changes

  • updated logs on SYNC and UPDATE events (breaking only if you rely on certain log messages) (#2738)
  • dropping support for Postgres 12 (#2773)

amd images:
Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.14.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.14.0
Logical Backup Docker image: registry.opensource.zalan.do/acid/logical-backup:v1.14.0

Multi-arch image (arm):
Postgres Operator: ghcr.io/zalando/postgres-operator:v1.14.0
UI: ghcr.io/zalando/postgres-operator-ui:v1.14.0
Logical Backup: ghcr.io/zalando/postgres-operator/logical-backup:v1.14.0

Default Spilo image: ghcr.io/zalando/spilo-17:4.0-p2

Thanks to our contributors: @idanovinda, @hughcapet, @FxKu, @macedigital, @sdudoladov
@fahedouch, @cosimomeli, @tabbyl21, @Demch1k, @dmotte, @prasadkris,
@mjtrangoni @zyue110026, @DaDummy, @Mart-Kuc

Panoramic Lapwing

22 Aug 11:58
cc9074c
Compare
Choose a tag to compare

We are excited to announce yet another new release of the Postgres Operator. Thanks to everyone who contributed with PRs, feedback, raising issues or providing ideas.

New features

  • new option to enable owner references on all child resources (#2688, #2199)
  • implement per-cluster maintenance windows to define when automatic major version upgrade can happen (#2710, #2731)
  • [Helm] add extraEnvs for operator deployments (#2671)

Enhancements

  • pass inherited annotations also to existing child resources (#2657, #2713, #2723)
  • all child resources are now represented in the cluster's Go struct incl. service, endpoints/configmaps created by Patroni (#2713, #2733)
  • stream resources are not created after errors on syning the publication and slot (#2704, #2728)
  • update package dependencies when building image (#2665)
  • simplify delivery yaml file for building operator (#2673)
  • resolve code problems reported by newer linters (#2715, #2713)
  • config map example has been fully aligned with CRD config defaults (#2729)
  • update Go to 1.22.5 and also updated dependencies (#2699, #2729)

Bugfixes

  • fix deletion of resources when cluster fields are empty (#2713)
  • fix volumeMounts diff (nil vs. empty) when comparing containers (#2686)
  • do not set empty secret env vars for logical backup on GCS and Azure when not configured (#2732)
  • handle publications without tables (#2722)

Breaking changes

  • ⚠️ wal-g backups will not work out-of-the box with this release. Please use Spilo version ghcr.io/zalando/spilo-16:3.3-p3
  • removing streams from manifest triggers a removal of database publication, slots and FES resources (#2684, #2563)
  • automatic major version upgrades are enabled by default (manual mode) (#2729)
  • dropped default of additional_secret_mount_path option when configured via config CRD (#2729)
  • dropped support for Postgres 11 (#2706)
  • dropped helm packages for 1.8.2 releases (#2729)

amd images:
Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.13.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.13.0
Logical Backup Docker image: registry.opensource.zalan.do/acid/logical-backup:v1.13.0

Multi-arch image (arm):
Postgres Operator: ghcr.io/zalando/postgres-operator:v1.13.0
UI: ghcr.io/zalando/postgres-operator-ui:v1.13.0
Logical Backup: ghcr.io/zalando/postgres-operator/logical-backup:v1.13.0

Default Spilo image: ghcr.io/zalando/spilo-16:3.3-p1

Thanks to our contributors: @idanovinda, @FxKu, @hughcapet, @macedigital, @sdudoladov
@fahedouch, @mbegenau, @nickmansrob, @desaintmartin

Blissful Ants

14 Jun 09:32
7c7aa96
Compare
Choose a tag to compare

This is a bugfix release to the 1.12 version of the Postrges Operator. Thanks to everyone who gave feedback, raised issues or fixed bugs.

Fixes and enhancements

  • use json tag for schema mapping of InfrastructureRole struct (#2659)
  • align base images in arm build pipeline with Docker images (#2663)
  • align dependencies in Makefile (#2647)
  • [UI] fix exec format error on ARM (#2663, #2649)
  • [UI] use nodejs-lts instead of outdated alpine version to workaround permission issue with old npm version (#2653)

Breaking changes

  • removed helm chart version 1.10.0, 1.12.0 and 1.12.1 and only provide the last point release of each version (#2664)

amd images:
Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.12.2
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.12.2
Logical Backup Docker image: registry.opensource.zalan.do/acid/logical-backup:v1.12.2

Multi-arch image (arm):
Postgres Operator: ghcr.io/zalando/postgres-operator:v1.12.2
UI: ghcr.io/zalando/postgres-operator-ui:v1.12.2
Logical Backup: ghcr.io/zalando/postgres-operator/logical-backup:v1.12.2

Default Spilo image: ghcr.io/zalando/spilo-16:3.2-p3

Thanks to our contributors: @macedigital, @FxKu, @idanovinda, @hemakshis, @Skoucail @crkochan

Armless ants

13 Jun 11:52
2e1583e
Compare
Choose a tag to compare

Please refer to the 1.12.2 changelog. The only difference is that we fixed the arm build pipeline for 1.12.2 and for helm charts, we only kept the last point release of each version.

Blissful Ant

31 May 17:20
6cde8e8
Compare
Choose a tag to compare

We are excited to announce yet another new release of the Postgres Operator. Thanks to everyone who contributed with PRs, feedback, raising issues or providing ideas.

New features

  • New config option to prevent operator from removing secrets on cluster deletion (#2582)
  • New flag for volumes to specify subPath as an expression to include env variables (#2463, #2638)
  • [UI] Allow scheduling constraints for UI deployment (#2326)
  • [LogicalBackup] make bucket prefix for logical backup configurable (#2609)

Enhancements

  • Apply template on all keys of OperatorConfiguration (#2608)
  • [UI] Removal of manual authentication for user login (#2635)
  • [UI] Centralized logging to eliminate logger errors in UI pod logs (#2645)
  • [LogicalBackup] re-use configured pod tolerations also for logical backup job pods (#2018)
  • [Helm] charts are using ARM images by default (#2634)

Bugfixes

  • Add missing json mapping to infrastructure_roles_secrets config option (#2645)
  • [Helm] fix creation of configuration when ConfigMap is used (#2584)
  • [Helm] add pdb_master_label_selector to helm chart and example manifests (#2595)

Breaking Changes

  • Dropped Helm charts for releases 1.8.0 and 1.8.1 (#2639)

amd images:
Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.12.0-dirty
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.12.0
Logical Backup Docker image: registry.opensource.zalan.do/acid/logical-backup:v1.12.0

Multi-arch image (arm):
Postgres Operator: ghcr.io/zalando/postgres-operator:v1.12.0
UI: ghcr.io/zalando/postgres-operator-ui:v1.12.0
Logical Backup: ghcr.io/zalando/postgres-operator/logical-backup:v1.12.0

Default Spilo image: ghcr.io/zalando/spilo-16:3.2-p3

Thanks to our contributors: @FxKu, @idanovinda, @hughcapet
@dmotte, @LordGaav, @hemakshis, @duckhawk, @smutel, @ThoreKr, @pratheekrebala

Deliberate Dog

15 Mar 14:41
0f96eb2
Compare
Choose a tag to compare

We are excited to announce a new release of the Postgres Operator. Thanks to everyone who contributed with PRs, feedback, raising issues or providing ideas.

New features

  • Added support for Postgres 16 (#2437, #2557)
  • ARM support for UI and logical backup images (#2426, #2527)
  • New config option to prevent operator from removing PVCs on cluster deletion (#2579, #1074)
  • New config option to specify PVC retention policy when deleting or scaling statefulset (#2343, #2415, #2420, #2584)
  • Add support for hugepages-2Mi/-1Gi in resources section incl. sidecars (#2311, #2512)
  • Finalizers can be enabled so custom resource in only removed after its child resources (#941, #2509, #2521, #2538)
  • Support for dead letter queue to recover from failed events (#2421)
  • Master label selector can be disabled for the cluster's PodDisruptionBudget (#2364, #2595)
  • Single users can opt out from globally enabled password rotation (#2528)
  • [LogicalBackup] Can specify extra environment variables in a logical_backup_cronjob_environment_secret (#2051)

Enhancements

  • Allow empty resources when defaults are no set (#2524)
  • Removal of standby section will promote the cluster (#2472, #2513)
  • Support switching secret rotation mode to in-place directly (#2549)
  • Reduced number of calls on transitive team mappings (#2445)
  • Configurable priority class for helm chart (#2499)
  • Double check current Postgres version before trying upgrade (#2533)
  • Inherited labels and annotations are also passed to logical backup pod (#2456)
  • Improve appearance of Readme image in github dark mode (#2431)
  • Improve docs on prepared users (#2424, #2425)
  • Improve docs structure on cluster configuration (#2504)
  • Logging of all returned errors on closing database connections (#2578)
  • Use Alpine 3 base image without minor version (#2488)
  • Added unit test for cluster Create() method (#2509)
  • Replaced deperecated ioutil package (#2480, #2531)
  • Bumped the pgBouncer version in pooler image to 1.22.0 (#2529)
  • Go to 1.21 and updated depedencies (#2554, #2577, #2676, #2443, #2433, #2501, #2442)
  • Add OCI label for container image source (#2541)
  • [UI] Improve docs on watched namespaces (#2412)
  • [LogicalBackup] Bump Ubuntu version (#2478)

Bugfixes

  • Operator reflects new member states returned by Patroni cluster endpoint (#2515)
  • Avoid password replacement if system users for pooler or streams are listed in the manifest (#2489)
  • Compare single volume templates only if the number of templates has not changed (#2493)
  • Changes to synchronous node count in Patroni section are now diffed (#2558)
  • Update internal PostgresSpec after updating cluster status to not block subsequent updates (#2546)

Breaking changes

  • Operator will not set the users section in Patroni config anymore (was not utilized anyway) (#2490)
  • Dropped support for Postgres 10 (#2557)
  • Dropped helm packages for 1.7.x releases (#2580)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.11.0
Multi-arch image (arm): ghcr.io/zalando/postgres-operator:v1.11.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.11.0
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.11.0
Default Spilo image: ghcr.io/zalando/spilo-16:3.2-p2

Thanks to our contributors: @FxKu, @idanovinda, @Jan-M, @jopadi, @hughcapet, @sdudoladov, @macedigital,
@silenium-dev, @frittentheke, @b1zzu, @stgrace, @bootc, @cstohr1, @seekingua, @andrejshapal, @urashidmalik,
@capuche2412, @urashidmalik, @senthilnathan, @dgiebert, @tm604, @testwill, @dmotte, @ThoreKr, @Lukkie,
@drivebyer, @sklirg, @ghost, @MisguidedEmails, @ErikLundJensen, @boomskats @spreeker, @regme

Tactful Hamster

07 Sep 21:35
552bd26
Compare
Choose a tag to compare

This is a bugfix release to the 1.10 version of the Postrges Operator. Thanks to everyone who gave feedback, raised issues or fixed bugs.

Fixes and enhancements

  • Trigger logical cronjob replacement if major version changed (#2342)
  • Fix extraction of EBS volume id when there's no region prefix (#2351)
  • Handle retry connect to Postgres when ping return EOF error (#2339)
  • setting service account name for pooler to postgres-pod for OpenShift (#2352)
  • fix supported version matrix (#2402)
  • [UI] bump version of flask, requests and werkzeug dependency (#2404)
  • [UI] provide example on how to set AWS_INSTANCE_PROFILE (#2381, #2403)
  • [UI] update ingress rules to path type Prefix with path / (#2403)
  • [UI] revert setting base url in index.html because it defaulted to localhost after #2195 (#2403)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.10.1
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.10.1
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.10.1
Default Spilo image: ghcr.io/zalando/spilo-15:3.0-p1

Thanks to our contributors: @jopadi, @idanovinda, @hughcapet, @FxKu, @sdudoladov
@laiminhtrung1997, @cdmikechen, @k4kratik, @basaveswar-kureti,
@yoshihikoueno, @weeix, @pavanreddymaley, @edward2a, @wasap

Tactful Gerbil

20 Apr 16:26
af084a5
Compare
Choose a tag to compare

We are excited to announce a new release of the Postgres Operator. A rather small one but bringing you ARM support for the operator (pooler, ui and logical backup will follow). Thanks to everyone who contributed with PRs, feedback, raising issues or providing ideas.

New features

  • Provide Postgres-Operator as multi-arch image that can run on arm (#2268, #2127)
  • New default spilo image runs with Patroni 3.0 which supports DCS failsafe mode (#2266)

Enhancements

  • Select only syncStandby as switchover candidate in synchronous mode (#2278)
  • Improve retry logic and debuggability in run_operator_locally script (#2218)
  • Provide K8s support matrix in README (#2232)
  • Update go to v1.19.8 and update operator dependencies (#2299)
  • [UI] allow UI to be accessed via ingress rules (#2195)
  • [UI] Show host address for pooler master service (#2202)

Bugfixes

  • Make TLS support for connection pooler work (#2255, #2216)
  • Sync existing slots on operator restart (#2238)
  • When adding streams sync statefulset to restart Postgres with new wal_level config (#2245)
  • Minor code improvements for error handling during cluster creation (#2273, #2289, #2290)
  • Add Patroni config to helm chart template (#2297, #2298, #2299)
  • Remove debug log for generated env vars of logical backup (#2233)
  • Logical Backup: Return behavior to interpret KUBERNETES_SERVICE_HOST as hostname and not only IP (#2285)

Breaking changes

  • Define RunAsUser (100) and RunAsGroup (101) in security context of pooler pods (#2255, #2225)
  • Rename failsafe_mode option in OperatorConfiguration CRD to enable_patroni_failsafe_mode (#2298)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.10.0
Multi-arch image (arm-support): ghcr.io/zalando/postgres-operator:v1.10.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.10.0
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.10.0
Default Spilo image (arm-support): ghcr.io/zalando/spilo-15:3.0-p1

Thanks to our contributors: @FxKu, @hughcapet, @idanovinda, @jopadi, @sdudoladov, @Jan-M
@2tvenom, @LordGaav, @simo9000, @lengrongfu, @drivebyer, @genofire, @jgehrcke, @addreas,
@thcdrt, @jmehitch, @jfmatth, @thedatabaseme, @samox73, @yoshihikoueno, @verbotenj

Comely Mantella

30 Jan 09:57
30b6124
Compare
Choose a tag to compare

We are excited to announce a new release of the Postgres Operator. Thanks to everyone who contributed with PRs, feedback, raising issues or providing ideas. Expect another minor release soon with Patroni 3.0 support.

New features

  • Spilo image supports Postgres 15 and can run on arm (#2139, #2140)
  • PostgreSQL socket can be shared with the sidecar containers (#962, #2155)
  • Annotations for master and replica service specifically (#2161)
  • Annotation to bypass globally configured instance limits (#1943)
  • New options to configure max cpu and memory requests (#1959)
  • Configurable resources for logical backup pod template (#710)
  • Support for Patroni's upcoming failsafe mode (#2076)
  • Logical backup support for Azure (#2052)
  • [UI] Adding support for specifying storageClass (#1835)
  • [UI] Add custom annotations to postgres-operator-ui helm chart (#1748)

Enhancements

  • TeamID as part of cluster name not mandatory anymore (#2001, #2011, #2015, #2171)
  • PodAntiAffinity can now use preferredDuringSchedulingIgnoredDuringExecution (#2048, #2156)
  • Password rotation users will receive the rolconfig of the original application user (#2183)
  • Add support for custom TLS certificates in Connection Pooler (#2146, #2165)
  • Use SyncStandby as switchover candidate on node drain events (#1984)
  • Operator will remove replication slots when they are removed from the manifest (#2089)
  • Create publications and slots only after Postgres restart with wal_level: logical (#2034, #2109, #2187)
  • Improve sync of publications and logical replication slots (#2085, #2091, #2187, #2189)
  • Shorten name of stream CRDs to avoid too labels with more than 63 charaters (#2137, #2149, #2152)
  • Add operator deployment readiness probe (#1874)
  • Bump policy API for PDB and batch API for CronJob to v1 to support K8s 1.25+ (#2008, #2066)
  • Bump operator base image to Alpine 3.15 (#2017)
  • Allow to use placeholders in values.yaml of helm chart (#1986, #2115, #2166)
  • Update dependencies and bump to golang 1.18 (#1854, #2158, #2164)
  • [UI] using relative paths (#1835)
  • [UI] allow enabling pooler load balancers + minor re-design (#1977)
  • [UI] include load balancer in the monthly cost calculation (#1977)
  • [UI] updated Python and JS libraries (#2191)

Fixes

  • Password rotation was updating the wrong database roles (#2043)
  • Working password rotation of standy and pooler users (#1953, #2009, #2010, #2015, #2029)
  • Do not update secrets on password rotation for standby clusters (#2175)
  • Changes on Spec.Env are now propagated to the stateful set (#2045)
  • Pooler LoadBalancer services now receive DNS entries when other LBs are disabled (#2188)
  • Abort cluster sync when stateful set env variables cannot be fetched when API server is down (#2064)
  • mixed storage resize mode was missing in CRD schema (#1947)
  • Use currect return code from major version upgrade script (#2056, #2075)
  • Prevent operator crash when disabling connection pooler (#2110, #2123)
  • Fix errors when importing acid.zalan.do API in Kubebuilder (#2148)
  • [UI] show configured default memory and CPU requests, not internal (#2178)
  • [UI] only call pooler endpoint when enabled (#1977)

Breaking changes

  • Dropped support for Postgres 9.5 and 9.6 (#2140)
  • Dropping helm charts packages for v1.6.x (#2177)
  • With PDB on policy/v1 and CronJob on batch/v1 dropped support for K8s 1.20 and lower (#2008, #2066)
  • Option to enable readiness probe for database pods (disabled by default, previously enabled by default!) (#2004)
    • We recommend enable_readiness_probe: true with pod_management_policy: parallel
  • Local environment variables can now override global variables generated by clone / standby section (was other way around before) (#2159)
  • [master|replica]_dns_name_format now defaults to new template with namespace instead of team: "{cluster}.{namespace}.{hostedzone}" (#2011)
    • For backwards compatibility to not break connections we append a second entry in the DNS annotation following the old format
  • Old DNS name format must be configured with [master|replica]_legacy_dns_name_format when differing from the legacy "{cluster}.{team}.{hostedzone}" default (#2171)
  • Pooler LoadBalancers now use a -pooler suffix in their DNS entries like "{cluster}-pooler.{team}.{hostedzone}" (#2188)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.9.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.9.0
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.9.0
Default Spilo image: ghcr.io/zalando/spilo-15:2.1-p9

Thanks to our contributors: @FxKu, @idanovinda, @jopadi, @hughcapet, @sdudoladov, @Jan-M
@dmvolod, @owenthereal, @francoispqt, @frittentheke, @orangetcy, @stgrace, @rocket357
@JBWatenbergScality, @machine424, @jeremie-seguin, @farodin91, @godzilla-s, @flyingcamilo,
@tamcore, @yoshihikoueno, @alfsch, @alexey-gavrilov-flant, @Pluggi, @thedatabaseme
@soluri, @Jaxwood, @dogaakcinar, @yajo, @stephan2012, @adriannieto-attechnest

Gracious Iguanidae

20 Jun 13:01
6d0117b
Compare
Choose a tag to compare

This is a very small bugfix release to the 1.8 version of the Postrges Operator. Thanks to everyone involved!

Fixes and enhancements

  • uses latest spilo version as default (with Postgres 14.4 release) (#1932)
  • setting CLONE_WAL_BUCKET_SCOPE_PREFIX env variable again (#1902)
  • fix links in operator configuration reference docs (#1929)
  • [UI] hide column title with tooltip behind UI header (#1932)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.8.2
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.8.2
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.8.2
Default Spilo image: registry.opensource.zalan.do/acid/spilo-14:2.1-p6

Thanks to our contributors: @FxKu, @idanovinda, @jopadi, @sdudoladov, @Jan-M, @CyberDem0n, @FactorT