Skip to content

feat: update defaults to Postgres 18, CNPG 1.29, and cert-manager latest#51

Merged
mmols merged 4 commits into
mainfrom
feat/PLAT-563/cnpg-pg-versions
Apr 15, 2026
Merged

feat: update defaults to Postgres 18, CNPG 1.29, and cert-manager latest#51
mmols merged 4 commits into
mainfrom
feat/PLAT-563/cnpg-pg-versions

Conversation

@mmols
Copy link
Copy Markdown
Member

@mmols mmols commented Apr 15, 2026

Summary

  • Update default PostgreSQL image from 17-spock5-standard to 18-spock5-standard across values, docs, and tests
  • Bump CloudNativePG references from 1.28.x to 1.29.0 in test infrastructure and documentation links
  • Switch cert-manager install URL to use latest release instead of a pinned version

Details

Postgres 18

The default imageName in values.yaml now uses the 18-spock5-standard tag. All documentation examples, code snippets, and unit test assertions have been updated to reflect this change. The major version upgrade docs now use 17→18 as the example scenario (previously 16→17).

CNPG 1.29

The Kind cluster setup in test/Makefile now installs CNPG 1.29.0. Documentation links to CloudNativePG have been updated from documentation/1.28/ to docs/1.29/ to match the new URL scheme / docs system.

cert-manager latest

Both test/Makefile and docs/install.md now reference releases/latest/download/cert-manager.yaml instead of pinning to v1.19.3, reducing maintenance burden for future upgrades. This was already the case in our docs. Our usage of cert-manager is very straight forward, and customers typically manage this version outside of our chart anyway.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 15, 2026

📝 Walkthrough

Walkthrough

Default PostgreSQL image tag changed from 17 to 18 across configs and docs; CloudNativePG references updated to 1.29; cert-manager manifest URLs switched to the moving "latest" release in docs and test manifests.

Changes

Cohort / File(s) Summary
PostgreSQL Image Version Upgrade
README.md, docs/configuration.md, docs/usage/connecting.md, docs/usage/monitoring.md, docs/usage/postgres_upgrades.md, docs/usage/standby.md, test/unit/cluster_test.go, values.yaml
Updated container image tag from ghcr.io/pgedge/pgedge-postgres:17-spock5-standardghcr.io/pgedge/pgedge-postgres:18-spock5-standard. docs/usage/postgres_upgrades.md also updates pinned immutable tags (e.g., 17.6-spock5.0.118.3-spock5.0.6) and adjusts major-upgrade example versions.
CloudNativePG Documentation Links
docs/usage/adding_nodes.md, docs/usage/backups.md, docs/usage/postgres_upgrades.md
Updated CloudNativePG documentation links and anchors from version 1.28/1.18 to 1.29 where referenced.
Dependency/Manifest URLs
docs/install.md, test/Makefile
Replaced pinned cert-manager release URL (v1.19.3) with the moving /releases/latest/download/cert-manager.yaml; updated CNPG manifest reference in test/Makefile from v1.28.1v1.29.0.

Poem

🐰 From seventeen to eighteen, I hop and sing,
New images bloom and docs take wing.
Links refreshed and manifests aligned,
A tidy burrow, versioned and fine. 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title clearly and concisely summarizes all three main changes: Postgres 18, CNPG 1.29, and cert-manager latest.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, detailing the three main updates with context for each.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/PLAT-563/cnpg-pg-versions

Comment @coderabbitai help to get the list of available commands and usage tips.

@codacy-production
Copy link
Copy Markdown

codacy-production Bot commented Apr 15, 2026

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 duplication

Metric Results
Duplication 0

View in Codacy

TIP This summary will be updated as you push new changes. Give us feedback

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/usage/postgres_upgrades.md (1)

7-7: ⚠️ Potential issue | 🟡 Minor

Fix remaining version-text mismatches in the upgrade narrative.

A few lines still refer to the old progression and one grammar issue remains, which can confuse operators following this guide.

✏️ Suggested doc patch
-This chart utilizes a mutable tag by default to pull the latest pgEdge Enterprise Postgres image for Postgres 17 and Spock 5.
+This chart utilizes a mutable tag by default to pull the latest pgEdge Enterprise Postgres image for Postgres 18 and Spock 5.
@@
-Using this approach, you can gradually upgrade to Postgres 17 by removing existing Postgres 16 nodes.
+Using this approach, you can gradually upgrade to Postgres 18 by removing existing Postgres 17 nodes.
@@
-For example, given the following two node configuration running Postgres 17:
+For example, given the following two-node configuration running Postgres 17:
@@
-You can perform a major version upgrade from 17 to 18 by specifying a new image for Postgres 17:
+You can perform a major version upgrade from 17 to 18 by specifying a new image for Postgres 18:

