Hi everyone,
We are preparing to upgrade our SonarQube Enterprise Edition instance running on GKE (managed via ArgoCD). Since the 2026.x Helm charts completely remove the embedded PostgreSQL dependency, and our current embedded DB is PostgreSQL 12, we need to decouple the database and upgrade the major version simultaneously.
I’d love to get the community’s and maintainers’ eyes on our migration strategy to see if we missed any Enterprise or Postgres-specific “gotchas.”
Current State:
-
Edition: Enterprise Edition
-
Chart: 2025.4.2
-
Database: Embedded PostgreSQL 12 (Bitnami subchart,
postgresql.enabled: true)
Target State:
-
Edition: Enterprise Edition
-
Chart: 2026.1.0 (or 2026.2.0)
-
Database: Standalone PostgreSQL 17.4 (
postgresql.enabled: false)
Our Migration Strategy:
We’ve successfully tested the data pipe in a dry run, but here is our exact runbook for the maintenance window. We are using ArgoCD, so our strategy relies on temporarily disabling sync pruning to create a zero-risk rollback path.
-
Pre-Req: Deploy a new, empty Standalone PostgreSQL 17.4 instance in the same namespace.
-
Freeze: Scale the current
sonarqube-sonarqubeStatefulSet to 0. -
The Data Pipe: Stream the data directly from the old PG 12 pod to the new PG 17 pod via the internal GKE network:
pg_dump -U sonarUser -d sonarDB --clean | psql -U sonarUser -d sonarDB -
Optimize: Run
ANALYZE VERBOSE;on the new PG 17 database. -
GitOps Rollout: * Update our ArgoCD values to
chart: 2026.1.0.-
Set
postgresql.enabled: false. -
Map the new standalone DB using the
jdbcOverwriteblock. -
Crucial Step: We disable
prune: trueandselfHeal: truein ArgoCD. This allows us to deploy the new 2026 app pod while intentionally leaving the old PG 12 database running untouched in the background.
-
-
Trigger Upgrade: Navigate to
https://<our-url>/setupto trigger the database migration and Elasticsearch re-index. -
The Safety Net: If the 2026 instance fails to start or plugins crash, we simply revert our Git commit to the 2025.4 values. ArgoCD will redeploy the old app pod, it will reconnect to the untouched PG 12 database, and we experience zero data loss.
My Questions for the Community/SonarSource:
-
PG 12 to PG 17: Are there any known issues, missing extensions, or collation mismatches we should watch out for when piping SonarQube Enterprise data directly from Postgres 12 to Postgres 17?
-
Elasticsearch Re-index: For a ~55GB database on the Enterprise Edition, roughly how long should we expect the background re-indexing to take after hitting
/setupon the new chart? -
Helm Chart Gotchas: Aside from dropping the
postgresqlblock and keepinginitSysctl: false(due to GKE Autopilot limits), are there any other configs might cause the 2026.x startup to fail?