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 9.5 and 9.6 (#2140)
- Dropping helm charts packages for v1.6.x (#2177)
- With PDB on
policy/v1
and CronJob onbatch/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
withpod_management_policy: parallel
- We recommend
- 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