Also applies to: 97-97, 105-105, 121-122

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/usage/postgres_upgrades.md` at line 7, The upgrade narrative still
contains outdated version references and a grammar error — update every
occurrence of the old progression language to match the current progression
("Postgres 17 and Spock 5") and remove the ambiguous phrase about a "mutable tag
by default"; revise the sentence to read clearly (e.g., "This chart uses a
mutable tag by default to pull the latest pgEdge Enterprise Postgres image for
Postgres 17 / Spock 5.") and make parallel fixes for the other mismatched lines
that mention the previous progression (the similar phrases around the same
paragraph and the occurrences corresponding to the other reported locations).
Ensure tense and plurality are consistent across the document and that all
version mentions use the exact "Postgres 17" and "Spock 5" wording.
🧹 Nitpick comments (2)
docs/install.md (1)

120-120: Update cert-manager to use a pinned version instead of latest for reproducible deployments.

Line 120 uses releases/latest, which resolves to different versions over time (currently v1.20.2). This makes production and documentation examples non-reproducible across environments and dates. Pin to a specific release version:

Suggested fix
kubectl apply -f \
-  https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
+  https://github.com/cert-manager/cert-manager/releases/download/v1.20.2/cert-manager.yaml

(Update this version periodically as new cert-manager releases are tested with pgEdge Helm.)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/install.md` at line 120, The docs reference to the cert-manager manifest
currently uses the floating URL "releases/latest/download/cert-manager.yaml",
which makes installs non-reproducible; update that URL to a pinned release (for
example replace "releases/latest" with the specific tag like
"releases/download/v1.20.2" or the currently vetted cert-manager version) so the
manifest points to an exact version of cert-manager.yaml and document that this
pinned version should be updated periodically after testing.
test/Makefile (1)

39-40: Pin cert-manager manifest version in test Makefile for deterministic CI test bootstrap.

Using releases/latest creates a moving target; silent version updates can cause test flakiness when integration tests only verify deployment presence (not behavioral compatibility, see test/integration/suite_test.go lines 74-78). The CNPG manifest is already pinned to v1.29.0 in the same file, demonstrating the team's preference for version pinning in test environments.

Add a configurable CERT_MANAGER_MANIFEST variable to allow CI to pin a tested version while preserving local override flexibility:

Suggested change
+# Allow CI to pin a tested cert-manager manifest while keeping local override flexibility.
+CERT_MANAGER_MANIFEST ?= https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
+
 .PHONY: kind-up
 kind-up:
 	kind delete cluster --name $(KIND_CLUSTER_NAME) 2>/dev/null || true
@@ -37,7 +40,7 @@ kind-up:
 	kubectl apply --context kind-$(KIND_CLUSTER_NAME) --server-side -f \
 		https://raw.githubusercontent.com/pgEdge/pgedge-cnpg-dist/refs/heads/main/manifests/cloudnative-pg/v1.29.0/cnpg-1.29.0.yaml
 	kubectl apply --context kind-$(KIND_CLUSTER_NAME) -f \
