Skip to content

KNADA notebooks

KNADA notebooks bestilles gjennom Knorten. Disse notebookene kjører i et managed Kubernetes cluster i GCP som driftes av NADA.

Installasjon av Python-pakker

For KNADA notebooks vil det kun være de Python-pakkene som blir lagret under user-stien som blir persistert når Notebook-en slås av. Derfor er det nødvendig å bruke --user flagget når du installere Python-pakker.

pip install google-cloud-bigquery --user

Glemmer du å bruke --user, så blir pakkene installert globalt, og de vil forsvinne når notebook-en din blir skrudd av. Har du behov for å ha globalt installerte pakker anbefaler vi at du bruker ditt eget Jupyter notebook image.

Automatisk avslåing av notebook

For å spare ressurser vil en Jupyter notebook automatisk blir skrudd av etter en times inaktivitet. Har man behov for lengre levetid kan man spesifisere dette gjennom Knorten i feltet Cull Timeout.

Du kan se ressursbruken din i Grafana/Jupyter notebook utilization.

Python-miljø

Når man logger inn i Jupyter så får man mulighet til å velge hvilket Python miljø man ønsker i sin notebook. Vi følger Python Release Cycle for imagene våre. Det betyr at vi lager et image per Python-versjon som ikke har statusen end-of-life, og som også er støttet av Jupyter (se Docker Hub). Samtlige av image-ene man kan velge mellom kommer med drivere for oracle, postgres og TDV installert.

Eget image for Jupyter notebook

Har du behov for noe mer enn det vi tilbyr ut av boksen kan du lage ditt eget Jupyter notebook image. Ta gjerne utgangspunkt i vårt image med den Python-versjonen du ønsker. Gjør du det får du drivere for oracle, postgres og TDV, samt de vanligste kommandolinjeverktøyene som er hendige å ha i en notebook allerede installert.

Når du har laget et image kan du selv spesifisere at det er dette imaget som skal brukes for teamet ditt i Knorten.

NB: Hvis du bygger image lokalt på en nyere Mac så er det viktig at du bygger imaget for riktig plattform. Legg til --platform linux/amd64 i docker build kommandoen.

Eksempel på Dockerfile

La oss si at du har en requirements.txt fil med Python-pakker som under:

backoff==2.0.1
oracledb>=1.4.2
datastory>=0.1.12
google-cloud-bigquery>3.0.0
google-cloud-storage==2.4.0
great-expectations==0.15.34
influxdb==5.3.1

Da kan du med følgende Dockerfile installere disse pakkene når du bygger ditt image:

FROM ghcr.io/navikt/knada-images/jupyter:2023-06-16-738148c-3.10

USER root

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

USER $NB_USER

Lagring av image

Du kan selv velge om du ønsker å lagre imaget ditt i Google Artifact Registry (GAR) eller i Github Container Registry (GHCR). I dette navikt/knada-image-eksempel er det eksempler på hvordan å bygge et docker image og pushe til begge to docker repositories. Begge pipelinene bygger image med samme Dockerfile og requirements.txt.

Når du så har bygget image ditt finner du det igjen ved å:

  • For GAR - Gå til nais management og let opp teamet ditt.
  • For GHCR - Gå til packages og søk på repo navnet ditt.

Lese hemmeligheter fra Google Secret Manager

Du kan lese mer om hemmeligheter under Google Secret Manager.

Restarte server

For manuelt å restarte en Jupyter notebook går man til kontrollpanelet ved å velge File -> Hub Control Panel -> Stop My Server. Etter at serveren er stoppet vil man så kunne trykke Start My Server.

Dersom jupyterhubben din har fryst seg og du ikke har mulighet til å gjøre det over kan du gå direkte til kontroll panelet hvis du går til stien /hub/home i nettleseren

Trafikk fra notebooks

Man må eksplisitt oppgi hvilke hoster man ønsker å snakke med fra notebooks i KNADA. Dette spesifiserer du gjennom knorten.

Tilsvarende som for airflow legger du inn hostnavn og port på formatet hostnavn:port. Dersom man ikke angir port vil vi bruke 443 som standardport. Vi har en controller kjørende i KNADA som vil lage en NetworkPolicy som tillater trafikk ut fra notebooken mot de hostene som legges til. Når notebooken din slås av vil tilgangene bli fjernet.