-
Notifications
You must be signed in to change notification settings - Fork 196
Migration v26
- Helm chart dependencies switched to CloudPirates charts for PostgreSQL and RabbitMQ
- PostgreSQL and RabbitMQ moved from Bitnami Legacy images to official images postgres:18.4, rabbitmq:4.3.4-management
- OpenSearch upgraded to 3.8.0
The key change in this release is a switch of the chart provider for the PostgreSQL and RabbitMQ dependencies: from bitnami/* (charts.bitnami.com) to CloudPirates OCI charts (oci://registry-1.docker.io/cloudpirates). OpenSearch stays on the same repository, only the major version changes (2.x → 3.x).
helm upgrade will not migrate data automatically.
| Component | Before | After | Data |
|---|---|---|---|
| PostgreSQL |
bitnami/postgresql 16.7.21 |
cloudpirates/postgres (alias postgresql) 0.19.14, OCI |
Requires migration (dump/restore) |
| RabbitMQ |
bitnami/rabbitmq 16.0.11 |
cloudpirates/rabbitmq 0.21.15, OCI |
No backup needed — queues are ephemeral |
| OpenSearch |
opensearch-project 2.38.0 |
opensearch-project 3.8.0 (repo unchanged) |
No backup needed |
Chart reportportal
|
26.x.x | 26.8.12 | — |
RabbitMQ: confirm the reporting queues are empty (no in-flight events).
kubectl exec -it <bitnami-rabbitmq-pod> -n reportportal -- rabbitmqctl list_queues name messagesPostgreSQL: dump the current Bitnami DB.
kubectl get pods -n reportportal -l app.kubernetes.io/name=postgresql
kubectl exec -it my-release-postgresql-0 -n reportportal -- \
bash -c "PGPASSWORD='<pass>' pg_dump -U postgres reportportal" \
> reportportal_backup_$(date +%F).sqlUninstall the old release to clean up deployments and subcharts:
helm uninstall my-release -n reportportalHelm does not delete PVCs — old storage claims remain intact in the namespace until explicitly removed.
Delete the volumes of the deprecated Bitnami and OpenSearch components to release disk space:
# RabbitMQ
kubectl delete pvc -n reportportal data-reportportal-my-release-rabbitmq-0
# PostgreSQL (Bitnami volume)
kubectl delete pvc -n reportportal data-my-release-postgresql-0
# OpenSearch
kubectl delete pvc -n reportportal data-my-release-opensearch-cluster-master-0Confirm exact volume names with kubectl get pvc -n reportportal before executing.
To prevent Liquibase race conditions (where serviceapi initializes an empty schema before restore), deploy CloudPirates PostgreSQL independently first, then restore the dump.
Create a temporary file postgres-standalone-values.yaml:
image:
repository: postgres
tag: "18.4"
auth:
username: "rp_user"
password: "rp_password"
database: "reportportal"
service:
port: 5432
persistence:
enabled: true
size: 20Gi
accessModes:
- ReadWriteOnceInstall PostgreSQL as a standalone release:
helm install rp-postgres oci://registry-1.docker.io/cloudpirates/postgres \
-n reportportal \
-f postgres-standalone-values.yamlOnce rp-postgres-0 is in Running state:
kubectl exec -i rp-postgres-0 -n reportportal -- \
bash -c "PGPASSWORD='rp_password' psql -U rp_user reportportal" \
< reportportal_backup_<date>.sqlVerify that tables were restored:
kubectl exec -it rp-postgres-0 -n reportportal -- \
bash -c "PGPASSWORD='rp_password' psql -U rp_user -d reportportal -c '\dt' | wc -l"Because the volume uses ReadWriteOnce (RWO), you must ensure the standalone pod is completely terminated before starting the main ReportPortal chart. Otherwise, Kubernetes will fail with a Multi-Attach error.
- Remove the standalone Helm release:
helm uninstall rp-postgres -n reportportal- Wait for pod termination:
kubectl wait --for=delete pod/rp-postgres-0 -n reportportal --timeout=120sThe PVC data-rp-postgres-0 remains preserved in the namespace.
Now that the database contains the restored schema, deploy ReportPortal configured to attach the existing PVC. Liquibase will detect the existing database structures and automatically apply only the delta migrations (24.x/25.x → 26.x).
Add/update the postgresql block in your ReportPortal values.yaml:
postgresql:
install: true
image:
repository: postgres
tag: "18.4"
auth:
username: *dbuser
password: *dbpassword
database: *dbname
service:
port: *dbport
persistence:
enabled: true
size: 20Gi
accessModes:
- ReadWriteOnce
existingClaim: "data-rp-postgres-0" # Reuses the restored PVC from Step 3
volumeName: "data"Deploy ReportPortal:
helm upgrade --install my-release \
-n reportportal \
reportportal/reportportal \
-f values.yamlFuture Upgrades Note: For all future releases, ReportPortal manages PostgreSQL seamlessly as an internal subchart (
postgresql.install=true). TheexistingClaim: "data-rp-postgres-0"parameter keeps pointing to this volume, making all future Helm upgrades zero-toil.
- Verify Pod Status & Logs:
kubectl get pods -n reportportal -l app.kubernetes.io/instance=my-release
kubectl logs -n reportportal -l app.kubernetes.io/name=api --tail=100- Verify RabbitMQ Plugins:
kubectl exec -it <new-rabbitmq-pod> -n reportportal -- rabbitmqctl list_plugins-
⚠️ Re-index OpenSearch via ReportPortal Admin UI: Because OpenSearch was recreated with fresh, empty volumes, log patterns and historical data must be re-indexed:
- Log into ReportPortal UI as an Superadmin.
- Navigate to Project Settings → Analyzer.
- Click Generate Index to populate OpenSearch with existing launch data from PostgreSQL.