Skip to content

chore(infrahub): upgrade the neo4j subchart to 2026.5.0 - #84

Merged
fatih-acar merged 3 commits into
stablefrom
fac/prep-neo4j-upgrade-jop7m
Aug 19, 2026
Merged

fatih-acar merged 3 commits into
stablefrom
fac/prep-neo4j-upgrade-jop7m

Conversation

@fatih-acar

@fatih-acar fatih-acar commented Aug 3, 2026 •

Copy link
Copy Markdown
Contributor

Merge timing — resolved

This PR originally had to wait for the Infrahub 1.11 release, because Neo4j 2026.05 is validated against the Neo4j Python driver 6.2 and only 1.11 carries that driver.

Infrahub 1.11.0 has since shipped (infrahub-v1.11.0, 2026-08-19), and this branch now bumps appVersion to 1.11.0 alongside the Neo4j upgrade. The driver/server pairing is correct within this PR, so there is no longer an ordering constraint on the merge.

Summary

Brings the bundled Neo4j up to the version Infrahub is actually tested against. The neo4j subchart moves from 2025.10.1-4 to 2026.5.0, which deploys Neo4j 2026.05.0 — matching release-1.11 in the infrahub repo.

This tracks the upstream bump in opsmill/infrahub@ad08b81a7 ("chore: upgrade to Python 3.14 with Neo4j 6.2 driver and 2026.05 server"), which moved the HA deployment and Terraform helm_release pins to the same 2026.5.0 chart, so the Helm and Terraform deployment paths stay on one Neo4j version.

Key changes

  • Deployments get Neo4j 2026.05.0 instead of 2025.10.1, in line with what Infrahub 1.11 is tested against.
  • appVersion moves to 1.11.0 on both charts, so they deploy the Infrahub release that carries the matching Neo4j 6.2 driver.
  • infrahub chart 4.32.3 → 4.33.0; infrahub-enterprise 4.18.3 → 4.19.0 with its infrahub dependency repinned to 4.33.0.
  • Changelog fragments on both charts flag the store upgrade for operators running a persistent data volume.

Operator impact

Neo4j 2026.05 upgrades the store format on first startup, and that is not reversible. Operators should back up the database before upgrading the chart — both changelog fragments say so.

The chart default for neo4j.volumes.data is emptyDir, so only deployments that opted into a persistent volume are affected.

Test plan

  • helm lint passes on charts/infrahub and charts/infrahub-enterprise.
  • Rendered manifests were diffed old (2025.10.1-4) vs new (2026.5.0) across the default values and all five infrahub-enterprise sizing presets (small, medium, large, medium-data, large-data). The only differences are image: neo4j:2025.10.1 → neo4j:2026.05.0 and the subchart's own HELM_NEO4J_VERSION / HELM_CHART_VERSION env vars. Nothing else in the StatefulSet moves.
  • neo4j:2026.05.0 and neo4j:2026.05.0-enterprise both exist upstream as multi-arch (amd64 + arm64) images.
  • All three towncrier fragments were draft-built and render correctly at 4.33.0 / 4.19.0.
  • Rebased onto stable at d9ff224. Re-verified after the rebase: both charts lint, all six render cases still produce neo4j:2026.05.0 with no resource limits, and stable's medium-preset heap change (24G → 16G, fix: medium sizing preset reserves 28 GB of 32 GB for Neo4j, leaving no headroom #87) is intact.
  • CI to watch: helm-lint-infrahub, helm-lint-enterprise, e2e-infrahub, e2e-infrahub-enterprise.

Commits

Three commits, reviewable independently:

  1. chore(infrahub): upgrade the neo4j subchart to 2026.5.0 — the version bump itself.

  2. refactor(infrahub): drop the neo4j resources limits workaround — removes the now-redundant limits: {} in values.yaml. It existed only because the older subchart forced limits == requests whenever limits was nil, so an explicit empty map was the only way to render Neo4j uncapped (af1a7d9). The 2026.5.0 helper only auto-fills limits for the shorthand resources.cpu/resources.memory form, so a requests-only block leaves them unset on its own.

    Equivalent rendered output — limits drops out entirely instead of rendering as {}, which is the same "no cap" to Kubernetes. Verified across the default values and all five sizing presets, plus both user-override paths: a shorthand cpu/memory override still does not auto-fill limits, and an explicit limits override still passes through untouched.

  3. chore: bump appVersion to 1.11.0 — points both charts at the newly released Infrahub 1.11.0, following the existing bump convention: appVersion on both charts plus prefect-server.global.prefect.image.prefectTag in the infrahub values, which tracks the same version. Rendered manifests now pull registry.opsmill.io/opsmill/infrahub:1.11.0 (confirmed present in the registry) alongside neo4j:2026.05.0.

🤖 Generated with Claude Code

Infrahub and others added 2 commits August 19, 2026 22:09
Match the Neo4j server version Infrahub is tested against on release-1.11
(2026.05.0), following the upstream bump in infrahub ad08b81a7 which moved
the HA deployment and Terraform pins from 2025.10.1-4 to the same chart.

Rendered manifests are unchanged apart from the image tag and the chart's
own HELM_NEO4J_VERSION / HELM_CHART_VERSION env vars, verified against the
default values and all five infrahub-enterprise sizing presets. The
subchart reworked its resources helper so a requests-only block now leaves
limits unset natively, but the existing explicit `limits: {}` renders
identically, so values.yaml is left alone.

Neo4j 2026.05 is validated against the 6.2 Python driver, which ships with
Infrahub 1.11, while appVersion here stays at 1.10.6 (driver 6.0.3). This
should therefore land immediately before or after the 1.11 release rather
than shipping ahead of it.

infrahub-enterprise follows with its infrahub dependency pinned to 4.32.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The empty `limits` map existed only because the older neo4j subchart forced
limits == requests whenever limits was nil, so an explicit empty map was the
only way to render the Neo4j container uncapped (af1a7d9).

The 2026.5.0 subchart reworked its resources helper to only auto-fill limits
for the shorthand `resources.cpu`/`resources.memory` form, so a requests-only
block now leaves limits unset on its own. The workaround is redundant.

Rendered output is equivalent: `limits` drops out entirely rather than
rendering as `{}`, which is the same "no cap" to Kubernetes. Verified across
the default values and all five infrahub-enterprise sizing presets, plus both
user-override paths -- a shorthand cpu/memory override still does not
auto-fill limits, and an explicit limits override still passes through.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@fatih-acar
fatih-acar force-pushed the fac/prep-neo4j-upgrade-jop7m branch from 7c6a875 to f81e573 Compare August 19, 2026 22:11
@fatih-acar
fatih-acar marked this pull request as ready for review August 19, 2026 22:12
Infrahub 1.11.0 was released, so point the charts at it. This is the release
that carries the Neo4j 6.2 Python driver, which is what Neo4j 2026.05 -- the
server this branch upgrades the subchart to -- is validated against. The two
changes belong in the same chart release.

Follows the appVersion bump convention: appVersion on both charts plus the
prefectTag in the infrahub values, which tracks the same version. The chart
versions already move to 4.33.0 / 4.19.0 earlier in this branch, so no
further version bump is needed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@fatih-acar
fatih-acar merged commit f04fa1a into stable Aug 19, 2026
10 checks passed
@fatih-acar
fatih-acar deleted the fac/prep-neo4j-upgrade-jop7m branch August 19, 2026 22:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant