Skip to content

Releases: zalando/postgres-operator

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

Gracious Iguanas

20 May 10:21
7c878f8
Compare
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
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

  • 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
Compare
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
Compare
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
Compare
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