Skip to content

Releases: zalando/postgres-operator

Comely Mantella

30 Jan 09:57
30b6124

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

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

Gracious Iguanas

20 May 10:21
7c878f8

Choose a tag to compare

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

Fixes and enhancements

  • Not changing case of defined environment variables (breaking change in v1.8.0) (#1889)
  • Bring back 8080 operator port for spilo containers (#1864)
  • Avoid writing on a closed channel during switchovers (#1876)
  • additional_owner_roles are granted to database owners, not vice versa (operator will repair false membership) (#1869)
  • Use uint64 type for fetching replication lag calling Patroni members endpoint (#1893)
  • Use right number of WaitGroups when PostgresTeam informer is enabled (#1876)
  • Sync CRD manifests with internal go representation (#1869)
  • Raising apiVersion of helm charts to only support helm3+ (#1884)
  • [UI] correct cost calculation and added tooltip to cluster list explaining the formula (#1872)
  • [UI] when fetching cluster logs use default when no team is found for user (#1872)

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

Thanks to our contributors: @FxKu, @idanovinda, @jopadi, @sdudoladov, @Jan-M, @CyberDem0n,
@dmvolod, @mujx, @stephan2012, @danlenar, @chitoku-k, @AllexVeldman, @rocket357

Gracious Iguana

20 Apr 21:12
cde88d3

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

  • Individual environment variables per cluster (#1794, #1848)
  • Support standby clusters from remote primary and GCS WAL backup location (#1544, #1446)
  • Optional user and password rotation inside K8s secrets (#1749, #1796)
  • Operator can create CRDs for streaming change data capture into Nakadi (#1570)
  • Define extra roles granted to database owners (e.g. cron_admin) (#1805)
  • Define annotations to be ignored on sync (#1823, #1485, #1482)
  • Enable auto major version upgrade only for clusters of specified teams (#1699)
  • Support for Patroni's synchronous_node_count option (#1484)
  • [UI] added IOPS and throughput options for volume settings (useful for AWS gp3 volumes) (#1824)
  • [Logical-Backup] Introduce configurable retention time for logical backups on S3 (#1337)

Enhancements

  • Choose switchover target based on lag and role (#1700, #1724)
  • Added ReadinessProbe on the stateful set (#1825)
  • Pooler services can now be turned into type LoadBalancer, too (#943, #1799)
  • Toleration changes will now be reflected on cluster sync (#1729)
  • Node readiness label can now be evaluated together with specfied nodeAffinities (#1729)
  • Major version upgrades can be executed by rootless user (#1770)
  • Inherited labels and annotations are passed to PVCs, too (#1784)
  • CRD registration by the operator can now be skipped (#1733)
  • Empty resources in manifest will now pass validation with go-client (#1589, #1822)
  • Removed required fields of cluster resources from CRD schema. (#1822)
  • Removed required fields of tolerations from CRD schema (#1797)
  • Improve comparison of container ports on sync (#1755)
  • Retry and timeout options for Patroni API calls (#1803)
  • Adding retry logic when fetching the pod_environment_secret (#1777)
  • Categories in CRDs are now configurable (#1781)
  • Manifest example for minimal master/replica ServiceMonitor (#1452)
  • Added doc chapter about restoring a cluster in place (#1833)
  • move from Go 1.16.9 to 1.17.4 + updating dependencies (#1717)
  • [pooler] bump to pgBouncer 1.17.0 and allow for scram secrets (#1837)
  • [UI] postgres version and cluster resources can be changed in edit mode (#1824)
  • [UI] ingresClassName option in helm chart (#1787)
  • [Logical-Backup] Added IPv6 support for dump script (#1405)
  • [helm] Added user-facing cluster roles (#1675)

Fixes

  • Replace instances on rolling update only when all instances are healthy (#1767)
  • Make sure major version upgrade script runs on the master (#1715)
  • When kubernetes_use_configmaps is true, do not try to create endpoints (#1760)
  • Fixed nil pointer while syncing pooler deployment (#1701)
  • Skip EBS migration when no volumes are found to not block cluster from healing itself (#1851)
  • Return only a warning instead of error if teams API returns a 404 Not Found (#1842)
  • Removed CRD validation toggle from go code to avoid errors when operator registers CRDs (#1697)
  • Code generation uses correct target folder again (#1713)
  • [UI] fix fetching logs when teamId contains hyphens (#1859)

Breaking changes

  • variables from pod_environment_secret take precedence over pod_environment_configmap (#1848)
  • deprecated CRD validation toggle because schema must be present in apiextensions.k8s.io/v1 (#1781)
  • dropped support for helm2 charts (#1679)
  • dropped v1.5.0.tgz from helm chart folders (#1852)

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

Thanks to our contributors: @FxKu, @jopadi, @sdudoladov, @Jan-M, @CyberDem0n,
@dmvolod, @machine424, @evsasha, @uzzz, @neelasha-09, @dpeckett, @Menzorg,
@stoewer, @jamesmcdonald, @Cellebyte, @jgillich, @preved911, @snarlysodboxer,
@ermajn, @Prototik, @moshloop, @spohner, @OlleLarsson, @Aisuko, @Lxrdknows77,
@Wikiwix, @Mattes83, @mujx, @RafiaSabih, @ebostijancic, @bleleve, @apeschel,
@sdressler, @kien-truong

Obedient Tarsier

03 Nov 17:44
f9150aa

Choose a tag to compare

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

New features

  • Postgres 14 support (#1636)

Enhancements

  • choose correct restart order of master and replica(s) when decreasing certain config options like max_connections (#1655)
  • restart instances with a pending_restart flag on later syncing (#1655)
  • fixing issues around comparison between effective Postgres config vs. patroni + postgresql.parameters manifest sections (#1635)
  • fix configuring PodToleraton via OperatorConfiguration CRD (#1647)
  • move from Go 1.15.6 to 1.16.9 + updating dependencies (#1645)
  • documentation fixes (#1594, #1631, #1650)

Breaking changes

  • support for Postgres 9.5 is dropped from the new default Spilo image (#1636)

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

Thanks to our contributors: @FxKu, @Jan-M, @CyberDem0n,
@yajo, @elmehdisaniss, @wlritchi, @Lebvanih

Obedient Loris

27 Aug 13:00
ba6c3c3

Choose a tag to compare

We are excited to announce a new release of the Postgres Operator.

New features

  • Allow secrets in namespaces different from cluster (#1490, #1540, #1569, #1581)
  • Selector for pre-provisioned volumes (#1385)
  • Add support for backups on Azure (#1537)

Enhancements

  • Changes under Patroni section will be reflected, e.g. replication slots (#1535)
  • Avoid rolling updates if only restart is needed, e.g. parameters changed under postgresql section (#1103)
  • For preparedDatabases, define default access privileges for default LOGIN roles, too (#1512)
  • Improved connection pooler sync fixes missing pooler schema for new databases (#1593)
  • Node affinities and tolerations are reused for pooler pods (#1464)
  • Add basic retry around switchover (#1510)
  • Do not modify volumes when below gp3 minimum throughput (#1543)
  • Extended admin docs on operator upgrades and restoring backups (#1592)
  • [UI, helm] improve manifest templates (#1514, #1575, #1582)

Breaking changes

  • new bootstrap parameter blacklist moves fields between parameters and DCS sections in SPILO_CONFIGURATION env variable -> rolling update (#1103)
  • [helm] Both configuration options are served from the same values.yaml file (#1224, #1603)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.7.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.7.0
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.7.0
Default Spilo image: registry.opensource.zalan.do/acid/spilo-13:2.1-p1

Thanks to our contributors: @FxKu, @RafiaSabih, @sdudoladov, @Jan-M, @erthalion, @CyberDem0n,
@apeschel, @yanchenko-igor, @jcrood, @dalbani, @cucxabong, @frankconrad,
@flyinggecko, @golgoth31, @markus-codes, @yelhouti, @ssinger, @stromvirvel

Splendid Caribou

28 May 12:24
a37e78b

Choose a tag to compare

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

New features

  • New option to automatically deny login for team members removed from Teams API or CRD (#1457)

Enhancements

  • Bump Spilo image with latest Postgres minor releases (#1503)
  • Get postgres container by name, use index 0 only as fallback (#1504, #1505, #1381)
  • Replace statefulsets on annotation diff to avoid updates on each sync (#1449)
  • Fix updates of pooler deployment on each sync (#1448)
  • Trigger rolling update if number of volumes in statefulset differs (#1474)
  • Mount additional volumes to postgres container if targetContainers is empty (#1475)
  • Fix configuring spilo_runasuser and spilo_runasgroup from ConfigMap (#1503)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.6.3
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.6.3
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.6.3
Default Spilo image: registry.opensource.zalan.do/acid/spilo-13:2.0-p7

Thanks to our contributors: @FxKu, @sdudoladov, @erthalion, @Jan-M, @CyberDem0n,
@cucxabong, @guicholeo

Splendid Deer

01 Apr 11:38
c18241f

Choose a tag to compare

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

New features

  • Support major version upgrade via manifest (#1372)
  • Control global upgrades via min major version (#1372, #1386)
  • Add option to configure AllowPrivilegeEscalation for pods (true by default) (#1412, #1433)

Enhancements and bugfixes

  • Moved rolling update flag from statefulset to pods (#1341)
  • Prevent rolling updates on empty additional_pod_capabilities (#1380)
  • Create global default privileges in the appropriate prepared databases (#1421)
  • Not logging failed queries for CREATE / ALTER USER commands (#1433)
  • [UI] parameterize team settings (#1375)
  • [Pooler] improve monitoring capabilities of pgbouncer

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.6.2
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.6.2
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.6.2
Default Spilo image: registry.opensource.zalan.do/acid/spilo-13:2.0-p6

Thanks to our contributors: @Jan-M, @FxKu, @erthalion, @sdudoladov, @CyberDem0n,
@machine424, @neelasha-09, @caiconkhicon, @holyhope, @ssinger

Splendid Moose

18 Feb 13:27
3962e71

Choose a tag to compare

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

⚠️ Note, this release contains a bug which leads to rolling updates on each SYNC event. You have to either configure additional_pod_capabilities (e.g. SYS_NICE what is beneficial for Spilo) to something what is allowed in your environment or keep on using the v1.6.0.

New features

  • New options to define additional container capabilities for database pods (#1336)
  • Configurable prefix and name trimming for logical backup cron job name (#1287, #1208)
  • Enable AWS gp3 support in manifest, allowing configuration of IOPS and throughput (#1261, #1340)

Enhancements

  • Use defaulting in CRD validation (#1283)
  • Retry logic for fetching Patroni state (#1293)
  • Sync volumes on update (#1330)
  • Sync connection pooler only when configuration changed (#1274)
  • Improved docs on physical vs. logical backups (#1367)
  • Updated to trusted Docker base images (#1302)
  • Updated dependencies of operator, UI and logical backup (#1302, #1329, #1264, #1357)
  • Updated default Spilo docker image to latest 2.0-p4 release (#1367)

Fixes

  • [UI] Fix reading correct number of master pods when connection pooler is enabled (#1297)
  • PostgresTeam CRD: New additional teams and users will not be ignored on sync (#1349, #1314)
  • Fix typos and add missing options in helm charts (#1333, #1282, #1305)
  • Fix configured spilo_runasuser and spilo_runasgroup being ignored (#1361)
  • Fix compiler errors in kubectl pg plugin due to outdated Go version (#1264)
  • Fix typo in environment variable for connection pooler (#1294)
  • Fix CRD validation for nodeAffintiy (#1368)

Breaking Change

  • Removed PodSecurityPolicy privilege from RBAC and set AllowPrivilegeEscalation based on spilo_privileged setting (#1326, #1328)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.6.1
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.6.1
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.6.1
Default Spilo image: registry.opensource.zalan.do/acid/spilo-13:2.0-p4

Thanks to our contributors: @Jan-M, @FxKu, @sdudoladov, @RafiaSabih, @erthalion, @CyberDem0n,
@tommasopozzetti, @batazor, @mseiwald, @apeschel, @georgebarbarosie @zvier, @balibebas,
@dervoeti, @sagor999, @polarclair

Splendid Elk

18 Dec 15:08
586b46d

Choose a tag to compare

We are very excited to announce a new release of the Postgres Operator in 2020! 🎄 🐘
This is the first release using the Spilo 13 image, incl. Patroni v2.0 and the newest PostgreSQL.
Please, read about the breaking changes when switching to PG13.
Update your CRDs to have manifest validation and field presevation up-to-date for newer Kubernetes versions (1.19+).

New features

  • In-place major version upgrade (#1160, zalando/spilo#488)
  • NodeAffinity support (#1166, #1263)
  • pgBouncer support for replicas (#1159)
  • PostgresTeam CRD to define custom team mappings (#1165)
  • Specify alternative scheduler (#1226)
  • Inherited annotations for all major objects (#1236)
  • Delete protection for Postgres manifests via annotations (#1069)
  • Allow pod environment variables to be sourced from a secret (#946, #1177)
  • Support wal-e backups to GCS (#620)
  • Support migration to AWS gp3 volumes (#1242)
  • Enable JSON logging (#1158)

Enhancements and fixes

  • New storage_resize_mode option to resize volumes via updating PVCs (#958)
  • ExternalTrafficPolicy of services can now be configured (#1136)
  • Extend logical backup support to GCS (#1173)
  • Set search_path for default roles in PreparedDatabases (#1065)
  • Support scram-sha-256 hash for password encryption (#995)
  • Include diffs on securityContext when clusters are synced (#1007, #1255)
  • Deletion of secrets on cluster deletion (#974, #1054, #1091)
  • More flexibility when referencing an existing infrastructure roles secret (#1064, #1090)
  • Improved visibility of events on failed cluster setups (#1013)
  • Fixes and improvements on pgBouncer support (#960, #1169, #1171, #1213)
  • Fixed configuring CRD via go-client (#1020, #1223)
  • Fixed case where no NodeReadinessLabel is defined, but node is unscheduable (#1162)
  • Fixed changing order of sidecar env variables (#980)
  • Fixed syncing PreparedSchemas (#1139)
  • Fixed cloning from GCS (#1176)
  • Make setup on OpenShift easier when using helm charts (#1037)
  • Increase speed of e2e test and update kind version (#1180, #1185, #1121, #1156)
  • UI: Now display cluster status if setup failed (#1260)
  • UI: Add support for custom S3 endpoints (#1152)
  • UI: Add imagePullSecret to deployment in helm chart (#1211)
  • UI: Add Kustomization manifest (#1086)

Breaking changes

  • Manifest entries for pg_hba will overwrite the configuration and not append to it!
  • Variables in pod environment config map / secret will overwrite AWS/GCP setting in operator config (#1177)
  • Enable PGVERSION env variable for Postgres 13 image (#1172, #1160, #1254, #1260)
  • Change default volume resize strategy to update PVCs instead of AWS API call (#1257)
  • Migrate CRDs to apiVersion v1 (#746, #1212, #1228, #1248)
  • Make volume section in Postgres manifest a required field (#1016)
  • Update to Go 1.15 (#1122, #1242)
  • Switch public builds from Travis to GitHub Actions (#1215)

Docker image: registry.opensource.zalan.do/acid/postgres-operator:v1.6.0
UI Docker image: registry.opensource.zalan.do/acid/postgres-operator-ui:v1.6.0
Sample logical backup image: registry.opensource.zalan.do/acid/logical-backup:v1.6.0

Many thanks to the committers @Jan-M, @FxKu, @erthalion, @RafiaSabih, @sdudoladov
special thanks to @CyberDem0n for his continuous work on Patroni and Spilo,
and a loud applause to our external contributors @yanchenko-igor, @sagor999
@frittentheke, @Thunderbolt32, @spohner, @neelasha-09, @hlihhovac, @alfredw33,
@arminfelder, @bbsbb, @lxgege, @preved911, @dajudge, @lalbers, @hoangelos,
@programmer04, @Gottox, @mcoletti, @arichardet, @sonaysevik, @dalbani, @abh,
@SanjeevChoubey, @toonsevrin, @kupson