Appearance
Oppgradering
Denne guiden dekker oppgraderingsprosessen for Lumi installert med Helm.
Forutsetninger
helmogkubectlinstallert- Tilgang til Kubernetes-clusteret der Lumi kjører
- Kjenn gjeldende versjon:
helm list -n lumi
Versjonspinning
Lumi publiserer Docker-images og Helm chart med semantisk versjonering.
| Artefakt | Anbefalt pinning |
|---|---|
| Helm chart | --version 1.2.3 |
| API-image | image.api.tag=1.2.3 |
| Dashboard-image | image.dashboard.tag=1.2.3 |
Ikke bruk latest-tag i produksjon
latest oppdateres ved hver commit til main og er ikke egnet for produksjon. Bruk alltid eksplisitte versjonstagger.
Før oppgradering
1. Ta backup av databasen
sh
kubectl exec -n lumi lumi-postgresql-0 -- \
pg_dump -U lumi -d lumi > lumi-backup-$(date +%F).sqlEkstern database
Hvis du bruker ekstern PostgreSQL (postgresql.enabled=false), bruk din vanlige backup-prosedyre (f.eks. pg_dump direkte eller managed snapshots).
2. Les endringslogg
Sjekk CHANGELOG.md i din lokale klone for breaking changes mellom din gjeldende versjon og målversjonen.
3. Verifiser at nåværende deployment er sunn
sh
# Sjekk pod-status
kubectl get pods -n lumi
# Sjekk API health
kubectl exec -n lumi deploy/lumi-api -- curl -s localhost:8080/internal/isAlive
# Forventet: OK
kubectl exec -n lumi deploy/lumi-api -- curl -s localhost:8080/internal/isReady
# Forventet: OKOppgradering
sh
helm upgrade lumi oci://ghcr.io/asorheim/lumi-analytics/charts/lumi \
--namespace lumi \
--version <ny-versjon> \
--reuse-valuesHva skjer under oppgradering
- Helm utfører en rolling update av API og dashboard pods
- Nye API-pods kjører Flyway-migrasjoner automatisk ved oppstart
- Gamle pods avsluttes etter at nye er klare
Oppgrader alltid én minor-versjon om gangen. Ikke hopp over versjoner.
Databasemigrasjoner
Lumi bruker Flyway for databasemigrasjoner. Migrasjoner kjøres automatisk når API-et starter — ingen manuell intervensjon er nødvendig.
Migrasjonsbaseline
Lumi v1.0 inneholder en squashet migrasjonsbaseline (V1–V3). Denne guiden gjelder oppgraderinger fra v1.0 og nyere. Oppgradering fra pre-release-versjoner støttes ikke — bruk en fresh install.
Viktige egenskaper:
- Forward-only — migrasjoner kan ikke reverseres
- Automatisk — kjøres ved oppstart, før API-et mottar trafikk
- Bakoverkompatible — nye migrasjoner er designet for å fungere med forrige app-versjon
Migreringsregler
Alle migrasjoner følger disse reglene for å sikre trygg rollback:
- Ingen
DROP COLUMNellerDROP TABLEpå eksisterende objekter - Ingen
ALTER COLUMN TYPEpå eksisterende kolonner - Ingen kolonneendringer (rename)
- Nye
NOT NULL-kolonner må haDEFAULT-verdi - Kun additive endringer: nye tabeller, nye kolonner, nye indekser
Cache (Valkey)
Valkey er et rent cache-lag uten persistent tilstand. Det er trygt å tømme Valkey under oppgradering.
Brukersesjoner
Aktive brukersesjoner er lagret i Valkey. Brukere vil bli logget ut etter oppgradering og må autentisere på nytt.
LUMI_DEMO_MODE (DO NOT SET ON CUSTOMER DEPLOYMENTS)
This flag is used exclusively by the public Lumi demo at demo.lumianalytics.no to enable a "demo mode" banner on the dashboard and to short-circuit setup-status checks against the seeded demo data. It must never be set in a customer deployment.
The CI pipeline guards charts/lumi/values.yaml against accidental commits that set dashboard.env.lumiDemoMode: "true". The check lives in the helm-lint job in .github/workflows/ci.yaml.
If you are forking this chart for an internal demo of your own, set dashboard.env.lumiDemoMode: "true" in your override values file — not in values.yaml.
Rollback
App-kode
sh
helm rollback lumi -n lumiRollback er kun trygt til forrige versjon (N-1). Helm ruller tilbake API- og dashboard-containere, men påvirker ikke PostgreSQL-subchartet. PVC-er (databasedata) beholdes.
Database
Databasemigrasjoner kan ikke rulles tilbake. Fordi migrasjoner er bakoverkompatible med forrige versjon, vil den gamle app-koden fungere mot det nye skjemaet.
Worst case (inkompatibel migrasjon): Restore fra backup.
sh
# Restore fra backup
kubectl exec -i -n lumi lumi-postgresql-0 -- \
psql -U lumi -d lumi < lumi-backup-YYYY-MM-DD.sqlValidering etter oppgradering
sh
# 1. Sjekk pod-status
kubectl get pods -n lumi
# 2. Sjekk API health
kubectl exec -n lumi deploy/lumi-api -- curl -s localhost:8080/internal/isAlive
# Forventet: OK
# 3. Sjekk Flyway-migrasjoner i API-logg
kubectl logs -n lumi deploy/lumi-api | grep "Flyway"
# Forventet: "Database migrations completed!" og "Migrations executed: N"
# 4. Sjekk at dashboardet laster
kubectl exec -n lumi deploy/lumi-dashboard -- curl -s localhost:3000
# Forventet: HTML-responsDocker Compose (utvikling)
For lokale utviklingsmiljøer med Docker Compose: docker compose pull && docker compose up -d.
