Skip to content

Commit 2294c69

Browse files
author
Jonathan S. Katz
committed
Add v4.4.0 release notes
1 parent c0734c3 commit 2294c69

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

docs/content/releases/4.4.0.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
---
2+
title: "4.4.0"
3+
date:
4+
draft: false
5+
weight: 80
6+
---
7+
8+
Crunchy Data announces the release of the PostgreSQL Operator 4.4.0 on July DD, 2020.
9+
10+
The PostgreSQL Operator is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/crunchy-containers/).
11+
12+
The PostgreSQL Operator 4.4.0 release includes the following software versions upgrades:
13+
14+
- PostGIS 3.0 is now supported. There is now a manual upgrade path between PostGIS containers.
15+
- pgRouting is now included in the PostGIS containers.
16+
- pgBackRest is now at version 2.27.
17+
- pgBouncer is now at version 1.14.
18+
19+
PostgreSQL Operator is tested with Kubernetes 1.15 - 1.18, OpenShift 3.11+, OpenShift 4.4+, Google Kubernetes Engine (GKE), and VMware Enterprise PKS 1.3+.
20+
21+
## Major Features
22+
23+
- Create New PostgreSQL Clusters from pgBackRest Repositories
24+
- Improvements to RBAC Reconciliation.
25+
- TLS Authentication for PostgreSQL Instances.
26+
- A Helm Chart is now available and support for deploying the PostgreSQL Operator.
27+
28+
### Create New PostgreSQL Clusters from pgBackRest Repositories
29+
30+
A technique frequently used in PostgreSQL data management is to have a pgBackRest repository that can be used to create new PostgreSQL clusters. This can be helpful for a variety of purposes:
31+
32+
- Creating a development or test database from a production data set
33+
- Performing a point-in-time-restore on a database that is separate from the primary database
34+
35+
and more.
36+
37+
This can be accomplished with the following new flags on `pgo create cluster`:
38+
39+
- `--restore-from`: used to specify the name of the pgBackRest repository to restore from via the name of the PostgreSQL cluster (whether the PostgreSQL cluster is active or not).
40+
- `--restore-opts`: used to specify additional options like the ones specified to `pgbackrest restore` (e.g. `--type` and `--target` if performing a point-in-time-recovery).
41+
42+
Only one restore can be performed against a pgBackRest repository at a given time.
43+
44+
### RBAC Reconciliation
45+
46+
PostgreSQL Operator 4.3 introduced a change that allows for the Operator to manage the role-based access controls (RBAC) based upon the [Namespace Operating mode](https://access.crunchydata.com/documentation/postgres-operator/latest/architecture/namespace/#namespace-operating-modes) that is selected. This ensures that the PostgreSQL Operator is able to function correctly within the Namespace or Namespaces that it is permitted to access. This includes Service Accounts, Roles, and Role Bindings within a Namespace.
47+
48+
PostgreSQL Operator 4.4 removes the requirements of granting the PostgreSQL Operator `bind` and `escalate` privileges for being able to reconcile its own RBAC, and further defines which RBAC is specifically required to use the PostgreSQL Operator (i.e. the removal of wildcard `*` privileges). The permissions that the PostgreSQL Operator requires to perform the reconciliation are assigned when it is deployed and is a function of which `NAMESPACE_MODE` is selected (`dynamic`, `readonly`, or `disabled`).
49+
50+
This change renames the `DYNAMIC_RBAC` parameter in the installer to `RECONCILE_RBAC` and is set to `true` by default.
51+
52+
For more information on how RBAC reconciliation works, please visit the [RBAC reconciliation documentation](https://access.crunchydata.com/documentation/postgres-operator/latest/architecture/namespace/).
53+
54+
### TLS Authentication for PostgreSQL Instances
55+
56+
[Certificate-based authentication](https://www.postgresql.org/docs/current/auth-cert.html) is a powerful PostgreSQL feature that allows for a PostgreSQL client to authenticate using a TLS certificate. While there are a variety of permutations for this can be set up, we can at least create a standardized way for enabling the replication connection to authenticate with a certificate, as we do have a known certificate authority.
57+
58+
PostgreSQL Operator 4.4 introduces the `--replication-tls-secret` flag on the `pgo create cluster` command, which, if specified and if the prerequisites are specified (`--server-tls-secret` and `--server-ca-secret`), then the replication account ("primaryuser") is configured to use certificate-based authentication. Combine with `--tls-only` for powerful results.
59+
60+
Note that the common name (CN) on the certificate MUST be "primaryuser", otherwise one must specify a mapping in a `pg_ident` configuration block to map to "primary" user.
61+
62+
When mounted to the container, the connection `sslmode` that the replication user uses is set to `verify-ca` by default. We can make that guarantee based on the certificate authority that is being mounted. Using `verify-full` would cause the Operator to make assumptions about the cluster that we cannot make, and as such a custom `pg_ident` configuration block is needed for that. However, using `verify-full` allows for mutual authentication between primary and replica.
63+
64+
## Breaking Changes
65+
66+
- The parameter to set the RBAC reconciliation settings is renamed to `RECONCILE_RBAC` (from `DYNAMIC_RBAC`).
67+
68+
## Features
69+
70+
- Added support for using the URI path style feature of pgBackRest. This includes:
71+
- Adding the `BackrestS3URIStyle` configuration parameter to the PostgreSQL Operator ConfigMap (`pgo.yaml`), which accepts the values of `host` or `path`.
72+
- Adding the `--pgbackrest-s3-uri-style` flag to `pgo create cluster`, which accepts values of `host` or `path`.
73+
- Added support to disable TLS verification when connecting to a pgBackRest repository. This includes:
74+
- Adding the `BackrestS3VerifyTLS ` configuration parameter to the PostgreSQL Operator ConfigMap (`pgo.yaml`). Defaults to `true`.
75+
- Adding the `--pgbackrest-s3-verify-tls` flag to `pgo create cluster`, which accepts values of `true` or `false`.
76+
- Perform a `pg_dump` from a specific database using the `--database` flag when using `pgo backup` with `--backup-type=pgdump`.
77+
- Restore a `pg_dump` to a specific database using the `--pgdump-database` flag using `pgo restore` when `--backup-type=pgdump` is specified.
78+
- Allow for support of authentication parameters in the `pgha-config` (e.g. `sslmode`). See the documentation for words of caution on using these.
79+
- Add the `--client` flag to `pgo version` to output the client version of `pgo`.
80+
- A Helm Chart using Helm v3 is now available.
81+
82+
## Changes
83+
84+
- `pgo clone` is now deprecated. For a better cloning experience, please use [`pgo create cluster --restore-from`](https://access.crunchydata.com/documentation/postgres-operator/latest/pgo-client/common-tasks/#clone-a-postgresql-cluster)
85+
- The PostgreSQL cluster scope is now utilized to identify and sync the ConfigMap responsible for the DCS for a PostgreSQL cluster.
86+
- The `PGMONITOR_PASSWORD` is now populated by an environmental variable secret. This environmental variable is only set on a primary instance as it is only needed at the time a PostgreSQL cluster is initialized.
87+
- Remove "Operator Start Time" from `pgo status` as it is more convenient and accurate to get this information from `kubectl` and the like, and it was not working due to RBAC privileges. (Reported by @mw-0).
88+
- Removed unused pgcluster attributes `PrimaryHost` and `SecretFrom`.
89+
- `pgo-rmdata` container no longer runs as the `root` user, but as `daemon` (UID 2)
90+
- Remove dependency on the `expenv` binary that was included in the PostgreSQL Operator release. All `expenv` calls were either replaced with the native `envsubst` program or removed.
91+
92+
## Fixes
93+
94+
- Add validation to ensure that limits for CPU/memory are greater-than-or-equal-to the requests. This applies to any command that can set a limit/request.
95+
- Ensure PVC capacities are being accurately reported when using `pgo show cluster`
96+
- Ensure WAL archives are pushed to all repositories when pgBackRest is set to use both a local and a S3-based repository
97+
- Silence expected error conditions when a pgBackRest repository is being initialized.
98+
- Deployments with `pgo-deployer` using the default file with `hostpathstorage` will now successfully deploy PostgreSQL clusters without any adjustments.
99+
- Add the `watch` permissions to the `pgo-deployer` ServiceAccount.
100+
- Ensure the PostgreSQL Operator can be uninstalled by adding `list` verb ClusterRole privileges to several Kubernetes objects.
101+
- Ensure `client-setup.sh` executes to completion if existing PostgreSQL Operator credentials exist that were created by a different installation method.
102+
- Ensure `client-setup.sh` works with when there is an existing `pgo` client in the install path.
103+
- Update the documentation to properly name `CCP_IMAGE_PULL_SECRET_MANIFEST` and `PGO_IMAGE_PULL_SECRET_MANIFEST` in the `pgo-deployer` configuration.
104+
- Bring up the correct number of pgBouncer replicas when `pgo update cluster --startup` is issued.
105+
- Fixed issue where `pgo scale` would not work after `pgo update cluster --shutdown` and `pgo update cluster --startup` were run.
106+
- Ensure `pgo scaledown` deletes external WAL volumes from the replica that is removed.
107+
- Several fixes for selecting default storage configurations and sizes when using the `pgo-deployer` container. These include #1, #4, and #8.
108+
- Do not consider non-running Pods as primary Pods when checking for multiple primaries (Reported by @djcooklup).
109+
- Fix race condition that could occur while `pgo upgrade` was running while a HA configuration map attempted to sync. (Reported by Paul Heinen @v3nturetheworld).
110+
- The custom setup example was updated to reflect the current state of bootstrapping the PostgreSQL container.
111+
- Silence "ConfigMap not found" error messages that occurred during PostgreSQL cluster initialization, as these were not real errors.
112+
- Fix an issue with controller processing, which could manifest in PostgreSQL clusters not being deleted.
113+
- Eliminate `gcc` from the `postgres-ha` and `pgadmin4` containers.

0 commit comments

Comments
 (0)