-		https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
+		$(CERT_MANAGER_MANIFEST)
 	kubectl --context kind-$(KIND_CLUSTER_NAME) wait --for=condition=Available deployment \
 		-n cnpg-system cnpg-controller-manager --timeout=120s
 	kubectl --context kind-$(KIND_CLUSTER_NAME) wait --for=condition=Available deployment \
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/Makefile` around lines 39 - 40, Replace the hardcoded cert-manager
manifest URL in the Makefile with a configurable CERT_MANAGER_MANIFEST variable
and use that variable in the kubectl apply command; define CERT_MANAGER_MANIFEST
with a pinned release URL (e.g., a specific vX.Y.Z release) as the default so CI
can override it while still allowing local overrides via make
CERT_MANAGER_MANIFEST=...; update the kubectl apply invocation to use
$(CERT_MANAGER_MANIFEST) instead of the current releases/latest URL and ensure
the variable name appears near CNPG_MANIFEST for consistency.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@docs/usage/postgres_upgrades.md`:
- Line 7: The upgrade narrative still contains outdated version references and a
grammar error — update every occurrence of the old progression language to match
the current progression ("Postgres 17 and Spock 5") and remove the ambiguous
phrase about a "mutable tag by default"; revise the sentence to read clearly
(e.g., "This chart uses a mutable tag by default to pull the latest pgEdge
Enterprise Postgres image for Postgres 17 / Spock 5.") and make parallel fixes
for the other mismatched lines that mention the previous progression (the
similar phrases around the same paragraph and the occurrences corresponding to
the other reported locations). Ensure tense and plurality are consistent across
the document and that all version mentions use the exact "Postgres 17" and
"Spock 5" wording.

---

Nitpick comments:
In `@docs/install.md`:
- Line 120: The docs reference to the cert-manager manifest currently uses the
floating URL "releases/latest/download/cert-manager.yaml", which makes installs
non-reproducible; update that URL to a pinned release (for example replace
"releases/latest" with the specific tag like "releases/download/v1.20.2" or the
currently vetted cert-manager version) so the manifest points to an exact
version of cert-manager.yaml and document that this pinned version should be
updated periodically after testing.

In `@test/Makefile`:
- Around line 39-40: Replace the hardcoded cert-manager manifest URL in the
Makefile with a configurable CERT_MANAGER_MANIFEST variable and use that
variable in the kubectl apply command; define CERT_MANAGER_MANIFEST with a
pinned release URL (e.g., a specific vX.Y.Z release) as the default so CI can
override it while still allowing local overrides via make
CERT_MANAGER_MANIFEST=...; update the kubectl apply invocation to use
$(CERT_MANAGER_MANIFEST) instead of the current releases/latest URL and ensure
the variable name appears near CNPG_MANIFEST for consistency.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d6d109c5-fb3c-47ab-bab0-305e93ac1c3c

📥 Commits

Reviewing files that changed from the base of the PR and between 294de07 and 7dfdc64.

📒 Files selected for processing (12)
  • README.md
  • docs/configuration.md
  • docs/install.md
  • docs/usage/adding_nodes.md
  • docs/usage/backups.md
  • docs/usage/connecting.md
  • docs/usage/monitoring.md
  • docs/usage/postgres_upgrades.md
  • docs/usage/standby.md
  • test/Makefile
  • test/unit/cluster_test.go
  • values.yaml

@mmols mmols requested a review from rshoemaker April 15, 2026 17:19
Copy link
Copy Markdown
Contributor

@rshoemaker rshoemaker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.

Changelog entry now or do you do that as part of the release process?

Comment thread docs/usage/postgres_upgrades.md Outdated
Comment thread docs/usage/postgres_upgrades.md Outdated
Comment thread docs/usage/postgres_upgrades.md Outdated
Comment thread docs/usage/standby.md
Comment on lines 63 to 65
pgedge-n1-1 0/66005850 Primary OK BestEffort 1.28.0 aks-agentpool-14750958-vmss000000
pgedge-n1-2 0/66005850 Standby (sync) OK BestEffort 1.28.0 aks-agentpool-14750958-vmss000002
pgedge-n1-3 0/66005850 Standby (sync) OK BestEffort 1.28.0 aks-agentpool-14750958-vmss000001
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you want to update the sample output to show 1.29.0?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll handle this separately - the output here may have changed with the latest kubectl version, which we are about to publish.

@mmols
Copy link
Copy Markdown
Member Author

mmols commented Apr 15, 2026

I'll update the changelog separately - there's a small fix to the release process that will be needed as well, so I'll bundle it there.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
docs/usage/postgres_upgrades.md (1)

105-105: Minor grammar: hyphenate compound adjective.

Consider hyphenating "two-node configuration" since it's a compound adjective modifying a noun.

📝 Suggested fix
-For example, given the following two node configuration running Postgres 17:
+For example, given the following two-node configuration running Postgres 17:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/usage/postgres_upgrades.md` at line 105, The phrase "two node
configuration" should be hyphenated as a compound adjective; update the text to
read "two-node configuration" wherever that phrase appears (e.g., the example
sentence currently reading "given the following two node configuration running
Postgres 17") to fix the minor grammar issue.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@docs/usage/postgres_upgrades.md`:
- Line 105: The phrase "two node configuration" should be hyphenated as a
compound adjective; update the text to read "two-node configuration" wherever
that phrase appears (e.g., the example sentence currently reading "given the
following two node configuration running Postgres 17") to fix the minor grammar
issue.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 70e5af82-9d7c-48ac-a6df-8e98d12e78c2

📥 Commits

Reviewing files that changed from the base of the PR and between 7dfdc64 and c38c84e.

📒 Files selected for processing (1)
  • docs/usage/postgres_upgrades.md

@mmols mmols merged commit 97fcb9a into main Apr 15, 2026
7 of 8 checks passed
@mmols mmols deleted the feat/PLAT-563/cnpg-pg-versions branch April 15, 2026 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants