Skip to content

Commit 4cf91d5

Browse files
committed
Merge branch 'merge-1.18.0-rc2' into 'main'
Merge 1.18.0-rc2 Closes #3080 See merge request ongresinc/stackgres!1700
2 parents a513670 + 74adeff commit 4cf91d5

118 files changed

Lines changed: 1805 additions & 1965 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,67 @@
1+
# :rocket: Release 1.18.0-rc2 (2025-11-17)
2+
3+
## :notepad_spiral: NOTES
4+
5+
StackGres 1.18.0-rc2 is out! :confetti_ball: :champagne:
6+
7+
Among other features this release will allow you to upgrade your clusters using a strategy and with a renewed rollout implementation that no longer relies on Jobs but is handled directly by the operator. You can still rely on SGDbOps to perform restarts, security upgrades and minor version upgrades operations or configure the clusters to preform them in an automatic fashion.
8+
9+
Another important change is the ability to set the version of your SGCluster or SGShardedCluster directly in the cluster resource. The final Postgres version (and the final extensions versions too) will no longer be changed by the operator, instead it will be set in the status and will be updated by the operator. This change will allow a much better integration with DevOps tools!
10+
11+
So, what you are waiting for! Upgrade now and have a look at the future of StackGres!
12+
13+
## :sparkles: NEW FEATURES AND CHANGES
14+
15+
* Added PostgreSQL versions 18.1, 17.7, 16.11, 15.15, 14.20 and 13.23
16+
* PgBouncer 1.25.0
17+
* Prometheus Postgres Exporter 0.18.1
18+
* FluentBit 4.2.0
19+
* OTEL Collector 0.139.0
20+
* Allow to change postgres version/extensions/config at any time and have the operator perform the rollout
21+
* Support replicate from in sharded cluster
22+
* Improved metadata and added useIAMRole to SGObjectStorage for S3
23+
* Allow to set patroni failsafe_mode and check_timeline
24+
* Allow to remove primary keys and not null constraints on snapshot and set metadata on Pod for SGStream
25+
* Updated default citus versions for sharded cluster
26+
* PostgreSQL versions 17.5, 16.9, 15.13, 14.18, 13.21 should not be advertized as bugged
27+
* Support to re-creating the SSL cluster certificate before it expires
28+
29+
## Web Console
30+
31+
Nothing new here! :eyes:
32+
33+
## :bug: FIXES
34+
35+
* Updated Patroni config to latest version
36+
* Allow to set null backup paths or null elements in backup paths for sharded clusters
37+
* Extension cache is not including all extensions when preloading
38+
* Cluster local controller check extension cache when no changes are performed on extensions
39+
* SGStream is not using detectInsertMode by default
40+
* Changing authenticator username breaks PgBouncer
41+
42+
## Web Console
43+
44+
* Allow to unset cronSchedule and backup paths for clusters and sharded clusters
45+
46+
## :construction: KNOWN ISSUES
47+
48+
* Backups may be restored with inconsistencies when performed with a Postgres instance running on a different architecture ([#1539](https://gitlab.com/ongresinc/stackgres/-/issues/1539))
49+
50+
## :up: UPGRADE
51+
52+
To upgrade from a previous installation of the StackGres operator's helm chart you will have to upgrade the helm chart release.
53+
For more detailed information please refer to [our documentation](https://stackgres.io/doc/latest/install/helm/upgrade/#upgrade-operator).
54+
55+
To upgrade StackGres operator's (upgrade only works starting from 1.1 version or above) helm chart issue the following commands (replace namespace and release name if you used something different):
56+
57+
`helm upgrade -n "stackgres" "stackgres-operator" https://stackgres.io/downloads/stackgres-k8s/stackgres/1.18.0-rc2/helm/stackgres-operator.tgz`
58+
59+
> IMPORTANT: This release is incompatible with previous `alpha` or `beta` versions. Upgrading from those versions will require uninstalling completely StackGres including all clusters and StackGres CRDs (those in `stackgres.io` group) first.
60+
61+
Thank you for all the issues created, ideas, and code contributions by the StackGres Community!
62+
63+
## :twisted_rightwards_arrows: [FULL LIST OF COMMITS](https://gitlab.com/ongresinc/stackgres/-/commits/1.18.0-rc2)
64+
165
# :rocket: Release 1.18.0-rc1 (2025-11-11)
266

367
## :notepad_spiral: NOTES

doc/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
content/en/04-administration-guide/01-installation/02-installation-via-helm/01-operator-parameters/_index.md
2+
content/en/06-crd-reference/*/_index.md

doc/CRD.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{{- $onlyOnCreationTypes := dict }}
88
{{- $requireRestartTypes := dict }}
99
{{- range .Types}}
10-
{{- $key := regexReplaceAll "\\[index\\]" .Name "" }}
10+
{{- $key := regexReplaceAll "\\[(index|key)\\]" .Name "" }}
1111
{{- range .Fields -}}
1212
{{- $description := .Description }}
1313
{{- $fieldKey := (print $key "." .Name) }}
@@ -28,7 +28,7 @@
2828
{{- end }}
2929
{{- end }}
3030
{{- range .Types}}
31-
{{- $key := regexReplaceAll "\\[index\\]" .Name "" }}
31+
{{- $key := regexReplaceAll "\\[(index|key)\\]" .Name "" }}
3232
{{- if not (get $hiddenTypes $key) }}
3333
{{- if not .IsTopLevel}}
3434

doc/build.sh

Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,51 @@
22

33
set -e
44

5-
rm -Rf "$(dirname "$0")/data/crds"
6-
mkdir -p "$(dirname "$0")/data/crds"
7-
find "$(dirname "$0")/../stackgres-k8s/src/common/src/main/resources/crds" -name '*.yaml' \
5+
PROJECT_PATH=".."
6+
7+
cd "$(dirname "$0")"
8+
9+
rm -Rf "data/crds"
10+
mkdir -p "data/crds"
11+
12+
STACKGRES_VERSION="${STACKGRES_VERSION:-$(sh "$PROJECT_PATH/stackgres-k8s/ci/build/version.sh")}"
13+
echo "current_version: \"$STACKGRES_VERSION\"" > "data/versions.yml"
14+
15+
find "$PROJECT_PATH/stackgres-k8s/src/common/src/main/resources/crds" -name '*.yaml' \
816
| while read -r FILE
917
do
10-
cp "$FILE" "$(dirname "$0")/data/crds"
18+
cp "$FILE" "data/crds"
1119
done
12-
cp "$(dirname "$0")/../stackgres-k8s/install/helm/stackgres-operator/Chart.yaml" "$(dirname "$0")/data/stackgres_operator_Chart.yaml"
13-
sed -n 's#^ *RUN wget "https://get.helm.sh/helm-v\([^-]\+\)-.*$#version: \1#p' "$(dirname "$0")/../stackgres-k8s/ci/build/Dockerfile-ci" > "$(dirname "$0")/data/helm_version.yaml"
14-
15-
STACKGRES_VERSION="${STACKGRES_VERSION:-$(sh stackgres-k8s/ci/build/version.sh)}"
16-
echo "current_version: \"$STACKGRES_VERSION\"" > "$(dirname "$0")/data/versions.yml"
20+
cp "$PROJECT_PATH/stackgres-k8s/install/helm/stackgres-operator/Chart.yaml" \
21+
"data/stackgres_operator_Chart.yaml"
22+
cp "$PROJECT_PATH/stackgres-k8s/install/operator-sdk/stackgres-operator/openshift-operator-bundle/metadata/annotations.yaml" \
23+
"data/stackgres_operator_openshift_annotations.yaml"
24+
sed -n 's#^ *RUN wget "https://get.helm.sh/helm-v\([^-]\+\)-.*$#version: \1#p' \
25+
"$PROJECT_PATH/stackgres-k8s/ci/build/Dockerfile-ci" \
26+
> "data/helm_version.yaml"
27+
(
28+
cat "$(ls -1 "$PROJECT_PATH/stackgres-k8s/src/operator/src/main/resources"/*/postgresql-default-values-pg*.properties \
29+
| tail -n 1)" \
30+
|| echo :
31+
) \
32+
| sed 's/=\(.*\)$/: "\1"/' | yq . > "data/postgresql_default_values.yaml"
33+
(
34+
cat "$PROJECT_PATH/stackgres-k8s/src/operator/src/main/resources/postgresql-blocklist.properties" \
35+
|| echo :
36+
) \
37+
| yq 'split(" ")' > "data/postgresql_blocklist.yaml"
38+
(
39+
cat "$PROJECT_PATH/stackgres-k8s/src/operator/src/main/resources/pgbouncer-default-values.properties" \
40+
|| echo :
41+
) \
42+
| sed 's/=\(.*\)$/: "\1"/' | yq . > "data/pgbouncer_default_values.yaml"
43+
(
44+
cat "$PROJECT_PATH/stackgres-k8s/src/operator/src/main/resources/pgbouncer-blocklist.properties" \
45+
|| echo :
46+
) \
47+
| yq 'split(" ")' > "data/pgbouncer_blocklist.yaml"
1748

18-
if [ ! -f "$(dirname "$0")/../stackgres-k8s/src/restapi/target/swagger-merged.yaml" ]
49+
if [ ! -f "$PROJECT_PATH/stackgres-k8s/src/restapi/target/swagger-merged.yaml" ]
1950
then
2051
echo "Please build Stackgres operator and swagger first:"
2152
echo
@@ -25,35 +56,36 @@ then
2556
echo
2657
exit 1
2758
fi
28-
cp "$(dirname "$0")/../stackgres-k8s/src/restapi/target/swagger-merged.yaml" "$(dirname "$0")/themes/sg-doc/static/sg-swagger.yaml"
59+
cp "$PROJECT_PATH/stackgres-k8s/src/restapi/target/swagger-merged.yaml" "themes/sg-doc/static/sg-swagger.yaml"
2960

30-
mkdir -p "$(dirname "$0")/generated"
31-
CRD_PATH="$(dirname "$0")/../stackgres-k8s/src/common/src/main/resources/crds"
61+
mkdir -p "generated"
62+
CRD_PATH="$PROJECT_PATH/stackgres-k8s/src/common/src/main/resources/crds"
3263
cat "$CRD_PATH/index.txt" \
3364
| {
3465
while read -r CRD_FILE
3566
do
3667
crdoc --resources "$CRD_PATH/$CRD_FILE" \
37-
-o "$(dirname "$0")/generated/${CRD_FILE%.yaml}.md" \
38-
--template "$(dirname "$0")/CRD.tmpl"
39-
TARGET_PATH="$(ls -d "$(dirname "$0")/content/en/06-crd-reference/"*"-$(echo "${CRD_FILE%.yaml}" | tr 'A-Z' 'a-z')")"
68+
-o "generated/${CRD_FILE%.yaml}.md" \
69+
--template "./CRD.tmpl"
70+
TARGET_PATH="$(ls -d "content/en/06-crd-reference/"*"-$(echo "${CRD_FILE%.yaml}" | tr 'A-Z' 'a-z')")"
4071
INCLUDE_LINE="$(cat "$TARGET_PATH/_index.template.md" | grep -nxF '{{% include "generated/'"${CRD_FILE%.yaml}"'.md" %}}' | cut -d : -f 1)"
4172
head -n "$((INCLUDE_LINE - 1))" "$TARGET_PATH/_index.template.md" > "$TARGET_PATH/_index.md"
42-
cat "$(dirname "$0")/generated/${CRD_FILE%.yaml}.md" >> "$TARGET_PATH/_index.md"
73+
cat "generated/${CRD_FILE%.yaml}.md" >> "$TARGET_PATH/_index.md"
4374
tail -n +"$((INCLUDE_LINE + 1))" "$TARGET_PATH/_index.template.md" >> "$TARGET_PATH/_index.md"
75+
sed -i -z 's/```/\n```\n/g' "$TARGET_PATH/_index.md"
4476
done
4577
}
4678
(
47-
cd "$(dirname "$0")/../stackgres-k8s/install/helm/stackgres-operator"
79+
cd "$PROJECT_PATH/stackgres-k8s/install/helm/stackgres-operator"
4880
helm-docs \
4981
-o "generated.md" \
5082
-f "values.yaml" \
5183
-t "VALUES.html.gotmpl"
5284
)
53-
mv "$(dirname "$0")/../stackgres-k8s/install/helm/stackgres-operator/generated.md" \
54-
"$(dirname "$0")/generated/stackgres-operator.md"
55-
TARGET_PATH="$(dirname "$0")/../doc/content/en/04-administration-guide/01-installation/02-installation-via-helm/01-operator-parameters"
85+
mv "$PROJECT_PATH/stackgres-k8s/install/helm/stackgres-operator/generated.md" \
86+
"generated/stackgres-operator.md"
87+
TARGET_PATH="content/en/04-administration-guide/01-installation/02-installation-via-helm/01-operator-parameters"
5688
INCLUDE_LINE="$(cat "$TARGET_PATH/_index.template.md" | grep -nxF '{{% include "generated/stackgres-operator.md" %}}' | cut -d : -f 1)"
5789
head -n "$((INCLUDE_LINE - 1))" "$TARGET_PATH/_index.template.md" > "$TARGET_PATH/_index.md"
58-
cat "$(dirname "$0")/generated/stackgres-operator.md" >> "$TARGET_PATH/_index.md"
90+
cat "generated/stackgres-operator.md" >> "$TARGET_PATH/_index.md"
5991
tail -n +"$((INCLUDE_LINE + 1))" "$TARGET_PATH/_index.template.md" >> "$TARGET_PATH/_index.md"

doc/config.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,5 +136,9 @@ home = [ "HTML", "RSS", "JSON"]
136136
weight = 5
137137

138138

139+
[markup.tableOfContents]
140+
endLevel = 3
141+
ordered = true
142+
139143
[markup.goldmark.renderer]
140144
unsafe= true

doc/content/en/01-introduction/06-versions/_index.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,32 @@ showToc: true
88

99
=======
1010

11+
## StackGres 1.18.0-rc2
12+
13+
| Component | Versions |
14+
| ------ | ----------- |
15+
| PostgreSQL 18 | 18.1 |
16+
| PostgreSQL 17 | 17.7, 17.6, ~17.5~, 17.4, 17.2, 17.0 |
17+
| PostgreSQL 16 | 16.11, 16.10, ~16.9~, 16.8, 16.6, 16.4, 16.3, 16.2, 16.1, 16.0 |
18+
| PostgreSQL 15 | 15.15, 15.14, ~15.13~, 15.12, 15.10, 15.8, 15.7, 15.6, 15.5, 15.4, 15.3, 15.2, 15.1, 15.0 |
19+
| PostgreSQL 14 | 14.20, 14.19, ~14.18~, 14.17, 14.15, 14.13, 14.12, 14.11, 14.10, 14.9, 14.8, 14.7, 14.6, 14.5, 14.4, ~14.2, 14.1, 14.0~ |
20+
| PostgreSQL 13 | 13.23, 13.22, ~13.21~, 13.20, 13.18, 13.16 13.15, 13.14, 13.13, 13.12, 13.11, 13.10, 13.9, 13.8, 13.7, 13.6, 13.5, 13.4, 13.3, 13.2, 13.1, 13.0 |
21+
| PostgreSQL 12 | 12.22, 12.20, 12.19, 12.18, 12.17, 12.16, 12.15, 12.14, 12.13, 12.12, 12.11, 12.10, 12.9, 12.8, 12.7, 12.6, 12.5, 12.4, 12.3, 12.2 and 12.1 |
22+
| PostgreSQL for Babelfish 17 | 17.6 |
23+
| PostgreSQL for Babelfish 16 | 16.9, 16.6, 16.4, 16.2, 16.1 |
24+
| PostgreSQL for Babelfish 15 | 15.8, 15.5 |
25+
| PostgreSQL for Babelfish 14 | 14.11, 14.10, 14.3 |
26+
| PostgreSQL for Babelfish 13 | 13.9, 13.6 |
27+
| Patroni | 4.1.0, 4.0.5, 4.0.4, 3.3.3, 3.3.2, 3.3.0, 3.2.2, 3.0.2, 2.1.4 |
28+
| WAL-G | 3.0.7, 3.0.3, 3.0.2, 3.0.1, 2.0.1, 2.0.0, 1.1 |
29+
| PgBouncer | 1.25.0 |
30+
| Postgres Exporter | 0.18.1 |
31+
| Envoy | 1.33.2 |
32+
| Fluent-Bit | 4.2.0 |
33+
| Fluentd | 1.18.0 |
34+
| Babelfish Compass | 2025.06 |
35+
| OTEL Collector | 0.139.0 |
36+
1137
## StackGres 1.18.0-rc1
1238

1339
| Component | Versions |

doc/content/en/01-introduction/07-tested-environments/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ StackGres was tested and validated in the following environments:
88

99
| Cloud Provider | Kubernetes versions |
1010
|----------------|---------------------|
11-
| AWS EKS | 1.18 |
11+
| AWS EKS | 1.34 |
1212
| Google GKE | 1.13.11-gke.23 |
1313
| Digital Ocean | 1.18.14<br>1.19.6 |

doc/content/en/02-features/01-declarative-resources/_index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ Have a look at the [CRD Reference]({{% relref "06-crd-reference" %}}) to learn a
2020

2121
Have a look at the [Getting Started]({{% relref "03-demo-quickstart" %}}) guide to get started with a simple StackGres installation.
2222

23-
> **Note:** If you prefer a visual UI over YAML files and the command line, note that every single action that you can query or perform via CRDs is also possible via the web console.
24-
> Likewise, any action performed in the web console will automatically be reflected in the CRDs.
23+
> **Note:** If you prefer a visual UI over YAML files and the command line, note that every single action that you can query or perform via CRDs is also possible via the Web Console.
24+
> Likewise, any action performed in the Web Console will automatically be reflected in the CRDs.
2525
> The choice is yours.

doc/content/en/02-features/03-custom-config/_index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ You own it without any caveats.
1919
StackGres allows advanced Postgres users to further customize the components and configurations.
2020
The configurations are backed by CRDs and fully validated, so there is not a simple ConfigMap that may break your cluster if you set it wrongly.
2121

22+
The operator creates default configuration custom resources if they are not specified. It also allows to set the configurations inline inside of the cluster CRD including those components that does not have a separate CRD like Patroni or the Postgres Exporter.
23+
2224
Have a look at the [Configuration Guide]({{% relref "04-administration-guide/04-configuration" %}}) for a deep dive in how to tune Postgres or connection pool configurations.
25+
2326
As for the other Kubernetes resources, you can customize the services exposed, the pod's labels and, node tolerations, among many others.
2427

2528
In general, StackGres lets you be in full control.

doc/content/en/02-features/04-high-availability/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ StackGres integrates the most renowned and production-tested high availability s
1010
StackGres fully integrates Patroni, and for you there's nothing else to do.
1111
If any pod, any node, anything fails, the cluster will perform a failover and re-heal automatically in a matter of seconds, without human intervention.
1212

13-
StackGres exposes one read-write (master) and one read-only (replicas) connection for the applications via Kubernetes services, that will automatically be updated after any disruptive event happens.
13+
StackGres exposes one read-write (primary) and one read-only (replicas) connection for the applications via Kubernetes services, that will automatically be updated after any disruptive event happens.
1414

1515
Have a look at the [High Availability Guide]({{% relref "04-administration-guide/09-high-availability" %}}) to learn more about Patroni is integrated into StackGres, and how to perform manual switchovers, or how test failovers.

0 commit comments

Comments
 (0)