Skip to content

Oppgradering

Denne guiden dekker oppgraderingsprosessen for Lumi installert med Helm.

Forutsetninger

  • helm og kubectl installert
  • 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.

ArtefaktAnbefalt pinning
Helm chart--version 1.2.3
API-imageimage.api.tag=1.2.3
Dashboard-imageimage.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).sql

Ekstern 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: OK

Oppgradering

sh
helm upgrade lumi oci://ghcr.io/asorheim/lumi-analytics/charts/lumi \
  --namespace lumi \
  --version <ny-versjon> \
  --reuse-values

Hva skjer under oppgradering

  1. Helm utfører en rolling update av API og dashboard pods
  2. Nye API-pods kjører Flyway-migrasjoner automatisk ved oppstart
  3. 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 COLUMN eller DROP TABLE på eksisterende objekter
  • Ingen ALTER COLUMN TYPE på eksisterende kolonner
  • Ingen kolonneendringer (rename)
  • Nye NOT NULL-kolonner må ha DEFAULT-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 lumi

Rollback 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.sql

Validering 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-respons

Docker Compose (utvikling)

For lokale utviklingsmiljøer med Docker Compose: docker compose pull && docker compose up -d.

Lumi Analytics — bygget på navikt/lumi (MIT-lisens)