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.